Hallo zusammen, ich experimentiere gerade mit der PWM meines ATMega16. Leider habe ich die PWM noch aktiviert bekommen. Mein Versuch beschränkt sich momentan darauf, die Helligkeit einer LED mittels PWM zu variieren. Ich sende mal den C-Codeausschnitt fürs PWM: TCCR1A = (1<<WGM10)|(1<<COM1A1); // PWM, phase correct, 8 bit. TCCR1B = (1<<CS11) |(1<<CS10); // set clock/prescaler 1/64 -> enable counter OCR1A=128; // LED 50% Mehr stelle ich an den Countern/Timern nicht ein. Vielleicht ist das das Problem. ;-) Ich habe schon von mehreren Webseite verschieden Codeausschnitte probiert, alle ohne Erfolg. Was vergesse ich, oder was mache ich falsch? Es wäre evtl. auch hilfreich, wenn mir jemand ein ähnlich einfaches Codebeispiel sendet. Vielen Dank Marcel
Hallo, ja das habe ich: sbi(DDRD, PB4); sbi(DDRD, PB5); Nun sollte OC1A und OC1B als Ausgang arbeiten. Marcel
Hallo nochmal, ich habe noch weiter experimentiert und einen Tippfehler in meinem Quellcode gefunden. Nun scheint das Grundprinzip zu funktionieren. Nur gibt es noch ein weiteres Problem: Nach dem Starten des Programmes hat die LED eine festgelegte Helligkeit (Startwert). Wenn ich nun während der Laufzeit den Wert von OCR1A ändere, ändert sich die Helligekit der LED nicht. Lege ich einen anderen Startwert fest und übertrage das Programm neu, dann hat die LED eine andere Helligekeit. Hast du eine Idee?
Also OC1B liegt bisher noch brach. Richtig? Und was misst Du jetzt an OC1A? Und tut sich eventuell was, wenn Du zwischendurch mal "FOC1A" gibst? Gruß Johannes
Hallo! Vielen Dank für die Hilfe, ich habe meinen Fehler gefunden. Mannomann, manchmal hat man echt Tomaten auf den Augen. Ich habe den Startwert zu Beginn der Schleife immer neu festgelegt. Wenn die Änderung gemacht wurde, wurde diese vom Startwert jedesmal neu überschrieben.
Überschneidung... Wie änderst Du OCR1A während der Laufzeit? Ich meine, ist da auch genug Zeit, den neuen Wert zu übernehmen? Gruß Johannes
Na, die "klassischen" Fehler sind doch immer noch die beliebtesten ;-) Gruß Johannes
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.