RoboCube:CPIC
aus RoboWiki, der freien Wissensdatenbank
Erweiterungs-Board für den RoboCube.
Inhaltsverzeichnis |
Funktion
Das CPIC-Board (Cube Peripheral Interface Controller) wurde 2005 für das RoboCup in Osaka entwickelt. Es ersetzt das klassische RoboCube:I/O-Board, welches per I2C-Bus (100kBit/sec) an den RoboCube angebunden war. CPIC verwendet den schnelleren SPI-Bus (Serial Peripheral Interface), mit einer Transferrate von 1MBit/sec und einem schlanken Protokoll.
Features
- 24 ADC-Kanäle
- 8 digitale Eingänge (Frontpanel-Taster)
- 8 digitale Ausgänge (Frontpanel-LEDs)
- 400kBit/sec I2C-Interface u.A. zum Auslesen eines Digitalkompasses (CMPS03)
Firmware
Die Firmware des CPIC ist in C implementiert und besteht aus folgenden Softwaremodulen:
- UART-Treiber für Debugging-Zwecke und/oder zur Anbindung eines UART-Gerätes (z.B. GPS-Empfänger, Laserscanner etc.)
- I2C-Treiber
- SPI-Treiber
- ADC-Treiber
- Hauptprogramm, welches zyklisch alle ADC-Kanäle, den Digitalkompass (CMPS03) und Digitaleingänge ausließt, die entprechenden Register updatet und die Digitalausgänge gemäß des DOUT Registers setzt.
Register
Die folgende Tabelle gibt eine Übersicht über die verfügbaren Register auf dem CPIC. Bei der Benutzung des CubeOS-Treibers für den CPIC genügt es die Register-Bezeichner zur Adressierung zu verwenden.
| Adresse | Register-Bezeichnung | Datentyp |
|---|---|---|
| 0x00 | Reserved | Word |
| 0x02 | AVR_DIGITAL | Word |
| 0x02 | AVR_DOUT | Byte |
| 0x03 | AVR_DIN | Byte |
| 0x04 | AVR_ADC | Word |
| 0x04 | AVR_ADC0 | Word |
| 0x06 | AVR_ADC1 | Word |
| 0x08 | AVR_ADC2 | Word |
| 0x0a | AVR_ADC3 | Word |
| 0x0c | AVR_ADC4 | Word |
| 0x0e | AVR_ADC5 | Word |
| 0x10 | AVR_ADC6 | Word |
| 0x12 | AVR_ADC7 | Word |
| 0x14 | AVR_ADC8 | Word |
| 0x16 | AVR_ADC9 | Word |
| 0x18 | AVR_ADC10 | Word |
| 0x1a | AVR_ADC11 | Word |
| 0x1c | AVR_ADC12 | Word |
| 0x1e | AVR_ADC13 | Word |
| 0x20 | AVR_ADC14 | Word |
| 0x22 | AVR_ADC15 | Word |
| 0x24 | AVR_ADC16 | Word |
| 0x26 | AVR_ADC17 | Word |
| 0x28 | AVR_ADC18 | Word |
| 0x2a | AVR_ADC19 | Word |
| 0x2c | AVR_ADC20 | Word |
| 0x2e | AVR_ADC21 | Word |
| 0x30 | AVR_ADC22 | Word |
| 0x32 | AVR_ADC23 | Word |
| 0x34 | AVR_SENS | Word |
| 0x34 | AVR_MAXSENS | Byte |
| 0x35 | AVR_MINSENS | Byte |
| 0x36 | AVR_COMPASS | Word |
| 0x36 | AVR_COMPASS_VALUE | Word |
| 0x36 | AVR_COMPASS_CTRL | Word |
| 0x38 | AVR_I2C | Word |
| 0x38 | AVR_I2C_ADDR | Byte |
| 0x39 | AVR_I2C_DATA | Byte |
| 0x3a | AVR_CSR | Word |
| 0x3a | AVR_CTRL | Byte |
| 0x3b | AVR_STATUS | Byte |
| 0x3c | Reserved | Word |
| 0x3e | AVR_VERSION | Word |
AVR_DIGITAL
Das AVR_DIGITAL Word-Register ist unterteilt in die zwei Byte-Register AVR_DOUT und AVR_DIN.
- AVR_DOUT´
- Schreibzugriff: Setzen des 8bit-Digitalausgangs des CPIC
- Lesezugriff: Auslesen der momentanen Konfiguration des Ausgangs
- AVR_DIN
- Schreibzugriff: Mögliche Überschreibung von eingelesenen Werten am 8bit-Digitaleingang des CPIC
- Lesezugriff: Auslesen der Eingänge
AVR_ADC
- AVR_ADC[0..23]
- Schreibzugriff: Mögliche Überschreibung von gewandelten Werten
- Lesezugriff: Auslesen der gewandelten Werte an den ADC-Eingängen 0 bis 23.
AVR_SENS
- AVR_MAXSENS
- Schreibzugriff: Mögliche Überschreibung von gewandelten Werten
- Lesezugriff: Auslesen des Kanals mit dem Maximalwert der gewandelten Werte an den ADC-Eingängen 0 bis 23.
- AVR_MINSENS
- Schreibzugriff: Mögliche Überschreibung von gewandelten Werten
- Lesezugriff: Auslesen des Kanals mit dem Minimalwert der gewandelten Werte an den ADC-Eingängen 0 bis 23.
AVR_COMPASS
- AVR_COMPASS_VALUE
- Schreibzugriff: Mögliche Überschreibung von gewandelten Werten
- Lesezugriff: Auslesen der momentanen Kompassorientierung in Werten von 0 bis 35999
- AVR_COMPASS_CONTROL
- Schreibzugriff: Konfiguration des Kompasses
- Lesezugriff: Auslesen der momentanen Konfiguration
AVR_I2C
AVR_CSR
AVR_VERSION
Protokoll
Das Protokoll des CPIC basiert auf einer Art Remote-Register-Zugriff. Ein Transfer besteht gewöhnlich aus einem Transer-Byte und einem Daten Byte oder Word. Das erste Byte enthält die Information, ob es sich über einen Lese- oder Schreibzugriff auf ein Byte- oder Word-Register handelt. Das Addressierungs-Byte ist also wiefolgt aufgebaut:
| R/W | Byte/Word | Register |
- R/W (1 bit): 0 = Lesen, 1 = Schreiben
- Byte/Word (1bit): 0 = Byte, 1 = Word
- Register (6 bit): Register Adresse
Entsprechend des Byte/Word-Bits folgt ein Datenbyte bzw. -word für einen Schreibzugriff. Zum Auslesen eines Registers können nach der Adressierung ein beliebiges Byte/Word ungleich 0 an den CPIC geschickt werden. Nullbytes werden zur Synchronisation Benutzt. Daher ist auch ein Lesezugriff auf das Byte-Register 0 unmöglich, da sich als Adressierungs-Byte ein Nullbyte ergeben würde.
Elektronische Komponenten
- Atmel AVR ATmega32, 8bit RISC MCU
- Analog Multiplexer
- AMP MicroMaTch Konnektoren
