Ich dachte nur, weil grad' der interessante Teil gefehlt hat
Also, an der Variablen "Zeittick" liegt es jedenfalls nicht
Sie ist auf der addresse 0x0064, und genau da greifen sowohl die ISR's als auch dein Main-Vergleich hin.
Das kann man also vergessen. Beide ISR's zählen am Zeitticker ?Code:// Eine nichtunterbrechbare Interrupt-Service-Routine SIGNAL (TIM1_COMPA_vect) { Zeittick = Zeittick + 1; 62: 80 91 64 00 lds r24, 0x0064 66: 8f 5f subi r24, 0xFF ; 255 68: 80 93 64 00 sts 0x0064, r24 } SIGNAL (TIM1_OVF_vect) { Zeittick = Zeittick + 1; 86: 80 91 64 00 lds r24, 0x0064 8a: 8f 5f subi r24, 0xFF ; 255 8c: 80 93 64 00 sts 0x0064, r24 } int main (void) { while(1) { if (Zeittick >= 3) f8: 80 91 64 00 lds r24, 0x0064 fc: 83 30 cpi r24, 0x03 ; 3 fe: e0 f3 brcs .-8 ; 0xf8 { PORTB |= (1 << PB3); // setzt Bit 3 an PortB auf 1 100: c3 9a sbi 0x18, 3 ; 24 102: fa cf rjmp .-12 ; 0xf8 <__stack+0x19> } } }
Jetzt muß man das Timer u. Interrupt Setup auf Richtigkeit checken, denn wenn die laufen, MUSS die main-routine irgendwann >=3 erkennen.







Zitieren

Lesezeichen