www.mikrocontroller.net

Forum: Compiler & IDEs Timer1 von ATMEGA16


Autor: Thomas Pototschnig (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

in meinem Projekt nutze ich ADC, Timer0 und Timer2 (jeweils PWM), RS232
- quasi fast alles was es gibt und es funktioniert einwandfrei ...

Nur der Timer1 bereitet mir Probleme.

Hier mein code:

void CTimer::Init()
{
  TCCR1A = 0x00;
  TCCR1B = 0x1d; // Prescaler 1024

  OCR1AH = (15625 & 0xff00) >> 8;
  OCR1AL = (15625 & 0x00ff);  // 2sec bei 8MHz

  Start();
}

void CTimer::Start()
{
  TCNT1H = 0x00;  // timerval auf 0 zurücksetzen
  TCNT1L = 0x00;
  TIMSK |= 0x10;  // Timer erneut aktivieren
}

ich hab dazu noch eine Interruptroutine:
SIGNAL (SIG_OUTPUT_COMPARE1A)
{
// blabla
}

Der Timer läuft von 0 bis 0xfffe und bleibt dann stehen - die
Interruptroutine wird nie ausgeführt ... Normalerweise hab ich in
meiner Interruptroutine noch ein TIMSK |= 0x10 drin ...

Laut dem Datenblatt des ATMEGA16 hab ich alles richtig gemacht ...

Weiß jemand, wo mein Problem liegt?

Wie gesagt - alles andere funktioniert ...

Autor: Thomas Pototschnig (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das habe ich übersehen:
TCCR1B = 0x0d; // Prescaler 1024
statt
TCCR1B = 0x1d; // Prescaler 1024

bei 0x1d wird ICR1 statt OCR1A für den Compare verwendet ...
Der Timer läuft jetzt von 0 - 15625 und setzt sich dann sauber wieder
auf 0 zurück und läuft weiter ...

Trotzdem krieg ich noch keinen Interrupt...

Autor: Thomas Pototschnig (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ach bin ich bescheuert ...

ich hatte angenommen das Global-Interrupt-Flag wird von hausaus vom GCC
gesetzt -

ein sei(); wirkt wunder ...

Ok - Alle Fragen geklärt ...

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.