www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AVR Timer 2 Rechteck Anzahl Flanken


Autor: Philipp Putzer (putzer_philipp)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Bin gerade bei folgendem "Problem": Mit dem L297 und dem L298 will ich 
einen Schrittmotor ansteuern. Damit der Motor einen Schritt weiter geht, 
braucht der  L297 eine steigende Flanke an seinem Clock-Eingang. Soweit 
so gut, dachte mir, ich mache das mit dem Timer 2 im CTC-Modus meines 
Atmega32.
Funktioniert auch wunderbar, ich stelle also meinen OCR2 ein, und das 
Rechtecksignal wird schneller oder langsamer. Der Motor dreht halt dann 
schneller oder langsamer.

Nur frage ich mich jetzt, wie ich den Timer2 nutzen kann um damit eine 
konkrete Anzahl von Schritten zu machen?
Ich möchte also, zB 10 steigende Flanken mit einer bestimmten 
vorgegebenen Frequenz generieren, danach den Timer 2 wieder 
deaktivieren, oder sonst was.

Kann mir da vielleicht jemand weiterhelfen?

Danke
Philipp P.

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Nur frage ich mich jetzt, wie ich den Timer2 nutzen kann um damit eine
>konkrete Anzahl von Schritten zu machen?

Im Timerinterrupt eine volatile Variable hochzählen.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Philipp Putzer (putzer_philipp)

>Ich möchte also, zB 10 steigende Flanken mit einer bestimmten
>vorgegebenen Frequenz generieren, danach den Timer 2 wieder
>deaktivieren, oder sonst was.

>Kann mir da vielleicht jemand weiterhelfen?

Wo ist das Problem? In einer Variable bei jedem Timerinteerupt eins 
hochzählen und bei 10 den Timer deaktivieren.

MFG
Falk

Autor: Philipp Putzer (putzer_philipp)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In welchen Timer-Interrupt? Overflow oder Compare-Match?
Ovf doch eher nicht, der Timer läuft ja nicht über.

danke
Philipp

Autor: STK500-Besitzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>In welchen Timer-Interrupt? Overflow oder Compare-Match?
>Ovf doch eher nicht, der Timer läuft ja nicht über.

Tut er wohl, aber nicht da, wo er es ohne CTC macht. (Ein Überlauf ist 
ja nichts anderes als der Übergang einer oberen Grenze auf 0.)
Guck dir einfach mal die Beschreibung des CTC-Modes im Datenblatt an.
Da wird auch beschrieben, welcher Interrupt ausgelöst wird.
Ein einfaches Beispiel sollte sich in der Codesammlung unter "eine 
simple Uhr" oder so ähnlich finden lassen.

Autor: STK500-Besitzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Philipp Putzer (putzer_philipp)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!

Ja, habs jetzt hinbekommen. Hatte oben im Programm den T2 Overflow 
aktiviert, jedoch mit dem CTC-Interrupt-Vektor gearbeitet.

Danke nochmals!
Philipp

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.