Forum: Mikrocontroller und Digitale Elektronik Rechtecksignal an OC1A über CTC-Modus des Timers erzeugen


von Martin (Gast)


Lesenswert?

Hallo,

ich erzeuge derzeit ein Rechtecksignal am OC1A-Ausgang des Timers zur 
Ansteuerung eines Schrittmotors.

Die Frequenz stelle ich ein, indem ich das OCR1A auf meinen jeweils 
gewünschten Vergleichwert setze.

Das Problem ist jetzt, wenn ich das Register verändere, dass der 
Schrittmotor (nur während der Änderung) ruckelt.

Im AVR-GCC-Tutorial habe ich dazu gefunden:

"Im Unterschied zu den PWM-Betriebsarten wird die Registeraktualisierung 
bei CTC nicht automatisch synchronisiert. Schreibt man einen neuen 
Compare-Wert, dann wird dieser sofort übernommen, was zu Fehlfunktionen 
führen kann, wenn der neue Compare-Wert höher ist, als der atuelle Stand 
von TCNTnx. In den PWM-Betriebsarten wird hingegen der TOP-Wert synchron 
bei Erreichen von TOP oder BOTTOM aktualisiert. "

Hat einer von euch eine Idee wie ich die Frequenzänderung machen kann, 
ohne dass es diese "Ruckler" gibt?

Martin

von Stefan_KM (Gast)


Lesenswert?

Hi.

Zunächst solltest du vielleicht erläutern, was genau du machen willst.

von spess53 (Gast)


Lesenswert?

Hi

>Hat einer von euch eine Idee wie ich die Frequenzänderung machen kann,
>ohne dass es diese "Ruckler" gibt?

Änderung in den Overflowinterrupt verlegen.

MfG Spess

von Martin (Gast)


Lesenswert?

@Stefan_KM:

Ich will die Geschwindigkeit des Schrittmotors (=Frequenz des 
Rechtecksignals) zur Laufzeit verändern

@spess53:

Danke, das glaub ich war der Tipp der gefehlt hat...werds heute abend 
gleich mal probieren!!

von Uwe (Gast)


Lesenswert?

Hi!
Overflowinterrupt ist bei CTC eher der Fehlerfall.
Du solltest den Wert eher im OC1Ainterrupt übergeben, da hat der Timer
max 5 Takte drinn.

Viel Erfolg, Uwe

von spess53 (Gast)


Lesenswert?

Hi

>Overflowinterrupt ist bei CTC eher der Fehlerfall.

Richtig. Natürlich hatte ich den Compare-Interrupt gemeint. 
Entschuldigung.

MfG Spess

von Bernd (Gast)


Lesenswert?

Hallo Martin

Kannst du dein Programm mal posten

Gruss und danke
Bernd

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.