Arexx RP6 V2 Build your own robot kit RP6 V2 Manuale Utente

Codici prodotto
RP6 V2
Pagina di 141
RP6 ROBOT SYSTEM -  4. Programmierung des RP6
Sonst tut das Programm nichts – ein ausführlicheres Beispiel bei dem man so gut wie 
alles auf dem Roboter steuern kann gibt es wie schon gesagt auf der CD. Das hier de-
monstriert nur das Funktionsprinzip.
Standardmäßig gibt es 16 beschreibbare und 48 lesbare Register. Wer mehr oder we-
niger benötigt, kann diese Werte in der Datei RP6I2CSlaveTWI.h der RP6Library an-
passen.
4.6.11.2. I²C Master
Im Master Modus kann man mit dem TWI Modul des MEGA32 andere Geräte/Mikro-
controller/Sensoren über den I²C Bus steuern. 
void I2CTWI_initMaster(FREQ)
Diese Funktion initialisiert das TWI Modul als Master. Für den Master Modus braucht 
man natürlich keine Adresse anzugeben – aber man muss eine Frequenz festlegen, 
mit der das TWI Modul die Daten senden soll. Über den Parameter FREQ kann die Fre-
quenz in kHz eingestellt werden. Meistens verwendet man 100kHz, also tragen Sie 
hier am besten immer eine 100 ein. Wenn es etwas schneller gehen soll, kann man 
auch bis zu 400 eintragen. Mehr als 400 sollten Sie hier nicht eintragen – das ist die 
maximal spezifizierte Geschwindigkeit des TWI Moduls.  
Das TWI Modul des MEGA32 auf dem Mainboard kann allerdings im  
Master   Modus   nach   Atmel   Spezifikation   nur   bis   etwa   220kBit/s 
verwendet   werden   (s.   Datenblatt)!   Der   Controller   wird   aus 
Stromspargründen   mit   8MHz   getaktet,   für   400kBit/s   wären   aber 
mehr als 14.4MHz Takt nötig. Bei unter 14.4MHz kann es ein leicht 
von   den   Spezifikationen   abweichendes   Timing   geben.   Was   für   die 
meisten I²C Geräte nicht besonders wichtig ist. Für den Slave Modus 
spielt das ohnehin keine Rolle, hier sind 400kBit/s problemlos mög-
lich!  Für alle normalen Anwendungen sind die garantiert möglichen 
220kBit/s auch mehr als schnell genug. Wenn höhere Geschwindig-
keiten wirklich dringend benötigt werden, kann das RP6 CONTROL 
M32 Erweiterungsmodul verwendet werden – es kann die maximalen  
400kBit/s im Master Modus nutzen. Oder Sie probieren einfach, ob 
die Geräte die auf Ihrem Roboter am Bus angeschlossen sind, mit  
dem vom MEGA32 erzeugten Timing problemlos klar kommen. 
Senden von Daten
Es gibt mehrere Funktionen um Daten über den I²C Bus zu übertragen. Im Prinzip 
funktionieren alle sehr ähnlich, sie unterscheiden sich nur in der Anzahl der zu über-
tragenen Bytes. 
void I2CTWI_transmitByte(uint8_t adr, uint8_t data)
Überträgt ein einzelnes Byte an die angegebene Adresse. 
void I2CTWI_transmit2Bytes(uint8_t adr, uint8_t data1, uint8_t data2)
Überträgt zwei Bytes and die angegebene Adresse. 
- 109 -