Sorry, das habe ich vergessen zu erwähnen, aber ich hatte meine Projekte in Eclipse umgestellt auf ATmega32. Damit ich nicht irgend einen ominösen Schalter vergessen habe hab ich aber noch mal ein neues Projekt erstellt, und ein Minimalbeispiel zusammengestellt.
Mein Beispiel schaut volgendermaßen aus:
Code:
//nibobee standard
#include <nibobee/iodefs.h>
#include <nibobee/led.h>
#include <nibobee/delay.h>
#include <nibobee/line.h>
#include <nibobee/motpwm.h>
#include <nibobee/odometry.h>
//bgx1
#include <nibobee/i2cmaster.h>
#include <nibobee/bgx1.h>
int main(){
led_init();
led_set(0, 1);
// initialisieren
i2c_init();
line_init();
motpwm_init();
odometry_init();
led_set(1, 1);
// while(!bgx1_init());
bgx1_init();
led_set(2, 1);
bgx1_termClear();
bgx1_termGoto(0,1);
bgx1_termPrint("hallo welt");
led_set(3, 1);
}
Der code wird ohne Fehlermeldungen für den ATmega32 compiliert. Was sollte passieren?
nachdem die LEDs initialisiert sind (die funktionieren ja immerhin schon mal) wird LED0 angesteuert. Nach dem initialisieren von I2C, Liniensensoren und Odometry wird LED1 angesteuert. Danach wird das Modul zur kommunikation mit dem gbx1 initialisiert und LED2 wird angesteuert. Danach wird dem gbx1 ein ``hallo welt`` per I2C gesendet und LED3 wird eingeschaltet.
Was pasiert? LED0 und LED1 werden sauber angesteuert. Danach bleibt das Programm hängen. kommentiere ich den ``bgx1``-Teil aus läuft mein Programm durch (alle 4 LEDs leuchten)
So wie es ausschaut sind die Routinen für das gbx1- Modul das Problem. Zu dumm nur das der Code dafür kein bisschen kommentiert ist, da habe ich nicht die geringste Lust drauf mich durchzuwühlen. Ich werde morgen erst mal versuchen die Quellen in mein Projekt mit einzubinden und komplett zu Kompilieren - ich glaube zwar nicht das mir das helfen wird, aber was anderes fällt mir momentan nicht ein.
Weitere Vorschläge? So langsam bin ich ratlos...
waschtl
Lesezeichen