Ich habe schon einmal gelernt, wie man den Interrupt anwendet, habe es aber leider aufgrund einer längeren Pause in diesem Thema vergessen. Könnte mir bitte jemand einen Beispielcode zum Interrupt geben? Es wird ein interner Interrupt verwendet, der immer nach einer Sekunde eine Variable hochzählen soll. Benötige nur die Schreibform, Funktion kenne ich schon. Bitte in C. Danke im Vorraus.
i++; Oder wie war die Frage? Bei den µC-Herstellern gibt es Beispiel-Code zum Saufuadern, wenn Du weißt was ich meine!
das i++ weiß ich auch noch. Ich meine eher die ISR, wie man die einstellt, dass die nach jeder sekunde durchlaufen wird.
Hi >Ich meine eher die ISR, wie man die einstellt, dass die nach jeder >sekunde durchlaufen wird. Datenblatt. Stichwort CTC. MfG Spess
In Code sieht das recht simpel aus (Bsp. mit Atmega16)
1 | TCCR1B = 0x02; //Timer System Frequency Prescaler 8 |
2 | TIMSK |= (1<<TOIE1); //Interrupt alle 100ms (Timer 1) |
3 | sei(); // Globale Interrupts erlauben |
Das hier kommt ins Main, allerdings vor der while(1) Schleife.
1 | #ifndef TIMER1_OVF_vect
|
2 | #endif
|
3 | ISR (TIMER1_OVF_vect) //Interrupt Routine, wird alle 100ms ausgeführt. |
4 | {
|
5 | |
6 | i++ |
7 | |
8 | }
|
Und das hier kommt nach der Main. Das ganze löst alle 100ms einen Interrupt aus. Als Timer wird der 16-bit Timer benutzt (weiss nicht ob der Atmega8 den auch hat), und der Quarz ist 4.19304 Mhz Gruss Gordon
danke, sowas habe ich gesucht, jetzt kann ich den auch für den mega8 umschreiben :D
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.