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; }
> TCCR0A = (1<<COM0B1) | (1<<WGM02) | (1<<WGM01) | (1<<WGM00) ;
Es gibt kein WGM02 Bit in TCCR0A.
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
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.