Arexx RP6 V2 Build your own robot kit RP6 V2 Manuale Utente
Codici prodotto
RP6 V2
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.
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.
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.
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,
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
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
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
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
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
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
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
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
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.
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-
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 -