PIC-Prozessoren -
Input/Output -Interfaces
zurück zu
PIC-Grundlagen , PIC-Prozessoren , Elektronik , Homepage
multiplexe
Nutzung der Pins
zurück:
zu PIC-Prozessoren
zurück:
zu PIC-Grundlagen
Einleitung
Die meisten
PICs besitzen eine Reihe spezieller Interfaces, deren Hardware
Input- und Outputfunktionen erleichtert. Dazu zählen:
Im Folgenden wird die
Nutzung dieser Schnittstellen beschrieben.
Wärend die
oben aufgelistete Hardware in den meisten (auch älteren) PICs
enthalten ist, gibt es noch Interfaces, die sich nur in wenigen PICs
finden lassen:
I/O-Pins (Ports)
Die einfachste I/O-Funktion des PIC
verkörpern die Ports (PortA ... PortE). Sie stellen jeweils bis zu
8 digitale Leitungen bereit, die als digitaler Eingang oder digitaler
Ausgang funktionieren können. An
solche Pins lassen sich z.B. Tasten oder Leuchtdioden anschließen.
Timer (und
Impulszähler)
Der Name Timer suggeriert, dass es sich um
eine Art Stopp-Uhr handelt, mit der sich zeitliche Abläufe steuern
lassen. Das ist richtig, aber außerdem eignen sich die Timer
eines PIC auch zum Zählen von Impulsen, die den PIC über eine
Pin erreichen. Außerdem werden Timer für die Funktionen des CCP-Moduls benötigt.
RS232 (USART)
Die serielle Schnittstelle USART (z.B. des
PIC16F87x oder 16F62x) ist eine universelle Schnittstelle für
asyncrone und syncrone Datenübertragung (USART). Am
interessantesten für den Baster ist die normale asyncrone
RS232-Betriebsart der USART, mit der sich der PIC z.B. an die
COM-Schnittstellen eines Personalcomputers anschließen lässt.
(M)SSP-Bus
Während bei
der asynchronen USART (pro Richtung) nur ein Draht für die
Datenübertragung verwendet wird, sind es bei der synchronen
seriellen Übertragung zwei Drähte:
- Datenleitung und
- Taktleitung
Ein Master
erzeugt auf der Taktleitung einen Übertragungstakt, mit dem auf
der Datenleitung die Bits seriell (und synchron zum Takt) zwischen
Master und Slave übertragen werden. Solche SSP-Schnittstellen
werden oft zur direkten Verbindung zwischen Schaltkreisen eingesetzt.
Es gibt sie in verschiedenen "Geschmacksrichtungen". Einige sind
high-aktiv andere low-aktiv, einige übertragen mit der steigenden
Taktflanke andere mit der fallenden.
Das MSSP-Interface eines PICs ist flexibel einstellbar, und beherrscht
verschiedenste "Dialekte".
Eine Variante des SSP-Busses ist übrigens IIC (I2C).
IIC (I2C)-Bus
Überall,
wo
höchste
Geschwindigkeit
kein
wichtiges
Argument
ist,
erfreut
sich
der
serielle-Zweidrahtbus I2C großer Beliebtheit. EEPROMS, ADC sowie
viele ICs für Audio- und Videogeräte lassen sich mit diesem
Bus Steuern.
Die bei vielen PICs enthaltene
SSP-Schnittstelle lässt sich als I2C-Interface benutzen.
nach oben
USB-Bus
Das ist ein schneller, serieller Bus, der
wohl jedem aus der PC-Technik bekannt ist.
Während die PIC16C-Serie nur USB1.1
(low-speed 1,5 Mb/s) unterstützte gibt es beim PIC18Fxxxx nur
USB2.0 mit full-speed (12 Mb/s) (also nicht mit high-speed).
Da die 14-Bit-Kern-PICs (PIC16Cxxx) mit
USB1.1 keinen Flash-Programmspeicher besitzen, sind sie für mich
als Bastler uninteressant. Die 16-Bit-Kern-PICs (PIC18Fxxxx) mit USB
sind da schon wichtiger.
CAN-Bus
Controller Area Network: Das ist ein
schneller serieller Bus zum Datenaustausch zwischen Geräten.
Dieser Bus wird vor allem in der KFZ-Technik eingesetzt, da er sehr
störfest ist.
ADC-Eingang
Mit den analogen ADC-Eingängen der
meisten PICs lassen sich positive Gleichspannungen mit einer
Auflösung von 10-Bit messen (einige Typen haben 8- oder
12-Bit-ADCs). Das entspricht bei
einem Messbereich von 5V immerhin einer Genauigkeit von bis zu 5
Millivolt.
externer DAC
Mit einem DAC lässt sich ein
Zahlenwert in eine proportionale Spannung wandeln. Leider haben nur
wenige PICs eine integrierte DAC-Hardware. Ein DAC lässt sich aber
leicht extern nachrüsten
interner DAC
Einige PICs haben ein sogenanntes "Digital-To-Analog
Converter (DAC) Module"
also einen internen DAC. Dabei handelt es sich um einen.
programmierbaren Widerstandsspannungsteiler mit 32-Spannungsabgriffen.
Dieser DAC ähnelt damit etwas der Referenzspannungsquelle,
die aber nur 16-Spannungsabgriffe hat. Der DAC-Spannungsteiler
lässt sich mit der PIC-Betriebsspannung oder auch mit einer Referenzspannung speisen.
Wie auch immer, mit einer Auflösung von nur 5 Bits, kann dieser
DAC nur einfachsten Anforderungen genügen. Für die meisten
Anwendungen wird man einen externen DAC
anschließen müssen.
analoger Komparator
Ein Komparator ist eine
Spannungsvergleicherschaltung mit 2 analogen Eingängen und einem
digitalen Ausgang. Damit lässt sich überwachen, ob eine
ananoge Eingangsspannung über eine Vergleichsspannung ansteigt
oder unter sie absinkt. Die Vergleichsspannung wird entweder auch von
außen eingespeist, oder mit einer internen Referenzspannungsquelle erzeugt.
Referenzspannungsquelle
Diejenigen PIC-Typen, die mit Komperatoren
ausgerüstet sind, haben auch einen steuerbaren Spannungsteiler als
Referenzspannungsquelle. Die Spannung lässt sich an
Komperatoreingänge legen oder auch über ein Pin ausgeben. Die
Ausgangsspannung dieser "Referenzspannungsquelle" hängt von der
Betriebsspannung des PIC ab.
echte
Referenzspannungsquelle (FVR)
Oben wurde
bereits die sogenannte "Referenzspannungsquelle" erwähnt, die
in vielen PICs enthalten ist, aber leider nur eine von der
Betriebsspannung abhängige Spannung erzeugt.
Es gibt aber in
einigen wenigen PICs (z.B. PIC16F1826/1827/151x) auch eine echte
Referenzspannungsquelle.
Diese Fixed
Voltage Reference (FVR) istv eine stabile und von der
PIC-Betriebsspannung unabhängige Referenzspannung, die sich
zwischen 1.024V, 2.048V oder 4.096V umschalten lässt. Sie
lässt sich als Referenzspannung für den ADC, den Comparator
oder den internen DAC verwenden. Die Abweichung von den angegebenen
Sollspannungen beträgt höchstens -8..+6%. Das ist nicht
besonders beeindruckend, ersetzt aber auf jeden Fall eine Z-Diode.
Einige PICs (z.B. PIC16F88x) haben eine vereinfachte Form der FVR, die
eine feste Spannung von 0,6V abgibt. Diese ist zu klein, um als
positive Referenzspannung für den ADC dienen zu können, man
kann sie höchstens mit dem ADC messen, um dann einen Korrekturwert
für andere zu messende Spannungen zu errechnen.
Temperatursensor
Einige wenige
moderne PICs haben einen internen Temperatursensor (z.B.
PIC16F151x/18xx/19xx), der sich im Bereich von -40°C und +85°C
einsetzen lässt. (Der Sensor ist im FVR integriert,
er dürfte also in allen PICs mit FVR enthalten sein.)
Es handelt sich
dabei um die Reihenschaltung von wahlweise 2 oder 4 Dioden, deren
Spannungsabfall temperaturabhängig ist. Dieser wird durch den ADC
gemessen. Der Spannungsabfall jeder Diode beträgt bei -40°C etwa 0.66V und sinkt
bei +85°C auf etwa 0.5V. Die
erreichbare Auflösung beträgt etwa 0.3 K, es ist aber eine
Kalibrierung nötig, wenn die Messung brauchbar sein soll. Die
Sensoren streuen von PIC zu PIC, und die Kennlinie ist nicht linear.
(siehe Dokument AN1333). Der erreichbare Messfehler über den
gesamten Temperaturbereich liegt bei 10 K. Wenn man sich auf einen
kleineren Bereich (z.B. 20°C und 60°C) beschränkt,
kann man ihn auf etwa 3 K drücken.
Capture /
Compare / PWM (CCP)
Capture, Compare und PWM werden mit der
selben Hardware realisiert, schließen sich also gegenseitig aus.
Einige PICs (z.B. PIC16F87x) haben aber jeweils 2
Capture/Compare/PWM-Module (CCP1, CCP2). Dadurch kann ein Modul im
Capture- oder Compare- Mode laufen, währen das andere Modul im
PWM-Mode ist.
Durch Capture und Compare wird
außerdem der Timer1
blockiert, während PWM den Timer2
benötigt.
Capture
Mit dem Capture-Mode lässt sich der
Zeitpunkt genau bestimmen, zu dem ein Impuls am Port RC2 (RC1)
eintrifft.
Compare
Mit dem Compare-Mode lassen sich am Port
RC2 (RC1) High-Low oder Low-High Flanken mit hoher zeitlicher
Präzision erzeugen
PWM
Der PWM-Ausgang ermöglicht das
einfache Erzeugen von Impulsen mit einem einstellbaren
Tastverhältnis. Damit lassen sich z.B. Schalttransitoren von
Transvertern ansteuern.
LCD-Interface
Einige PICs
können "nackte" LCD-Displays ansteuern.
SR-Latch
Beim SR-Latch
handelt es sich um ein einfaches RS-Flipflop mit einer großen
Zahl auswählbarer Setz- und Rücksetzeingänge.
Data Signal Modulator
Einige PICs
(z.B. PIC16F1826/1827) haben einen einfachen Bitstrom-Modulator (DSM).
Er erlaubt es 1-Bit-Signale aus verschiedenen Quellen miteinander zu
"modulieren", oder zwischen zwei Signalströmen mit Hilfe eines
dritten Signals umzuschalten. Die Modulation ist dabei eine einfache
UND-Verknüpfung der beiden Bits aus den beiden Signalquellen.
Mögliche
Eingänge sind IO-Pins, CCPs, Comparatorausgänge, MSSP-Ausgang
oder EUSART-Ausgang. Damit lässt sich dann z.B. der Ausgang eines
seriellen Interfaces mit einer Frequenzumtastung modulieren.
Kapazitiver Senor
Einige PICs (z.B.
PIC16F1826/1827) unterstützen
kapazitive Berührungstasten. Das sind Sensorflächen, die mit
dem Finger angetippt werden können und als Tasten dienen.
Prinzipiell handelt es sich dabei um leitende Flächen, die aber
auf der Oberfläche eine Isolierschicht tragen. Der Finger kommt
also nie direkt in Kontakt mit dem elektrischen Kontakt, sondern wirkt
nur über seine Kapazität auf ihn ein.
Kernstück
des Senors ist ein Oszillator. Dieser wird mit Hilfe eines Multiplexers
an eine der vorhandenen Sensorflächen angeschlossen. Der auf dem
Sensor aufliegende Finger bewirkt eine Verstimmung des Oszillators. Der
Oszillatorausgang kann mit dem Timer0 oder Timer1 verbunden werden.
Dadurch lässt sich die Oszillatorfrequenz messen und entscheiden,
ob ein Finger auf dem Sensor liegt oder nicht. Je nach Anzahl der
Eingänge des Multiplexers unterstützt so ein PIC eine
unterschiedliche Tastenzahl.
nach oben
Multiplexe
Nutzung der Pins
Wenn man sich mal die Pins eines PIC
anschaut, so findet man spezielle Pins für Masse (Vss),
Betriebsspannung (Vdd), den Taktgenerator (OSC1 & OSC2), Reset
(MCLR). Alle anderen Pins gehören zu den Ports A..E (je nach
Größe des PIC) und haben digitale Input/Output-Funktionen.
(In einigen PICs lassen sich auch die MCLR- und OSC-Pins als digitale
I/O-Pins nutzen.)
Wo sind denn all die anderen analogen
und digitalen Interfaces angeschlossen???
Sie verwenden die gleichen Pins, wie die
digitalen Ports. Viele Pins haben also multiple Funktionen. Wie
verhindert man, dass sich die Interfaces nicht in die Quere kommen?
Input / Output
Auch bei den speziellen Interfaces gibt es
Interfaces mit Ausgängen (RS232-TX, Compare, PWM) und
Eingängen (Timer, ADC, Komparator, Capture). Ob ein Pin als
Eingang oder Ausgang funktioniert, wird immer durch das zugehörige
TRIS-Bit gesteuert, dessen Funktion im
Zusammenhang mit den digitalen I/O-Pins erläutert wurde. Wenn ein
Pin z.B. als ADC-Eingang benutzt werden soll, so muss das
zugehörige TRIS-Bit unbedingt auf '1' gesetzt werden. Wird das
vergessen, so funktioniert das Pin zwar immer noch als ADC-Eingang,
allerdings ist auch der Ausgangstreiber des Pins aktiv und zieht das
Pin auf +5V bzw 0V. Der ADC könnte also nur die Höhe der
digitalen Pegel ausmessen, was wenig sinnvoll ist.
verschiedene Input-Funktionen an
einem Pin
Sind verschiedene digitale Eingänge
an ein Pin angeschlossen (z.B. der Timer-Eingang und der digitale
Port-Eingang) so behindern sie sich nicht gegenseitig. Beide Funktionen
können nebeneinander benutzt werden, eine Umschaltung ist nicht
erforderlich und auch nicht möglich.
Etwas anders ist das, wenn auch eine
analoge Eingangsfunktion (ADC-Eingang, Komparator-Eingang) am selben
Pin genutzt werden soll, wie das z.B. beim PortA oft der Fall ist. Dann
ist es nämlich normal, dass am Pin über längere Zeit
analoge Spannungen anliegen, die zwischen exaktem High- und Low-Pegel
liegen. Da das zu einer erhöhten Stromaufnahme der giditalen
Eingangsstufe führen könnte, wird die digitale Eingangsstufe
abgeschaltet, wenn eine analoge Eingangsfunktion aktiviert wurde. Wenn
man nun z.B. das dem Pin zugeordnete I/O-Port-Pin digital
ausliest, bekommt man immer '0', auch wenn am Pin 5V anliegen.
Die Umschaltung auf 'analoge
Eingangsfunktion' wird durch Steuerbits aktiviert, die in den
Steuerregistern (SFR) der analogen Interfaces (ADC,
Komparator) enthalten sind. Nach
einem Reset sind die ADC- und Komparator-Eingänge auf 'analog'
eingestellt! (Analogfalle)
verschiedene Output-Funktionen an
einem Pin
Einige Interfaces wollen ein Pin als
Output benutzen (RS232-TX, PWM). Da das gleiche Pin auch zu einem
I/O-Port gehört, der vielleicht zur gleichen Zeit einen anderen
Pegel auf das gleiche Pin legen will, ist hier ein Umschalter
notwendig. Der Umschalter wird jeweils von einem Steuerbit
umgeschaltet, das in den Steuerregistern (SFR) der speziellen
Interfaces enthalten ist. Nach einem Reset sind die Umschalter auf die
normalen I/O-Ports geschaltet, aber da alle TRIS-Bits gesetzt sind,
sind ohnehin alle Pins als Eingang initialisiert.
zurück:
zu PIC-Prozessoren
zurück:
zu PIC-Grundlagen
zurück zu
PIC-Grundlagen , PIC-Prozessoren , Elektronik , Homepage
Autor: sprut
erstellt: 03.07.2001
letzte Änderung: 29.03.2010