PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : UINT32 Variablen in verschiedenen ISR ändern



Bumbum
27.03.2014, 18:40
Hallo,

ich habe mir gerade ein Problem überlegt und bin mir noch nicht sicher, ob es tatsächlich eines ist. Angenommen ich habe eine unsigned int Variable, die größer als 8 Bit ist. (z.B. 32 Bit) Wenn ich diese in der INT0 erhöhe und in der INT1 verrringere könnte es doch zu Problemen kommen, wenn in der einen ISR noch am Überlauf gerechnet wird und währenddessen die zweite ISR kommt?

Sehe ich das richtig, oder arbeitet ein 8 Bit AVR die ISR nacheinander ab?

Oder würde es z.B. wie folgt genügen das Problem manuell zu umgehen:



ISR Int0 (void)
{
cli ();
Variable++;
sei ();
}


Viele Grüße
Andreas

markusj
27.03.2014, 19:23
arbeitet ein 8 Bit AVR die ISR nacheinander ab?

Ja. Sofern du Interrupts nicht explizit innerhalb einer ISR wieder freischaltest, kann eine ISR nicht durch eine andere ISR unterbrochen werden.

mfG
Markus