Hi, mache gerade meine ersten Gehversuche mit µC mit dem msp430 Launchpad. Wollte jetzt eine LED nicht über Delays sondern Interrupt-gesteuert (Timer-Overflow) zum blinken bringen. Eben nur zu Übung. Im Single-Step Modus und über Breakpoints scheint es ja zu funktionieren. Wenn ich aber in den Run-Modus gehe, scheint er nur noch ein mal in die ISR zu springen und dann bleibt die LED immer an. Wie kann das sein? Die einzelschritte im Debugmodus müssen doch die selben sein wie wenn man das Programm richtig laufen lässt? Wäre euch dankbar, wenn ihr euch kurz mein kleines Codebeispiel ansehen könntet. Ich arbeite mit der IAR Workbench, die, nachdem ich im Run-Modus versuche, das Programm mit Break wieder anzuhalten, immerzu abstürzt. Echt nervig. Gruß Marco
Ok, ich muss wohl in der ISR noch das Pending-Bit löschen. Dann gehts auch. Schön und gut, trozdem verstehe ich jetzt nicht wieso das im single-step Modus automatisch passiert. Das darf doch normalerweise nicht sein, oder? Wie soll man den so Fehler aufspüren? Da ist doch der Debug-Modus irgendwie sinnlos.
Da herrscht ein Durcheinander bei den Taktquellen. Probier erst nur den DCO. Wie das läuft ist im Family User Guide sehr gut beschrieben. Damit was läuft, kann man sich ein Demo laden und abwandeln. http://www.ti.com/mcu/docs/litabsmultiplefilelist.tsp?sectionId=96&tabId=1502&literatureNumber=slaa513&docCategoryId=1&familyId=1937
Also ich glaube der VLO läuft schon wie ich ihn eingestellt habe. Das war glaub ich nicht das Problem. Hab ja zuvor schon LED's blinken lassen, aber eben Nicht-interrupt-gesteuert, sondern mit delays.
Ok, ist ja gut. Ist nur nicht ganz übersichtlicht so. Wenn der TimerA im UP-Mode läuft, stehen zwei Interrupt Quellen zur Wahl: 'The TACCR0 CCIFG interrupt flag is set when the timer counts to the TACCR0 value. The TAIFG interrupt flag is set when the timer counts from TACCR0 to zero.' Beim TAIFG handelt es sich um das Flag für den shared interrupt. Und für den gilt: 'Any access, read or write, of the TAIV register automatically resets the highest pending interrupt flag.' Lies oder schreib das TAIV. Oder besser, nimm den anderen interrupt vector und fertig.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.