Mike C. schrieb:
> TCCR1A = _BV(WGM10) | _BV(WGM11) | _BV(COM1A1) | _BV(COM1B1);
> //Clear OC1A/OC1B on compare match, set OC1A/OC1B at BOTTOM, WGM10,
> WGM11(Fast-PWM)
Das ist aber //Set OC1A/OC1B on compare match, clear OC1A/OC1B at
BOTTOM (inverting mode)
Mike C. schrieb:
> OCR1A = 490; //für benötigte Frequenz von 130Hz
Wenn du OCR1A im Mode 15 ( Fast PWM, TOP = OCR1A, Update of OCR1x at
BOTTOM) einsetz, dann definiert OCR1A deine Frequenz. Richtig.
Mike C. schrieb:
> OCR1A = map(analogRead(A0), 0, 1023, 0, 490); //Steuerung von
> duty-cycle
Dann kannst du aber vergessen den DutyCycle damit festlegen zu wollen.
Du änderst hier die PWM-Frequenz, nicht den DutyCylce.
Außerdem änderst du praktisch die ganze Zeit die PWM Frequenz (in der
Loop) und deshalb bleibt OC1A = D9 immer high, weil immer ein Compare
Match für OCR1A auftritt.
Wenn du Fast PWM nutzen willst und auf D9 und D10 unterschiedliche DC
ausgeben willst, musst du WGM Mode 14 mit dem ICR1 als Register für die
Definition der Frequenz verwenden.