Hallo, Wie schaltet man einen Port, der vom Timer T1A getoggelt (PWM) wird in C sicher wieder aus? (Bit in Register?) Um den Timer zu stoppen setze ich CSxx auf "0" Dadurch stoppt der Timer. Der damit verbundene Port bleibt aber immer auf dem Wert den der Timerausgang vorher hatte. Wenn die PWM 50/50 Puls/Pause Verhältnis hat stehen die Chancen bei 50% :-) Es muß doch aber eine sicher Ausschaltlösung geben!?! Wäre über Tipps dankbar. Christian
Christian wrote: > Hallo, > > Wie schaltet man einen Port, der vom Timer T1A getoggelt (PWM) wird in C > sicher wieder aus? (Bit in Register?) > Um den Timer zu stoppen setze ich CSxx auf "0" Dadurch stoppt der Timer. > Der damit verbundene Port bleibt aber immer auf dem Wert den der > Timerausgang vorher hatte. Wenn die PWM 50/50 Puls/Pause Verhältnis hat > stehen die Chancen bei 50% :-) > Es muß doch aber eine sicher Ausschaltlösung geben!?! > > Wäre über Tipps dankbar. > > Christian einfach auf Low setzen?
Ich würde es mal mit: - Timerwert auf min/max setzen - Den PWM-Ausgang als Eingang konfigurieren - PWM-Register auf min/max setzen Irgendwas wird sicher den gewünschte Effekt bringen. Oder aber das Datenblatt anschauen :)
Port-Pin über die COM-Bits vom Timer abkoppeln, und dann über das PORT-Register auf 0 setzen.
Je nach PWM (SET oder CLEAR) kann die PWM ein dauerhaftes Low oder High ausgeben sonst bleibt ein kleiner Spike. Wenn die Richtung stimmt mit PWM min/max arbeiten. Sonst Timer stoppen und Pin gezielt setzen/löschen. Ich mache dann gerne ein (Beispiel mit high) #define pwm_aus TCCR2&=0xf8;PORTB|=0x08 und im Programm nur pwm_aus; Schnell zu schreiben und schnell zu ändern. gruß hans
Danke schonmal für die vielen Antworten. Habe es mit: TCCR1A &= ~(1<<FOC1A); probiert, bringt aber nichts. Einfach den Port Pin auf 0 setzen geht nicht. Habe mal irgendwo gelesen, das einige Porteigenschaften nicht funktionieren, wenn man den Port mit dem Timer verbindet. Versuche es mal wie Hans und Stefan geschrieben haben. Also den Timer vom Port abhängen und den Port auf low setzen oder den Vergleichswert ganz nach unten setzen und dann erst den Timer stoppen (zum Ausschalten) Falls noch jemand eine Idee hat, nur her damit. Christian
Hi
>Falls noch jemand eine Idee hat, nur her damit.
Stefan hat doch den richtigen Hinweis gegeben.
MfG Spess
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.