Forum: Compiler & IDEs ATMega128 und PWM an OC3A


von Karlheinz D. (kdruschel)


Lesenswert?

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

von Johannes M. (johnny-m)


Lesenswert?

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
Noch kein Account? Hier anmelden.