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.


Registertabelle
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


Schaltungsschema

'Persönliche Werkzeuge