www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Tiny 13 - PWM Bitraten herabsetzen


Autor: Ra Sp (mcfloppy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,
hab hier einen Tiny 13 und möchte einen 12 kHz Sinus erzeugen. Dazu 
möchte ich die Bitraten / Stützstellen anpassen. Da ich bei 9,6MHz 
arbeite, und Fast PWM mit CLK/1 nutze, gillt folgende Formel:
f_PWM = f_CPU/((2^Zählerbreite)-1)
was bei 8 Bit etwa 37,7 kHz Abtastrate ergibt. Bei einem 12kHz Signal 
sind das 3 Stützstellen. Nun muss der Filter bei 3 Stützstellen sehr 
steil sein und einen wirklichen Vorteil habe ich von 8Bit bei so wenig 
Stützstellen auch nicht. Setze ich nun die Bitrate runter, habe ich pro 
Bit die doppelten Stützstellen.. also 7 Bit -> 6 Stützstellen und 6 Bit 
-> 12 Stützstellen. Da ich nun einige Versuche damit anstellen möchte, 
wäre es mir sehr gelegen wenn ich den Hardwaretimer begrenzen könnte. Im 
Datenblatt gibt es dazu einen "Modus 7", dies ist eine FastPWM Abart mit 
TOP bei OCRA (laut DB). Nun gibt es kein OCRA, also nehme ich an dass 
hiermit OCR0A gemeint ist. Mit folgendem Quellcode kommt immer noch eine 
PWM Frequenz von 37,7kHz, egal was ich in OCR0A schreibe. Habt ihr eine 
Idee?

Vielen Dank im Vorraus
Raphael

#include <avr/io.h>

#ifndef F_CPU
#define  F_CPU   9600000UL
#endif

#include <util/delay.h>


int main() {
  // Ports:
  DDRB|=(1<<PB1);

  // Timer:
  TCCR0A = (1<<COM0B1) | (1<<WGM02) | (1<<WGM01) | (1<<WGM00) ;
  TCCR0B = (1<<CS00);
  OCR0A = (1<<6)-1;
  OCR0B = 0x4F;

  while(1) {
  }
  // wird nie erreicht:
  return 0;
}

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> TCCR0A = (1<<COM0B1) | (1<<WGM02) | (1<<WGM01) | (1<<WGM00) ;

Es gibt kein WGM02 Bit in TCCR0A.

Autor: Ra Sp (mcfloppy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
100 Gummipunkte :p Habe ich total übersehen, das war so verführerisch 
die Flags in eine Variable zu schreiben... Hab das 02er Flag es nun in 
die Zeile darunter zu dem 2ten Register gerückt und alles geht. Dann 
kann ich die Tage mit meinen Testmessungen anfangen.

Vielen Dank

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.