Forum: Mikrocontroller und Digitale Elektronik Atmega8 Timerport (PB1) ausschalten


von Christian (Gast)


Lesenswert?

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

von Justus S. (jussa)


Lesenswert?

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?

von Gast (Gast)


Lesenswert?

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 :)

von Stefan E. (sternst)


Lesenswert?

Port-Pin über die COM-Bits vom Timer abkoppeln, und dann über das 
PORT-Register auf 0 setzen.

von hans (Gast)


Lesenswert?

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

von Christian E. (ultraschall81)


Lesenswert?

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

von spess53 (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.