AVR ATmega128L Problem mit zwei Timern

OP #1016425
Lesenswert?

Hallo erstmal,

ich habe da folgendes Problem ich möchte 2 Timer gleichzeitig auf einem 
ATmega128L laufen lassen. einen Timer0 8Bit Timer und Timer1 16 Bit 
Timer. Mein Problem ist nun das sich der Timer den ich zuerst 
initiallisiere immer aufhängt bzw nicht läuft. Programmiert habe ich das 
ganze so.
Timer0:

void hwclockRestart ()
{
  TCCR0 = (1 << CS02) | (1 << CS01)| (1 << CS00);
  TIMSK = (1 << TOIE0);
  TCNT0 = 256 - 72;
}

Timer1:
void hwclockRestart16 ()
{
  TCCR1A = 0;
  TCCR1B = (1 << CS12) | (1 << CS10);
        TIMSK = (1 << TOIE1);
  TCNT1H = 0xEF;
  TCNT1L = 0x20;
}

SObald ich nun in meiner init Funktion die beiden Timer aufrufe hängt 
sich immer der auf den ich zuerst aufrufe. Bei

hwclockRestart();
hwclockRestart16();

Halt der 8 Bit bei gedrehtem Aufruf der andere. Hat einer von euch eine 
Idee woran es liegen könnte vieleicht an den Interrupts das die sich 
Ineinader aufrufen wovon ich nicht ausgehe.

ISR(TIMER0_OVF_vect)
{
  cli();
       TCNT0 = 256 - 72;
        sei();
}

ISR(TIMER1_OVF_vect)
{
  cli();
       TCNT1H = 0xEF;
  TCNT1L = 0x20;
        sei();
}

Danke im Vorraus Gruß Losti
#1016804
Lesenswert?

Hans Klemer wrote:
> ich habe da folgendes Problem ich möchte 2 Timer gleichzeitig auf einem
> ATmega128L laufen lassen. einen Timer0 8Bit Timer und Timer1 16 Bit
> Timer. Mein Problem ist nun das sich der Timer den ich zuerst
> initiallisiere immer aufhängt bzw nicht läuft.

Sie laufen schon beide, aber Du disablest immer den Interrupt des 
ersten:
1
>   TIMSK = (1 << TOIE0);
2
> ....
3
>         TIMSK = (1 << TOIE1);


Peter

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren