PIC-Prozessoren - Input/Output -Interfaces


zurück zu PIC-Grundlagen , PIC-Prozessoren , Elektronik , Homepage


 
Einleitung





I/O-Pins (Ports)
(Detailierte Beschreibung)



Timer
(Detailierte Beschreibung)



RS232-Hardware
(Detailierte Beschreibung)
(RS232 per Softwareemulation)
RS232-Grundlagen
SSP-Bus





IIC-Hardware (I2C)
(Detailierte Beschreibung)
(I2C-per Softwareemulation)

USB-Bus
(Detailierte Beschreibung)


USB-Grundlagen
CAN-Bus




CAN-Grundlagen
ADC-Eingang
(Detailierte Beschreibung)
(Spannungsmessung mit Comparator)

externer DAC
(Detailierte Beschreibung)



Comparator
(Detailierte Beschreibung)



Referenzsspannungsquelle
(Detailierte Beschreibung)



Capure- Eingang /
(Detailierte Beschreibung)



Compare- Ausgang /
(Detailierte Beschreibung)



PWM-Ausgang
(Detailierte Beschreibung)



LCD-Interface





echte Referenzspannung





interner DAC





Temperatursensor





SR-Latch





Signal-Modulator





Kapazitiver Sensor





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:
 
nach oben

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.
nach oben

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.
nach oben

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.
nach oben

(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:
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).


nach oben

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.
nach oben

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.
nach oben

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.
nach oben

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
nach oben

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.


nach oben

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.
nach oben

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.
nach oben

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.
nach oben

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.
 

nach oben

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.

nach oben

LCD-Interface

Einige PICs können "nackte" LCD-Displays ansteuern.
nach oben

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.

nach oben

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.

nach oben

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.

nach oben

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