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