Hallo, seit kurzer Zeit beschäftige ich mich mit dem MSP430F????, irgendwie stelle ich immerwieder fest, dass die IRS Flags nicht sauber abgearbeitet werden. soweit ich weiß, werden diese Flags von uC verwaltet, dh. ich muss nicht bei jedem Intrrupt den Flag manuel zurück setzten. mache ich irgendwas falsch? taucht dieses Phenomäne bei euch auch? gibt s Tipps oder Ticks? MFG
@ zanzana (Gast) >mache ich irgendwas falsch? Wahrscheinlich fehlt volatile bei der Variablendefinition, siehe Interrupt. MFG Falk
doch volatile ist da, aber was ändert das genau wen es nicht da wäre? An volatile-Variablen werden keine Optimierungen ausgeführt! bei mir scheint es irgendwie ein altes Flag zusein, dass bei Disabelen der ISR nicht gelöcht wird...
zanzana schrieb: > bei mir scheint es irgendwie ein altes Flag zusein, dass bei Disabelen > der ISR nicht gelöcht wird Das Löschen wäre auch schlimm. Flags dürfen nie ohne Grund gelöscht werden, sonst gehen Dir Interrupts verloren! Sie dürfen nur gelöscht werden bei Interrupteintritt oder wenn der Programmierer es ausdrücklich so hinschreibt. Außerdem gibt es oft Situationen, daß eine Interrutpquelle garnicht per Interrupt behandelt wird sondern mit Polling. Z.B. ein einfaches putchar() wartet, bis das vorherige Byte gesendet wurde. Peter
Vielleicht bekommst du mehr Interrupts als du erwartest, d.h. während der Abarbeitung einer ISR kommen bereits neue Interrupts gleicher Sorte rein. Die lösen beim Verlassen der ISR den nächsten Aufruf der ISR aus und das mag so aussehen als ob das Interruptflag nicht gelöscht wurde. Der Klassiker ist hier eine prellende Taste an einer externen Interruptleitung (Entprellung).
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.