Hallo zusammen,
ich habe ein PWM-Problem.
Ich versuche bei einem Mega128 (16 MHz) an Pin OC3A (Port E.3) ein PWM
Signal zu erzeugen (letzendlich soll das dann über ein RC-Glied gefilter
zu einem Signal von 0-10V führen).
Irgendwie blick ich es nicht mit den ganzen Bits und Registern.
Mein Code sieht so aus:
int main()
{
DDRE = (1 << PE3);
TCCR3A = (0<<WGM31)|(1<<WGM30)|(1<<COM3C1);
TCCR3B = (0<<CS32) | (1<<CS31) | (0<<CS30) | (1<<WGM33);
OCR3A = 10;
OCR3C = 200;
while (1)
{
;
}
return 0;
}
Was ist daran falsch ?
Greets
Karlheinz
Wenn Du PWM-Modus 9 einstellst, dann kannst Du OC3A nicht verwenden, weil der TOP-Wert in diesem Modus in OCR3A steht. Wenn Du OC3A unbedingt verwenden willst, musst Du eine Betriebsart auswählen, bei der OCR3A nicht für TOP benötigt wird. Wenn Du z.B. Modus 8 nimmst, hast Du exakt dasselbe, nur dass TOP dabei in ICR1 steht und Du OC3A als PWM-Ausgang verwenden kannst. Ansonsten kannst Du in Modus 9 immer noch OC3B und C als Ausgänge benutzen.
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.