Hallo,
ich wollte via PWM einen 1bit DAC realisieren, der einen Sinus aus einer
Sinustabelle ausgibt.
Tabelle spar ich mir jetzt ;)
Timer wie folgt initialisiert:
1 | void initTimer2(void)
|
2 | {
|
3 | // Timer2 Fast PWM, toggle OCR2 on match
|
4 | TCCR2 = (1 << WGM20) | (1 << WGM21) | (1 << COM20) | (1 << COM21) | (1 << CS20);
|
5 | OCR2 = 0;
|
6 | }
|
Und im Capture IRQ lade ich jeweils den nächsten Sinus Wert:
1 | // Globale Variable
|
2 | volatile unsigned char uOffset;
|
3 |
|
4 | ISR(TIMER2_COMP_vect)
|
5 | {
|
6 | OCR2 = sinetable[uOffset++];
|
7 | }
|
Der Mega8 läuft mit internen 1MHz und an PB3 ist einen LED angebracht.
Statt nun periodisch heller und dunkler zu werden, geht die LED einfach
aus :(
Wo liegt mein Fehler ?
Falscher PWM Modus oder ist 1MHz einfach zu schnell ?
Danke ;)