Lurchi
04.05.2009, 12:19
Hallo,
ich habe die RP6 Base Lib in C++ portiert. IDE ist Eclipse. Das ganze kompiliert und linkt. Auch ein erster Funktionstest mit den LEDs ist erfolgreich. Soweit ist alles gut.
Grundlage ist die aktuelle RP6 Lib, deren Funktionen ich in einem ersten Schritt nur in Klassen gruppiert habe. Die Funktion an sich blieb erhalten - also sollte grober unfug vermieden sein.
Leider habe ich wenig Schwierigkeiten mit den ISR Routinen. Offensichtlich steigt nach ca. 100ms (1000 Durchläufen der ISR) irgendwas aus.
Weiss jemand wie die ISR Routinen genau arbeiten? Was passiert, wenn eine ISR ihre Aktionen innerhalb der konfigurierten Timerinterruptzeit von 99us nicht beendet hat? Wird die ISR trotzdem nochmal aufgerufen?
Gibt es im winavr mutexe implementierungen oder kann ich "gefahrlos" mit globalen (volatilen) flags syncronisieren?
Wie kann man denn sowas sinvoll debuggen - den gdb kann ich ja wohl schlecht auf dem RP6 zum laufen bringen und den output via uart auf ein terminal geben - oder etwa doch?
Muss ich evtl. dem Compiler noch ein spezielle switches oder defines mitgeben?
Grüße
Lurchi
ich habe die RP6 Base Lib in C++ portiert. IDE ist Eclipse. Das ganze kompiliert und linkt. Auch ein erster Funktionstest mit den LEDs ist erfolgreich. Soweit ist alles gut.
Grundlage ist die aktuelle RP6 Lib, deren Funktionen ich in einem ersten Schritt nur in Klassen gruppiert habe. Die Funktion an sich blieb erhalten - also sollte grober unfug vermieden sein.
Leider habe ich wenig Schwierigkeiten mit den ISR Routinen. Offensichtlich steigt nach ca. 100ms (1000 Durchläufen der ISR) irgendwas aus.
Weiss jemand wie die ISR Routinen genau arbeiten? Was passiert, wenn eine ISR ihre Aktionen innerhalb der konfigurierten Timerinterruptzeit von 99us nicht beendet hat? Wird die ISR trotzdem nochmal aufgerufen?
Gibt es im winavr mutexe implementierungen oder kann ich "gefahrlos" mit globalen (volatilen) flags syncronisieren?
Wie kann man denn sowas sinvoll debuggen - den gdb kann ich ja wohl schlecht auf dem RP6 zum laufen bringen und den output via uart auf ein terminal geben - oder etwa doch?
Muss ich evtl. dem Compiler noch ein spezielle switches oder defines mitgeben?
Grüße
Lurchi