mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PWM wird nie 0


Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Ich habe eine Frage, und zwar bei diesem Einfachen Programm wird die PWM 
nie 0, also ich habe immer ca. 200ns on-time

weiß jemand wieso?
Takt ist ein 4Mhz
#include <avr/io.h>
int main()
{
  
  DDRB = (1 << PB1 ); //OCR1A Ausgangspin Port B1
   
  TCCR1A = (1<<COM1A1) | (1<<WGM11); //Nicht Invertierende PWM
  TCCR1B = (1<<WGM13) | (1<<WGM12) | (1<<CS10); //Vorteiler 1 10-Bit Fast PWM
  ICR1 = 20000;
  while( 1 )
  {
    OCR1A = 0;
  }
}

danke
Lg Hans

Autor: Julian O. (jaytech)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Hans,

Das Problem hatte ich auch schon. Liegt am "Fast PWM" Modus. Probiers 
mal mit "PWM, Phase Correct".

Die Bits für "PWM, Phase Correct" sehen z.b. beim Atmega644 wie folgt 
aus:

TCCR1A = (1<<WGM11) | (1<<WGM10)
TCCR1B = (1<<WGM13)

lg Julian

Autor: avr (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das liegt an der Zählweise bei Fast-PWM:
The extreme values for the OCR1x Register represents special cases when generating a PWM
waveform output in the fast PWM mode. If the OCR1x is set equal to BOTTOM (0x0000) the output
will be a narrow spike for each TOP+1 timer clock cycle. Setting the OCR1x equal to TOP
will result in a constant high or low output (depending on the polarity of the output set by the
COM1x1:0 bits.)

Es geht nur "dauer high" oder bei invertierung "dauer low" mit
dem Spike am anderen Ende.

avr

Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke Leute !!!!!
Problem gelöst :)

Besten dank !

Lg
Hans

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.