Forum: Mikrocontroller und Digitale Elektronik ISR() und Interruptflag


von zanzana (Gast)


Lesenswert?

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

von Falk B. (falk)


Lesenswert?

@  zanzana (Gast)

>mache ich irgendwas falsch?

Wahrscheinlich fehlt volatile bei der Variablendefinition, siehe 
Interrupt.

MFG
Falk

von zanzana (Gast)


Lesenswert?

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...

von Peter D. (peda)


Lesenswert?

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

von Stefan B. (stefan) Benutzerseite


Lesenswert?

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
Noch kein Account? Hier anmelden.