Hallo Zusammen,
ich habe da mal eine generelle Frage,
nehmen wir an ich deklariere mir eine eine globale variable als
unsigned int die heißt timeout. Nun läuft in meinen AVR programm ein
genereller Softwaretime
1 | ISR (TIM1_OVF_vect)
|
2 | {
|
3 | TCNT0=0x67; // Timer für 1 msec vorsetzen
|
4 |
|
5 | SEI();
|
6 |
|
7 | if(timeout > 0) // Erhöhe Software-Clock-Zähler,
|
8 | {
|
9 | timeout--; // solange Höchstwert nicht erreicht ist
|
10 | }
|
11 |
|
12 | }
|
Im Main setzt ich jetzt dentimeout wert aof sagen wir 300
und wart in einer while schleife bis der Wert null ist. Es
läuft noch ein weiterer interrupt in der Maschine der ist nicht
unterbrechbar. Jetzt meine Frage, ein schreiben einer 16Bit Variable
passiert nicht in einem prozessor zyklus, kann es bei der konstellation
zu falsch interpretaionen kommen des 16 bit wertes kommen? Main oder
interrupt. muss ich dieses bei dem zugriff sperren? Wenn ja wie mach ich
das in einer Warteposition
Gruß
Detlev
Danke