ISR() und Interruptflag

Gast #1959170
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
Gast #1959182
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...
#1959241
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
Persönliche Seite #1959248
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).

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren