Forum: Mikrocontroller und Digitale Elektronik ATmega32 - Timer2


von DD (Gast)


Lesenswert?

Hallo.

Ich benutze den ATmega32L und versuche mittels Timer0 und Timer2 eine 
PWM zu generieren. Hierbei bin ich nur sehr erstaunt, dass man scheinbar 
nur vorgegebene Frequenzen einstellen kann. Die Formel ist:


Frequenz = 8 MHz / (N*510);    (CPU Frequenz 8 MHz)

Damit hätten wir für N (1,8,64)  die Frequenzen 15,69kHz, 1,96kHz, 245 
Hz.

So eine Einschränkung ist natürlich ziemlich hart. Oder habe ich was 
wichtiges übersehen???


Danke fürs Helfen! :)

von Karl H. (kbuchegg)


Lesenswert?

DD schrieb:
> Hallo.
>
> Ich benutze den ATmega32L und versuche mittels Timer0 und Timer2 eine
> PWM zu generieren. Hierbei bin ich nur sehr erstaunt, dass man scheinbar
> nur vorgegebene Frequenzen einstellen kann.

Na ja.
Was willst du bei 8-Bit PWMs noch grossartig an den Bitzahlen abzwacken 
um die Frequenz zu erhöhen?

von Karl H. (kbuchegg)


Lesenswert?

DD schrieb:

> Frequenz = 8 MHz / (N*510);    (CPU Frequenz 8 MHz)
>
> Damit hätten wir für N (1,8,64)  die Frequenzen 15,69kHz, 1,96kHz, 245
> Hz.

Bei einer Phase Correct PWM.
Brauchst du die wirklich?

Mit Fast-PWM bist du bei 32kHz, 3.9kHz, 970Hz, ...

> So eine Einschränkung ist natürlich ziemlich hart.

Also ich finde 32kHz nicht wirklich hart.

Was willst du denn mit der PWM machen, dass du mit diesen Frequenzen 
nicht leben kannst?

von Spess53 (Gast)


Lesenswert?

Hi

>So eine Einschränkung ist natürlich ziemlich hart. Oder habe ich was
>wichtiges übersehen???

Mit Fast PWM hast du jeweils die doppelte Frequenz und der Timer2 hat 
mehr Vorteilerstufen.

MfG Spess

von DD (Gast)


Lesenswert?

Ich wollte damit einen Ultraschall Sensor speisen. Da dieser aber 40 kHz 
benötigt, fällt dieser Gedanke natürlich ins Wasser. :)


Mit "hart" meinte ich, dass man MAX value nicht einstellen kann. Die 
einzelnen Frequenzen sind also hart vorgegeben.

von Cyblord -. (cyblord)


Lesenswert?

Warum steuert man einen US-Wandler per PWM an? Was bringt das? 
Leistungsregulierung?

von Karl H. (kbuchegg)


Lesenswert?

DD schrieb:
> Ich wollte damit einen Ultraschall Sensor speisen. Da dieser aber 40 kHz
> benötigt, fällt dieser Gedanke natürlich ins Wasser. :)
>
>
> Mit "hart" meinte ich, dass man MAX value nicht einstellen kann. Die
> einzelnen Frequenzen sind also hart vorgegeben.

Du hast immer noch einen CTC Modus und kannst die Pins selber in der ISR 
umschalten.
OK. Bei einem PWM-Wert von 0 wird das eher schwierig, aber um einen Ton 
zu generieren, brauchst du den ja auch nicht wirklich. Der Ultraschall 
ist entweder da oder nicht da. Oder musst du den in der Leistung auch 
noch einstellen können?

von Spess53 (Gast)


Lesenswert?

Hi

>Ich wollte damit einen Ultraschall Sensor speisen. Da dieser aber 40 kHz
>benötigt, fällt dieser Gedanke natürlich ins Wasser. :)

Dazu nimmt man CTC und nicht PWM. Und damit bekommst du deine 40kHz 
recht genau hin.

MfG Spess

von DD (Gast)


Lesenswert?

cyblord ---- schrieb:
> Warum steuert man einen US-Wandler per PWM an? Was bringt das?
> Leistungsregulierung?

Was für US-Wandler?  Ich sagte doch Ultraschall Sensor



Jup. Nächster Schritt ist mit CTC Modus zu versuchen. Ist halt etwas 
umständlicher mit der Leistungsregulierung. ^^  Controller Belastung 
wird
wohl auch zunehmen. Aber ist wohl einzige Möglichkeit, da mein Timer1 
schon belegt ist.

von Karl H. (kbuchegg)


Lesenswert?

Mit einem 10.24Mhz Quarz bist du dabei.
Und genauer als die 8Mhz intern ist es auch noch.

von DD (Gast)


Lesenswert?

Stimmt! Wäre auch möglich^^

Danke für eure Hilfe!

von NN (Gast)


Lesenswert?

Hallo.

Da muss ich nochmal die Diskussion aufgreifen...


Ich habe den Timer2 auf CTC modus und toggle einfach ein pin mittels 
12µs ISR routine... Dabei habe ich festgestellt, dass der US-Sensor ein 
hochfrequentes Signal von sich gibt. Eine Prüfung ergab, dass hier eine 
andere interrupt routine mithineinspuckt und dass beim Timer2 nach einer 
bestimmten Periode das Eintreten in die eigene ISR routine verschiebt, 
weil die CPU noch mit der anderen routine beschäftigt ist...

Ich hoffe, es ist einigermaßen verständlich was ich meine.
Hat jemand ne Idee, wie man dieses Problem lösen kann, außer dass man 
gleich einen anderen Quarz einlöten muss?

gruß
NN

von holger (Gast)


Lesenswert?

>Hat jemand ne Idee, wie man dieses Problem lösen kann

Den anderen Interrupt abschalten?

von holger (Gast)


Lesenswert?

Oder

Compare Match Output Mode
Toggle OC2 on compare match

Da toggelt dein Pin (OC2 zwingend, kein anderer) automatisch.

Dann brauchste auch keinen Interrupt mehr.
Ich hab jetzt aber nicht nachgerechnet ob das hinkommen könnte.

von hans (Gast)


Lesenswert?

NN schrieb:
> 12µs ISR routine

Wozu der Interrupt, Timer 2 kann den OCR2-Pin auch so
toggeln ;)

hans

von DD (Gast)


Lesenswert?

Wie einfach die Welt doch sein kann.  :D
Darauf hätte ich auch kommen können.

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.