Forum: Mikrocontroller und Digitale Elektronik Timer-Compare Probleme


von Oz z. (ozzy)


Lesenswert?

Moin,

ich habe gerade ein Problem mit einem Timer (Timer0 8-bit) und dem 
Compare. Ich möchte gerne den Timer im Prozessortakt bis 150 laufen 
lassen, woraufhin ein Interrupt ausgelöst werden soll. Im Simulator 
läuft es auch ganz gut, nur in der Realität nicht, da sieht es so aus, 
als würde er immer bis zum Overflow, odre 0xFF laufen. Hier Mein Code:
1
void init_timer0( void ) {
2
3
  TCCR0 |= (1<<CS00);    // 8bit-Timer0 auf Systemtakt laufen lassen
4
  TIMSK |= (1<<OCIE0);  // Interrupt für Timer0 anschalten
5
  OCR0 = 150;        // Compare-Wert für Timer0
6
7
} 
8
9
ISR(TIMER0_COMP_vect) {
10
...
11
}

globale Interrupts sind natürlich aktiviert. Habt Ihr eine Idee, warum 
das nur im Simulator läuft? An der Länge der ISR liegt es nicht, die 
habe ich schon auf einen Takt runtergebracht...

MfG, und vielen Dank im Voraus!!!

von Oz z. (ozzy)


Lesenswert?

Hi,

hab es gerade selber gemerkt, was natürlich fehlt, ist das
1
TCCR0 |= (1<<CS00)|(1<<WGM01);
Warum der Simulator ohne dieses Bit aber funktioniert, ist mir völlig 
unverständlich...

MfG, Ozzy

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
Noch kein Account? Hier anmelden.