www.mikrocontroller.net

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


Autor: Christian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Justus Skorps (jussa)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 :)

Autor: Stefan Ernst (sternst)
Datum:

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

Autor: hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Christian E. (ultraschall81)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>Falls noch jemand eine Idee hat, nur her damit.

Stefan hat doch den richtigen Hinweis gegeben.

MfG Spess

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.