Tiny 13 - PWM Bitraten herabsetzen

OP #1884353
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;
}
OP #1884688
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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren