ATmega32 - Timer2

Gast #3130575
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! :)
#3130589
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?
Gast #3130602
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
Gast #3130612
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.
#3130622
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?
Gast #3130624
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
Gast #3130634
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.
Gast #3140458
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
Gast #3140652
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren