www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AVR ATmega128L Problem mit zwei Timern


Autor: Hans Klemer (losti85)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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:
>   TIMSK = (1 << TOIE0);
> ....
>         TIMSK = (1 << TOIE1);


Peter

Autor: Jean Player (fubu1000)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Damit will dir Peter sagen du solltest besser schreiben:

>   TIMSK |= (1 << TOIE0);
> ....
>   TIMSK |= (1 << TOIE1);


Gruß

Autor: Hans Klemer (losti85)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Super danke für eure Hilfe :). So ein dummer Fehler manchmal übersieht 
man einfach was :). Jetzt läuft es natürlich.

Gruß Losti

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.