User manual

RP6 ROBOT SYSTEM - 3. RP6 CONTROL Library
3.1.8. ADCs
Die ADC Kanäle lassen sich mit der schon von der RP6Lib bekannten Funktion:
uint16_t readADC(uint8_t channel)
auslesen. Eine automatische Variante die der Reihe nach die ADC Kanäle im Hinter-
grund ausliest gibt es für das RP6-M32 (noch) nicht.
Die Kanäle sind natürlich anders bezeichnet als in der RP6Lib – folgende Kanäle sind
verfügbar:
ADC_7 --> ADC Kanal 7 – auf dem 10 poligen Wannenstecker „ADC“ verfügbar!
ADC_6 --> ADC Kanal 6 ...
ADC_5
ADC_4
ADC_3
ADC_2 --> ADC Kanal 2
ADC_KEYPAD --> Hier sind die Taster angeschlossen
ADC_MIC --> Und hier das Mikrofon.
3.1.9. I/O Ports
Da auf dem RP6 CONTROL insgesamt 14 freie I/O Ports verfügbar sind, beschreiben
wir hier noch kurz wie man allgemein auf I/O Ports eines AVRs zugreifen kann.
Der ATMEGA32 hat 4 I/O Ports zu je 8 Bit. Jeder Port wird über 3 Register gesteuert.
Ein Register für die „Richtung“ der I/O Pins (DDRx), also ob ein Pin als Eingang oder
Ausgang geschaltet ist, ein Register zum Schreiben (PORTx) und ein Register zum Le-
sen (PINx).
Wenn man einen I/O Pin als Ausgang verwenden will, um z.B. eine LED zu schalten,
muss man das entsprechende Bit im DDRx Register auf 1 setzen.
Beispiel:
DDRC |= IO_PC7; // PC7 ist nun Ausgang
DDRC = IO_PC7 | IO_PC6 | IO_PC5; // PC5, PC6, PC7 sind nun Ausgang,
// alle anderen Pins sind Eingänge!
Dann kann man über das PORTx Register den Ausgang auf high oder low pegel schal-
ten.
Beispiel:
PORTC |= IO_PC7; // High
PORTC &= ~IO_PC7; // Low
Ist ein Bit im DDRx Register 0, so ist der zugehörige Pin als Eingang konfiguriert.
Beispiel:
DDRC &= ~IO_PC6; // PC6 ist nun Eingang
Dann kann man über das PINx Register den Zustand des Pins auslesen, also ob high
oder low Pegel am Pin anliegt.
if(PINC & IO_PC6)
writeString_P("PC6 is HIGH!\n");
else
writeString_P("PC6 is LOW!\n");
- 18 -