Ich versuche den Timer0 beim ATmega8515 anzusteuern, aber der Interrupt wird nie ausgelöst. Ich habe schon die Suche benutzt aber habe die Lösung nicht gefunden... mfg Andreas
Du hast den Timer auch lediglich aktiviert, zählen tut der schon. Wenn du jetzt noch das Flag setzt, welches den Interrupt bei Überlauf aktiviert dann passt das :-)
Ähm, falsch ... Es gibt einen Unterschied zwischen Output Compare und Timer Overflow.
Danke! Ich konnte nirgends ein komplettes Code Beispiel finden... Aber jetzt funktioneirt es. mfg Andreas
Hab den gleichen Code jetzt nicht gerade... aber einer der funktioniert, aber mit Timer 2...: Initialisierung (bei mir in der main Funktion) { TCCR1B = 1<<WGM12^1<<CS10<<CS11; OCR1A = 0; TCNT1 = 0; TIMSK = 1<<OCIE1A; sei(); } SIGNAL (SIG_OUTPUT_COMPARE1A) { //wird ausgeführt wenn timerüberläuft } habe das mit den Timern auch noch nicht ganz begriffen, aber so funktioniert es problemlos.. mfg Andreas
Nachdem ich mich gestern auch ein wenig damit rumgeschlagen hab (Mein Int wurde auch nicht ausgelöst), hab ich's glaub ich: { TCCR1B = 1<<WGM12^1<<CS10<<CS11; //setzt den Prescaler OCR1A = 0; //setzt den Vergleichswert TCNT1 = 0; //Startewert des Counters TIMSK = 1<<OCIE1A; //Compare-Int aktivieren sei(); //globale Ints aktivieren } SIGNAL (SIG_OUTPUT_COMPARE1A) { //wird ausgeführt wenn der Counterwert mit dem Vergleichswert übereinstimmt } Wenn man wirklich nur den Overflow haben will, dann reicht auch, das ganze so zu schreiben: SIGNAL (SIG_OVERFLOW0) { // Interrupt Code bei Timerüberlauf (8-Bit = 256 Timerzyklen) } { // 8-Bit Timer einstellen TCCR0 = (1<<CS00)|(1<<CS02); // Vorteiler TIMSK = (1<<TOIE0); // Überlauf-Int aktivieren sei(); // Globale Ints aktivieren }
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.