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! :)
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?
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?
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
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.
Warum steuert man einen US-Wandler per PWM an? Was bringt das? Leistungsregulierung?
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?
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
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.
Mit einem 10.24Mhz Quarz bist du dabei. Und genauer als die 8Mhz intern ist es auch noch.
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
>Hat jemand ne Idee, wie man dieses Problem lösen kann
Den anderen Interrupt abschalten?
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.
NN schrieb: > 12µs ISR routine Wozu der Interrupt, Timer 2 kann den OCR2-Pin auch so toggeln ;) hans
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.