www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Einfachstes Timer Beispiel


Autor: Dirac-Impuls (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!


Ich möchte einfach nur einen Timer laufen lassen und nach einer 
bestimmten Zeit soll ein Ausgangspin invertiert werden.

Dazu habe ich mir dieses Tutorial angesehen: 
http://www.mikrocontroller.net/articles/AVR-GCC-Tu...

Wenn ich dies

#define   F_CPU 3686400
#include  <avr\io.h>


main ()
{
  TCCRA |= (1<<COM1A0);  // Das Signal am Pin OC1 wird invertiert 
(Toggle).

  while(true)
  {

  }
}

auf den Controller laden will kommt die Fehlermeldung

error: 'TCCRA' was not declared in this scope


Muss der Timer vorher noch initialisiert werden oder muss eine Header 
Datei eingebunden werden?


Vielen Dank!

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schau ins Datenblatt von deinem Controller. Vermutlich heisst das 
Register
dort anders.

Oliver

Autor: Dirac-Impuls (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Auf sowas hätt ich auch kommen können. Es hat nur eine 0 gefehlt. Vielen 
Dank schonmal!

So lässt es sich rüberspielen.

#define   F_CPU 3686400
#include  <avr\io.h>


main ()
{
  TCCR1A |= (1<<COM1A0);  // Das Signal am Pin OC1 wird invertiert 
(Toggle).

  while(true)
  {

  }
}


Dieses Programm macht leider noch nicht sonderlich viel. Ich versuche 
hier die ganze Zeit einen einfachen Timer einzustellen, komme aber mit 
den ganzen Registern nicht klar.

Ich würde mich sehr freuen, wenn mir jemand sagen könnte wie ich auf 
einem Pin ein Rechtecksignal mittels Timer ausgeben kann.

Der Toggle Mode ist ja bereits eingeschaltet. Soweit ich weiß muss ich 
ihm jetzt nurnoch sagen wie weit er bis zu einem Neustart zählen soll 
und dass der Timer überhaupt gestartet wird.


Könnte mir vielleicht jemand einen Tip geben um WELCHE Register es sich 
hier handelt die ich ansprechen muss? Was ich in die Register dann 
reinschreiben muss werd ich versuchen selbst rauszufinden.


Vielen Dank!

Autor: Dirac-Impuls (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es ist ein ATMEGA48 falls es jemanden interessiert.

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
TCCR1A und TCCR1B.

PS: Datenblatt ab Seite 131.

PPS: Mit drei Stunden Herumprobieren kann man sich oft 10 Minuten 
Datenblattstudium ersparen... ;-)

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schnellanleitung:

Am besten, Du betreibst den Timer im CTC-Mode, denn dann kannst Du die 
Togglefrequenz auf Deinen Wunschwert einstellen.

Für den CTC-Mode musst Du das Bit WGM12 in TCCR1B einschalten. Ticken 
tut der Timer, sobald Du seinen Prescaler mit den Bits CS12, CS11, CS10 
auf einen Wert ungleich Null setzt, also z. B. 1, 8, 64 etc.

Damit der OC1A-Pin toggelt, muss das COM1A0-Bit in TCCR1A gesetzt und 
der Pin über das DDR als Output konfiguriert sein.

Für den CTC-Modus musst Du zusätzlich noch in das OCR1A-Registerpaar 
(OCR1AH:OCR1AL) einen Wert schreiben, der Dir gefällt. Erreicht der 
Zählerstand des Timers diesen Wert, so wird der Timer sebsttätig 
zurückgesetzt (von der Hardware). Je kleiner der OCR1A-Wert ist, desto 
höher ist die resultierende Togglefrequenz (maximal Systemtakt/2 mit 
Prescaler = 1 und OCR1A = 0).

Viel Erfolg! :-)

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.