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


von Philipp P. (putzer_philipp)


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.

von holger (Gast)


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.

von Falk B. (falk)


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

von Philipp P. (putzer_philipp)


Lesenswert?

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

danke
Philipp

von STK500-Besitzer (Gast)


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.

von STK500-Besitzer (Gast)


Lesenswert?


von Philipp P. (putzer_philipp)


Lesenswert?

Hi!

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

Danke nochmals!
Philipp

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.