www.mikrocontroller.net

Forum: Compiler & IDEs Starke Abweichungen bei Timer0-IRQ


Autor: Chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Als Anfänger bzw. Umsteiger von PICs bin ich gerade dabei, die
"fabelhafte Welt der AVRs" kennenzulernen ;)

Jetzt wollte ich einen Art Miniuhr basteln, die einfach bei jeder
Sekunde um 1 hochzählt.

Der verwendete AVR ist ein ATmega8, der externe Oszillator ist ein 4MHz
Quarzoszi.

in main() setze ich
RCCR0 auf 5 (Prescaler auf 1024)
und
TIMSK auf 1 (Timer aktiv)

in
SIGNAL (SIG_OVERFLOW0)
lasse ich eine Variable, die mit volatile deklariert wurde hochzählen.
Wenn sie 16 erreicht, wirds sie anschließend wieder auf 0 gesetzt und
gleichzeitig eine zweite Variable hochgezählt.
Am Ende des IRQs wird zusätzlich TCNT0 auf 11 gesetzt.

Somit sollte jede Sekunde (mit -0,06% Abweichung) hochgezählt werden.
Leider weicht das Ganze leider auf 16 Sekunden -1s ab.

Wisst ihr Rat?

Chris

Autor: Hubert.G (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Probiere einmal statt bis 16 nur bis 15 zählen zu lassen, dann sollte es
ungefähr passen, ob das nur 0,06% sind wage ich zu bezweifeln.

Autor: Laplace (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Poste mal das ganze Programm.

Autor: Chris (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Die Lösung von Hubert funktioniert ;)

Der Fehler sitzt halt meistens doch davor...

Anbei ist der Ausschnit vom Code.
Nicht schön, funktioniert aber.

Viele Grüße

Chris

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.