Timer1 Interrupt

Gast #1294344
Lesenswert?

Danke.
Ist aktiviert, da ich INT0 noch verwende.

Funzt jetzt auch, aber ich hab da irgendwas um die 10 sekunden.
sollte doch ansich 4 sekunden werden


11059200 / 1024 =

10800
ich zaehle bis 10799 hoch, das muesste doch ne sekunde sein
Gast #1294398
Lesenswert?

>Der muss doch laufen.. ich hab da noch nen UART am laufen der auch
>saubere zeichen liefert.

Gibt es noch weitere wichtige Informationen?

>Funzt jetzt auch, aber ich hab da irgendwas um die 10 sekunden.
>sollte doch ansich 4 sekunden werden

Der Fehler liegt in Zeile 42 vom Code.
#1294688
Lesenswert?

Simon schrieb:

> ich zaehle bis 10799 hoch, das muesste doch ne sekunde sein

An sich schon.

Der Interrupt sollte bei 1 Sekunde kommen, kommt aber bei irgendwas um 
die 10 Sekunden. Macht einen Faktor so um die 10.
Dein AVR wird ab Werk mit ca. 1Mhz getaktet. Du hast einen Quarz drann 
der bei irgendwas um die 10Mhz liegt. Macht ebenfalls einen Faktor 10.
#1294819
Lesenswert?

stimmt auch wieder, ich hätte es sowieso mit CTC mode gemacht (genauer), 
wenn du schon so arbeitest würde ich es so schreiben (meine methode)
1
ISR(TIMER1_OVF_vect) {
2
TCNT1 = 54737; //65536-10799
3
  lcd_putc('X');
4
}
5

6
// Timer init
7

8
TCNT1 = 54737;
9
TCCR1B |= (1<<CS12)|(1<<CS10); // 1024 pre
10
TIMSK |= (1<<TOIE1);

mfg
#1297261
Lesenswert?

versuchs mal mit dem ;-)
1
ISR(TIMER1_COMPA_vect){
2
  
3
    // dein code
4
    }
5

6
int main(void)
7
{
8
//Timer1 config anfang***********************************************
9
  TIMSK |= (1<<OCIE1A);        //Timer 1 Output Compare A Match Interrupt Enable
10
  OCR1A = 10799;             // von 0 bis zu diesem Wert wird gezählt => 1sek
11
  TCCR1B |= (1<<CS12) | (1<<CS10) |(1<<WGM12);  //CTC MODE & 1024Teiler  
12
     sei ();                //Globale Interrupts freigeben
13
//Timer1 config ende***************************************************
14

15

16
// restliche main blabla
17

18
}

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