Forum: Mikrocontroller und Digitale Elektronik timer des mega8 frage


von Dirk F. (dirk-frerichs)


Lesenswert?

hi
ich bastle gerade an einem programm

timer0 soll den encoder und taster mit einem überlaufinterrupt versorgen

timer läuft auch
überlauf funktioniert


timer2  soll ein timeoutsignal erzeugen   auch diese über mittels 
überlaufinterrupt

timer läuft auch
überlauf funktioniert


jeder für sich funkioniert auch ..
aber beide zusammen funktionieren nicht zusammen

hab ich was  überlesen ?
oder kann nur einer im überlaufmodus funktionieren ??

von crazy horse (Gast)


Lesenswert?

Was funktioniert nicht zusammen?

von Dirk F. (dirk-frerichs)


Lesenswert?

hi

die beiden timer im overflow

//Timer2
TCCR2  = (1<<CS22) | (1<<CS21) | (1<<CS22);  // prescaler   clk/1024
TIMSK  = (1<<TOIE2);        // timer2 overflow


// Timer0
TCCR0  = (1<<CS01);        // prescaler clk/8
TIMSK  = (1<<TOIE0);                // timer0 overflow


//---------------------timer 2 overflow
ISR (SIG_OVERFLOW2)
{
     //  code  Timeoutzähler
}


//---------------------timer 0 overflow
ISR (SIG_OVERFLOW0)
{
  // code Rotary encoder und Taster
}



wenn ich einen von beiden rausnehme
funktioniert jeweils der andere timer
nur beide zusammen wollen nicht

von johnny.m (Gast)


Lesenswert?

> TIMSK  = (1<<TOIE2);        // timer2 overflow
> ...
> TIMSK  = (1<<TOIE0);                // timer0 overflow
Klar, mit der Freigabe des Timer 0 Overflow Interrupts löschst Du ja 
auch die Freigabe des Timer 2 Overflow Interrupt wieder. Also entweder
1
TIMSK = (1<<TOIE2) | (1<<TOIE0);
oder anstelle der zweiten Anweisung
1
TIMSK |= (1<<TOIE0);

von Dirk F. (dirk-frerichs)


Lesenswert?

hi

ach stimmt :-)

vielen dank .. bin nioch nicht soo lange mit C / C++ aktiv


grüße
Dirk

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.