mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ATtiny45 Peaks in PWM


Autor: Günter M. (redround)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich bastle gerade an einer kleinen PWM-Anwendung mit dem ATtiny45. 
Controller läuft mit internem Takt.

Minimal-Programm:
#include <avr/io.h>

int main(void)
{
    TCCR0A |= (1<<WGM00)|(1<<WGM01); // Fast PWM
    TCCR0B |= (1<<CS00); // ohne Prescaler
    DDRB |= (1<<PB0); // PB0 als Ausgabe-Pin
    TCCR0A |= (1<<COM0A1);  // PWM aktivieren
  
    while (1) {
        OCR0A = 0; // 0 als PWM-Wert ausgeben  
    }  
}

Wenn ich das so mache, bekomme ich leider keine saubere 0-Line, sondern 
alle rund 250us einen Peak von 1us. Was mache ich falsch?

: Bearbeitet durch User
Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Günter M. schrieb:
> Was mache ich falsch?

Datenblatt nicht gelesen.

"If the OCR0A is set equal to BOTTOM, the output will be a narrow spike 
for each MAX+1 timer clock cycle."

Autor: Thomas Eckmann (Firma: Thomas Eckmann Informationst.) (thomase)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Günter M. schrieb:
> Was mache ich falsch?

Nichts.

Eine Möglichkeit dem Abhilfe zu schaffen, ist den Phase Correct Mode zu 
benutzen.
Die zweite ist, den Timer bei OCR = 0, von Clear on Match auf Set on 
Match umzuschalten und den OCR auf 255 zu setzen. Wenn du das sauber 
programmierst erhält deine PWM dann 257 statt 256 Werte.

: Bearbeitet durch User
Autor: Günter M. (redround)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
super Thomas ... das krieg ich damit jetzt hin :-)

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>Eine Möglichkeit dem Abhilfe zu schaffen, ist den Phase Correct Mode zu
>benutzen.

Mit 'inverting mode' bekommst du den Peak auch weg.

MfG Spess

Autor: Thomas Eckmann (Firma: Thomas Eckmann Informationst.) (thomase)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
spess53 schrieb:
> Mit 'inverting mode' bekommst du den Peak auch weg.

Damit verschiebt man nur das Problem auf einen "0-Peak" bei 255.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Man kann doch ganz einfach beim Wert 0 den Pin von der PWM abschalten 
und auf 0 setzen.

Autor: Carl Drexler (jcw2)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter D. schrieb:
> Man kann doch ganz einfach beim Wert 0 den Pin von der PWM abschalten
> und auf 0 setzen.

Zu einfach!

;-)

Autor: Thomas Eckmann (Firma: Thomas Eckmann Informationst.) (thomase)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter D. schrieb:
> Man kann doch ganz einfach beim Wert 0 den Pin von der PWM
> abschalten
> und auf 0 setzen.

Dann gibt es aber einen Sprung von 0 auf 2.
Perfektion geht anders.

: Bearbeitet durch User
Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>Damit verschiebt man nur das Problem auf einen "0-Peak" bei 255.

Na Und ?

MfG Spess

Autor: Thomas Eckmann (Firma: Thomas Eckmann Informationst.) (thomase)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
spess53 schrieb:
> Na Und ?

Du plenkst und 'und' schreibt man klein.

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>> Na Und ?

>Du plenkst und 'und' schreibt man klein.

Hast du noch mehr zu bieten.

MfG Spess

Autor: Thomas Eckmann (Firma: Thomas Eckmann Informationst.) (thomase)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
spess53 schrieb:
> Hast du noch mehr zu bieten.

Bist du mit Kurt verwandt?

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.