ATmega32 - Timer2

Gast #3130575
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! :)
#3130583
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?
#3130589
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
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
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
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
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
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
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
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

Eine eigene Frage? Dieser Thread ist über 13 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.