Hallo zusammen
Ich habe ein kleines Problemchen bei der Erzeugung eines PWM Signals...
Ich habe mich in den letzen 2 Tagen viel mit PWM-Tutorials und dem Datenblatt meines Atmega644 auseinandergesetzt und mir ein gewisses Grundverständnis der Register und Bits erarbeitet, bin allerdings noch nicht ganz so sicher im Umgang mit den Timern, was sich darin äußert, dass an den Pins OC2B und OC2A (welche zu den Enables des Motortreibers führen) absolut nichts tut.
Auch Messungen mit dem Oszilloskop haben nichts ergeben.
Es liegt offenbar an meinem Code...
Ich poste hier erstmal die Funktion, in der alle PWM-spezifischen Einstellungen getroffen werden (Richtungsregister werden in "main()" eingestellt):
Code:
//In dieser Funktion werden alle PWM-spezifischen Einstellungen getroffen
void initPwm()
{
//---------Timer2-Settings------------//
//Mode: Fast PWM //
//Prescaler: F_CPU / 32 (ca. 2,4kHz) //
//Ausgangsport: Clear at CompareMatch //
//------------------------------------//
TCCR2A = (1<<COM1A1) | (1<<WGM20) | (1<<WGM21);
TCCR2B = (1<<CS20) | (1<<CS21) | (1);
//Vergleichswert einstellen
//Linker Motor:
OCR2A = 200;
//Rechter Motor:
OCR2B = 50;
}
und hier nochmal mein gesamter bisheriger Code, um die Funktion im Gesamtkontext zu betrachten:
klick mich klick mich
Ich bin sowiso ein "Neueinsteiger" was µCs angeht und mit den Timer-Funktionen, wie erwähnt, noch unsicher und im Moment leider nicht in der Lage den Fehler zu finden, fände es also Klasse wenn mir hier jemand auf die Sprünge helfen würde.
Vielen Dank schonmal im Vorraus an alle die mir helfen und einen schönen Abend noch euch allen
Lesezeichen