Guten Abend, ich versuche gerade eine PWM mitmeinem Atmega16 zu erzeugen, allerdings kann ich CTC und Fast PWM nicht verwenden, da Fast PWM ja nicht auf 0 gehen kann und CTC ja immer ein 50/50 Signal ausgibt. Was ich möchte ist eigentlich wie Fast PWM nur das es auch auf 0 gehen kann. Soll heißen bei 255 soll TOP sein, und ich kann mit OCR1A den duty cycle einstellen. Dabei fällt ja auch Phase correct PWM aus. und nun steh ich an, was ich machen sollte, das sollte doch funktionieren oder ? nur womit? Danke ! Lg heinz
Heinz schrieb: > Guten Abend, ich versuche gerade eine PWM mitmeinem Atmega16 zu > erzeugen, allerdings kann ich CTC und Fast PWM nicht verwenden, da Fast > PWM ja nicht auf 0 gehen kann Na ja. Das ist jetzt aber Augenauswischerei. Man kann die PWM ja auch invertieren, dann ereicht man den Full-Wert nicht aber dafür 0. Allerdings kann man ja auch das hier machen. Anstelle einer 0 ins OCR Register zu schreiben, genügt es ja auch den Timer einfach abzuschalten und den Ausgabepin händisch auf 0 zu setzen. Oder eben umgekehrt, wenn man die PWM invertieren lässt, dann muss man sich händisch um den 100% Wert kümmern. Welches davon einfacher ist, hängt dann auch davon ab, welcher Wert häufiger vorkommen wird.
Ja das würde gehen, aber kann ich nicht auch mit Timer2 mit Phase correct PWM auch das erzeugen was ich möchte ?
Da würde ich etwas in der Art schreiben: im init:
1 | DDRB |= 0x08; //als Ausgang definieren |
2 | PORTB &= ^0x08; //Ausgang auf low |
und dann:
1 | void SetPWM(int ocrValue) |
2 | {
|
3 | if (ocrValue == 0) |
4 | {
|
5 | TCCR0 &= ^((1<<COM00)|(1<<COM01)); //Port disconnecten, |
6 | }
|
7 | else
|
8 | OCR0 = ocrValue; |
9 | }
|
Vergessen: im else muss der port natürlich wieder an den timer angehängt werden.
David Kress schrieb: > Vergessen: im else muss der port natürlich wieder an den timer angehängt > werden. Und natürlich den Pin vom Timer wegnehmen und auf 0 setzen. Respektive im else dann natürlich wieder das Gegenteil: Pin wieder an den Timer koppeln.
Hallo! Danke für die Antworten, bringt mir das Vorteile gegenüber Phase and Frequency correct PWM ? Wo ich ja auch ICR als TOP Wert und mit OCR1A den Vergleichswert einstellen kann? Lg Heinz
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.