|
Ansteuerung von Ports durch AVISE-FORTH (AVISE4.3) |
Umschalten auf Ein- oder Ausgabe eines Ports:
Ausgabe von Daten
Wenn auf Ausgabe geschaltet mittels $ FF C WDDR ( FF(16) = 1111 1111 (2) ) oder auch nach $ 7F C WDDR (s. oben):
$ F C WPORT Schaltet von den 8 bzw. 7 Leitungen von Port C die Leitungen 0, 1, 2, 3 auf H-Potenzial ( 5 V ) ( F(16) = 0000 1111 (2) )
Wenn auf Eingabe geschaltet mittels $ 0 C WDDR ( 0(16) = 0000 0000(2) ) oder auch nach $ 7F C WDDR (s. oben):
C7 RIO . Liest von Leitung 7 des Ports C den Zustand ab und druckt ihn als Wahrheitswert 0 oder FFFF (Bit gelöscht / Bit gesetzt ? ) aus
7 AIN . Spannungsmessung an Port A7 (nur Port A)
Wenn auf Eingabe geschaltet mittels $ 0 C WDDR ( 0(16) = 0000 0000(2) ) :
C RPIN . Liest Port C aus (1 Byte), legt das Ergebnis auf den Stack und druckt es aus (sendet an Terminalprogramm)
Hinweis:
Gebraucht man AIN ohne weitere Maßnahmen, d.h. mit zugeschaltetem PULLUP-Widerstand, kann man sehr einfach Spannungsabfälle an Widerständen (z.B. Fotowiderständen messen, die zwischen dem Portpin Ax (x = 0, ... 7) und Masse angeschlossen sind. So ist AIN nicht geeignet, um externe Spannungen zu messen. Im Normalzustand sind innere Pullup-Widerstände des Mikrocontrollers zugeschaltet. (Größenordnung 50 kOhm).
Will man externe Spannungen messen, muss man diese Pullup-Widerstände abschalten. Beispiel:
externe Spannungsmessung über Port A7
$ 7F A WDDR // Pin7 auf Eingang schalten, alle anderen Pins von Port A auf Ausgang (hier belanglos) ( 7F(16) = 0111 1111 (2) )
0 A WPORT // bei PIN 7 von Port A wird Pullup-Widerstand abgeschaltet, von Pin 0 ,... 6 wird 0 ausgegeben (hier belanglos). Das geht auch einfacher mit
$ A7 IZ
Mit 7 AIN . erhält man jetzt die extern an Port A7 angelegte Spannung.
Weitere Informationen zur Differenzspannungsmessung mit programmierbarer Verstärkung beim ATMEGA32 finden Sie hier.
(zuletzt aktualisiert 2013)