Hallo,
ich möchte in meinem programm eine bestimmte Zeit Nutzerinformationen
auf einem Display darstellen. Durch Tastendruck soll es aber möglich
sein sofort zur nächsten Displaydarstellung ohne Verzögerung zu
wechseln. Meine Idee war nun einen Timer zu verwenden aber dabei keinen
Interrupt auszulösen sondern einfach zu prüfen wann das entsprechende
Bit im Interrupt Flag Register des timers gesetzt wird.
Meine Codezeilen sind für den timer A eines Mega128. Klappt leider
nicht! Woran liegts? Tips?
TCCR3B = (1<<WGM32) | (1<<CS30) | (1<<CS32); //ctc, prescaler clk/1024
TCCR3C = (1<<FOC3A); // Output Compare Match
OCR3A = 15624; // ~2 sec intervall
ETIMSK = (1<<OCIE3A); // Compare Match Interrupt Kanal A
ETIFR = (1<<OCF3A); // Timer/Counter3, Output Compare A Match Flag
while(1){
if(getkey())
break;
if(ETIFR & (1<<OCF3A)){
ETIFR &= ~(1<<OCF3A);
break;
}
}
Danke Jeremy
kein kompletter Code also gibt es mal eine Vermutung: wenn da noch irgendwo ein sei() steht, dann wird ein Interrupt ausgelöst. Da du keine Interruptroutine hast, gibt es einen Reset und damit gehts wieder von vorn los.
> ETIMSK = (1<<OCIE3A); // Compare Match Interrupt Kanal A
...damit gibst Du doch den Interrupt frei. Was soll das? Wenn Du ihn
nicht verwenden willst, dann darfst Du ihn auch nicht freigeben...
ohne
> ETIMSK = (1<<OCIE3A); // Compare Match Interrupt Kanal A
wird doch nie das Interruptflag in ETIFR gesetzt oder nicht? Oder nuss
auch das globale Interrupt enable flag mit sei() gesetzt werden damit
das Flag im ETIFR bei compare match gesetzt wird. Aber dann wird ja auch
der Interrupt ausgelöst und genau das will ich ja nicht haben.
jeremy
>wird doch nie das Interruptflag in ETIFR gesetzt oder nicht?
Das Flag wird immer gesetzt, sobald das entsprechende Ereignis eintritt.
IMMER!
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.