Programmdownload

ACHTUNG! Sobald ein Programmiervorgang abgeschlossen ist, startet das aufgespielte Programm. Sollten die Motoren angesteuert werden ist sicherzustellen, dass der Roboter "aufgebockt" ist und sich die Räder frei drehen können. (Im schlimmsten Fall könnte der Roboter sonst vom Tisch fahren!)

Im Folgenden wird die Programmierung des Roboters beispielhaft beschrieben. Ein kleines Beispielprogramm wird hierzu compiliert und anschließend auf den Roboter übertragen. Beide Arbeitsschritte können auf der Konsole mittels des in der Programmbibliothek mitgelieferten Makefile ausgeführt werden, oder kompfortabler über den grafischen Editor Kate. Dieser ist auf allen Praktikumsrechnern vorinstalliert und bietet Syntax-Highlighting, automatische Einrückungen und einige Makros zur Unterstützung eines schnellen Arbeitsflusses: Mittels der Funktionstaste F12 wird das aktuell bearbeitete Programm compiliert. Shift-F12 überträgt das compilierte Programm an den Roboter. Diese Makro-Aufrufe sind auch über das Menü Extras/Externe Programme zu erreichen.

Zum Programmieren des Roboters wird folgendes Beispielprogramm in den Editor Kate übernommen:

#include <tucbot/tucbot.h>
void leds(void) //Testprozedur fuer LEDs
{
while(1)
{
leds_set(kLedLeft , kLedOn); //linke LED einschalten
leds_set(kLedMiddle , kLedOff); //mittlere LED ausschalten
mdelay(500); //500 ms warten
leds_set(kLedMiddle , kLedOn); //mittlere LED einschalten
leds_set(kLedLeft , kLedOff); //linke LED ausschalten
mdelay(500); //500 ms warten
leds_set(kLedRight , kLedOn); //rechte LED einschalten
leds_set(kLedMiddle , kLedOff); //mittlere LED ausschalten
mdelay(500); //500 ms warten
leds_set(kLedMiddle , kLedOn); //mittlere LED einschalten
leds_set(kLedRight , kLedOff); //rechte LED ausschalten
mdelay(500); //500 ms warten
}
}
int main(void) //Hauptprogramm
{
init_tucbot(0xFF); //Initialisierung (immer erforderlich)
leds();
return (0);
}


Zur Prüfung auf Syntaxfehler wird das Programm zuerst mittels der Taste F12 compiliert. Läuft alles fehlerfrei durch, kann der Roboter eingeschalten und in den Programmiermodus versetzt werden. Die notwendigen Schritte wurden im Abschnitt Bootloader beschrieben. Nachfolgend wird mit der Tastenkombination SHIFT + F12 die Programmierung gestartet. Sollte sich zwischenzeitlich am Quellcode etwas verändert haben, wird zuvor automatisch neu compiliert.

leds_set
void leds_set(eLedMask bitmask, uint8_t bool)
Sets the selected leds on or off.
kLedOn
@ kLedOn
constant (0xFF): turn leds on
Definition: leds.h:63
kLedRight
@ kLedRight
bit mask (0x04): right led
Definition: leds.h:46
kLedLeft
@ kLedLeft
bit mask (0x10): left led
Definition: leds.h:42
kLedMiddle
@ kLedMiddle
bit mask (0x08): middle led
Definition: leds.h:44
kLedOff
@ kLedOff
constant (0x00): turn leds off
Definition: leds.h:61
init_tucbot
void init_tucbot(uint8_t enable_interrupts)
Initiates the TUC-Bot.
mdelay
void mdelay(uint16_t mseconds)
Waits for the given time in milliseconds.