counter-Probleme mit ATtiny25

Gast #1193908
Lesenswert?
• ▲
▼
ich habe versucht eine Verzögerungsfunktion mithilfe von TIMER0 zu 
schreiben:

void delay_8ms(uint8_t m8s)           //@m8s max 256, @m8s=#8ms-Schritte 
// TIMER0 verwendet
{
    TCCR0B=0x00;                      //timer angehalten
    TCCR0A=0x00;                      //Ports normal, operation mode 
normal
    TIMSK&=~0x18;                     //f overflow interrupt aktiviert
    TIMSK|=0x02;
    TCNT0=0xff-m8s;                    //timer auf ausgangsposition 
gesetzt
    bf0.timer0=true;                   // bool um aus der schleife zu 
springen (global definiert)
    TCCR0B=0x05;                       // 1024 prescaler => 8ms pro 
Zählschritt (bei 128kHz)
                                       // timer gestartet
    while(bf0.timer0)                  // Warteschleife
    {
    }
    TIMSK&=~0x02;                      // Zurücksetzen der 
overflow-interrupt einstellung

}

und

ISR(TIM0_OVF_vect)
{
    bf0.timer0=false;
}

wobei das Programm immer an der Stelle der Verzögerung hängenbleibt, 
woraus ich schliesse, dass die Interruptfunktion nie aufgerufen wird, 
was ich mir nicht erklären kann. (Watchdog hab ich ausgeschaltet)

Auch eine zweite Funktion, die Timer1 braucht funktioniert nicht. 
Deshalb denke ich, dass ich irgendwas mit dem Timer-starten falsch 
mache. Aber was?

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