www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Timer0 für Atmega8


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

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

weiß jemand wie der Timer0 in der oben angehängter Programm 
funktioniert. Irgendwie komme ich nicht dahinter wie er funktioniert?

Kann mir da jemand helfen?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ab wo verstehst du die Timerbehandlung nicht mehr?

So wie ich das sehe, wird der Timer ganz normal als
Overflow Timer benutzt, d.h. in regelmäßigen Zeitabständen
wird der Overflow Interrupt ausgelöst. Da diese
regelmäßigen Zeitabstände noch zu klein sind, werden
daher in der ISR weitere Zähler benutzt um den Zeittakt
für die eigentliche Anwendung noch herunterzuteilen.

So nach em Muster: Wenn man 60 mal 1 Sekunde wartet,
hat man in Summe auch 1 Minute gewartet.

Autor: Martina (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja das habe ich auch so verstanden, und eigentlich sollte dann irgend 
wann mal der Interrupt angesprungen werden, das passiert leider nie. Und 
auf STK500 passiert da leider auch nichts. Ich meine Blinken und 
Einschaltverzögerung!

Autor: Michael G. (linuxgeek) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Code ist grauenhaft formatiert und es ist ein klassisches Beispiel 
dafuer, wie man den Praeprozessor in C nicht verwenden sollte... und die 
Registerwerte sind auch noch hart codiert, das fiesel ich jetzt nicht 
auseinander.

Michael

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Martina wrote:
> Ja das habe ich auch so verstanden, und eigentlich sollte dann irgend
> wann mal der Interrupt angesprungen werden, das passiert leider nie.

Das mag durchaus sein.
Aber der Timercode ist so erst mal in Ordnung.
0x02 in TIMSK ist der Overflow Interrupt im Timer 0,
ein 'sei' wird gemacht, der Timer hat einen
Vorteiler eingestellt

Das sind dann eigentlich schon alle Bedingungen, damit
der Timer läuft und einen Interrupt beim Overflow
auslöst.

> Und
> auf STK500 passiert da leider auch nichts. Ich meine Blinken und
> Einschaltverzögerung!

Setz doch einfach mal zusätzlichen Code in die Overflowfunktion
und lass dort eine LED einschalten, dann weist du ob der Timer
läuft und einen Overflow auslöst oder nicht.

Zwischen dem Timer und den 'SPS Ausgängen' sitzt ja
noch eine Softwareschicht die ebenfalls Fehler enthalten
kann. Die will ich mir jetzt aber nicht antun :-) Die
ist grauenhaft geschrieben.

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.