Moin, habe ich das richtig verstanden? (Timer0, 4MHz): TCCR0 |= (1<<CS00)|(1<<CS02); // Enabled den Timer und setzt Prescaler auf 1024 TIMSK |= (1<<TOIE0); // Enabled den Interrupt für den Timeroverflow sei(); // Interrupts gloabel Enablen Heißt so viel wie der Timer wird gestartet und es treten (4000000 / 1024) / 256 = 15.25 Overflows auf in einer Sekunde. Bei jedem Overflow wird das TOV0 Flag im TIVR Register gesetzt und ein Timer-Overflow-Interrupt angestoßen. So, wenn das jetzt soweit richtig ist. Wie kann ich dann diesen Interrupt abfangen? Ich hab was von ISR gelesen und INTERRUPT(SIG_OVERFLOW0) bin aber noch nicht wirklich dahintergestoßen was ich nun wirklich brauche. Ziel ist es dann einfach eine Variable hochzuzählen und beim ca 4. mal ist dann eine Sekunde rum und es passiert irgendwas. Soweit kein Problem, nur eben wie ich den Interrupt abfange. Programmiersprache: C Controller: Mega16 thx, Hasi
Hasi wrote: > Moin, > > habe ich das richtig verstanden? (Timer0, 4MHz): > > TCCR0 |= (1<<CS00)|(1<<CS02); // Enabled den Timer und setzt Prescaler > auf 1024 > TIMSK |= (1<<TOIE0); // Enabled den Interrupt für den Timeroverflow > sei(); // Interrupts gloabel Enablen jep. > > Heißt so viel wie der Timer wird gestartet und es treten (4000000 / > 1024) / 256 = 15.25 Overflows auf in einer Sekunde. jep. > Bei jedem Overflow > wird das TOV0 Flag im TIVR Register gesetzt und ein > Timer-Overflow-Interrupt angestoßen. jep. > > So, wenn das jetzt soweit richtig ist. Wie kann ich dann diesen > Interrupt abfangen? Ich hab was von ISR gelesen und > INTERRUPT(SIG_OVERFLOW0) bin aber noch nicht wirklich dahintergestoßen > was ich nun wirklich brauche. > > Ziel ist es dann einfach eine Variable hochzuzählen und beim ca 4. mal > ist dann eine Sekunde rum und es passiert irgendwas. Soweit kein > Problem, nur eben wie ich den Interrupt abfange.
1 | #include <avr/interrupt.h> |
2 | |
3 | uint8 counter; |
4 | |
5 | ISR( TIMER0_OVF_vect ) |
6 | {
|
7 | counter++; |
8 | |
9 | if( counter == 4 ) { |
10 | ...
|
11 | counter = 0; |
12 | }
|
13 | }
|
14 | |
15 | int main() |
16 | {
|
17 | ....
|
18 | }
|
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.