mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Timer1 läuft nicht an?


Autor: Bobby McFerrin (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
die letzten Tage habe ich mit dem Installieren und der Inbetriebnahme
und Einarbeitung des AVR Studios mit WinAvr beschäftigt. Ich habe
vorher mit CodeVision gearbeitet und war nun einfach mal auf der Suche
nach einem freien C-Compiler. Mein Fazit vorab: Ich bin sehr angetan
von der aus Kombination von Studio und WinAvr entstehenden kompletten
Entwicklungsumgebung. Großes Plus ist die Möglichkeit auf C-Ebene zu
debuggen.
Nun wollte ich den Timer1 mal zum Laufen bringen, dieser läuft aber
leider nicht los. Ich denke eigentlich habe ich alle Register
vernünftig initialisiert, aber wie gesagt er läuft nicht los.

Vielen Dank für die Hilfe und Tips schon im voraus.

Autor: Bobby McFerrin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
P.s.: Das Tutorial hier habe ich mir schon durchgelesen, also bitte
keine Verweise darauf.

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
um welchen Chip gehts denn?
Beim Mega8 z.B. müsste es heissen
TIMSK=0x10;
besser daher die entsprechende symbolische Schreibweise...

Autor: Bobby McFerrin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry, habe ich vergessen anzugeben.
Es ist ein ATMega8535
Habe die Register nach durchlesen des Datenblatt initialisiert.

Autor: thkais (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mit symbolischer Schreibweise ist gemeint: TIMSK = (1<<OCIE1A) zum
Beispiel. Liest sich besser als TIMSK = 0x10;
Denn TIMSK = 0x40 ist falsch. Der Timer läuft zwar, löst aber keinen
Interrupt aus (denn Du hast den Overflow des Timer2 selektiert)

Autor: Bobby McFerrin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@thkais,
hast recht, muss natürlich TIMSK=0x01 bzw. TIMSK=(1<<OCIE1A) heißen.


Aber das Hauptproblem bleibt; der Timer läuft nicht an. Er müsste doch
nach Init von TCCR1B anlaufen. Hier wähle ich:
CS12:CS10 0b00000101 //Vorteiler 1024
Und für CTC Mode: Setzen von WGM12 bzw. CTC1. Dies ist das 3. Bit im
Register, also ergibt sich doch
TCCR1B=0b00001101 bzw. TCCR1B=0x0D
bzw. symbolisch:
TCCR1B=(1<<CS12)|(1<<CS10)|(1<<CTC1);

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Woraus schließt Du eigentlich, dass der Timer nicht losläuft? Wenn Du
das vom Debugger hast, in welchem Modus lässt Du den denn laufen? Bei
einer Taktteilung von 1024 kriegste ja nur alle 1024 Takte ein
Inkrement in TCNT1. Wenn Du in Einzelschritten simulierst, dann
müsstest Du 1024 mal klicken, bevor sich da überhaupt was tut.

Autor: Bobby McFerrin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@johnny b
Hast auch recht. Ich hab den Vorteiler auf 1 eingestellt und den
Compare wert auf 10, so dass man im Simulator mehr sieht.
Timer läuft, die ISR wird jedoch nicht ausgeführt. Jetzt weiß ich
zumindest schon genauer wo es klemmt.

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.