mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PWM funktioniert nicht (liegt es am Timer-Interrupt)


Autor: Thomas H. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe folgende Unterprogramm routine zum initialisieren meines PWM 
geschrieben. Einen neuen PWM-Wert setze ich, indem ich dann in all5 
meinen neuen 8-Bit-Wert gebe und rcall pwm_out aufrufe.

Leider habe ich nie ein Signal an meinem Ausgang OC1B (8535).

Kann es daran liegen, dass ich den gleichen Timer noch dazu nutze um 
beim Ueberlauf einen Interrupt auszufuehren?

Hier das PWM-Programm:

; PWM initialisieren
; ------------------

pwm_init:

  ldi   all0, 0b00100001 ; waehle Ausgang OC1B und nichtinvert. 
8-Bit-PWM
  out   TCCR1A, all0

  ldi   all0, 1 ; setzte HSB des Zaehlers auf 1
  out   OCR1BH, all0

  ldi   all0, 0  ; lade zunaechst PWM = 0 (aus)
  out   OCR1BL, all0

  ldi  all0, 0b00000101 ; Vorteiler 1024 und Start
  out  TCCR1B, all0

  ldi   all0, 0 ; lade zunaechst PWM = 0 (aus) und Start
  out   OCR1BL, all0

ret


; PWM-Ausgabe
; -----------

pwm_out:

  out   OCR1BL, all5 ; gebe Wert all5 in PWM aus

ret

Am Programm-Anfang initiallisiere ich noch den Port mit:

ldi  all0, 0b01010000 ; definiert PD2 als INT-Eingang
out  DDRD, all0 ; und PD0, 1 als RXD, TXT und PD4 als PWM-Ausgang und 
PD6 als TTL-Ausgang

Den Timer-Interrupt mit:

ldi  all0, 0b00000100 ; aktiviere Interrupt mit PWM-Frequenz
out  TIMSK, all0 ; geschieht bei 8-Bit-PWM, Vorteiler 1024

Ich habe nach stundenlanger Fehlersuche den Grund nicht gefunden. Danke 
fuer euere Mithilfe,

Thomas H.

Autor: Thomas H. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

habe nun endlich doch die Loesung fuer das Problem gefunden und moechte 
euch diese nicht vorenthalten:

Auch im 8-Bit-Modus muss OCR1XH immer vor dem LSB mit Null beschrieben 
werden. Dann funktioniert es.

Thomas H.

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.