Hallo,
Ich weiß dass die Fragen zu PWM für Profis sehr nervig sind,
Leider sind für PWM-Anwendungen fast keine "Übungsbeispiele" in C im Netz zu finden.
Nun zu meinen Problemchen....
Soweit ich mir das erarbeitet habe, müsste folgender Code funktionieren
Code:
// PWM01 mit ATmega8535 mit 8MHz
#include <io.h>
int main (void)
{
TCCR1A = (1<<PWM11)|(1<<PWM10)|(1<<COM1A1);
TCCR1B = (1<<CS12) | (1<<CS10);
for (;;) {
OCR1A = x; // x ist jetzt mal ein Beispielwert,....
}}
Erklärung (bitte verbessern falls ich mich irre)
TCCR1A = (1<<PWM11)|(1<<PWM10)|(1<<COM1A1);
Befehl für nicht invertierenden 10-Bit PWM.
TCCR1B = (1<<CS12) | (1<<CS10);
Takt von CK / 1024 ( hier ergibt sich dann Frage 2 )
OCR1A = xxx;
Wert....
nunja, wenn ich das ganze nun "HEXen" will, dann kommt die Meldung:
"error: "PWM11" undeclared (first use in this funktion)"
"error: "PWM10" undeclared (first use in this funktion)"
Muss ich vielleicht noch ne andere Datei "includen" ausser io.h ?
Oder woran könnte das liegen.... habe die codes aus:
http://www.mikrocontroller.net/wiki/...nmodulation.29
Frage 2:
TCCR1B = (1<<CS12) | (1<<CS10);
Takt von CK / 1024
Ich will letzendlich ein Modellbauservo ansteuern, welches ja einen takt von ca. 50Hz braucht.
aus CK / 1024, ergeben sich aber bei 8MHz ca. 7.8 kHz....
wie komme ich runter auf 50Hz ?
Soll ich "Externer Pin 1, positive Flanke" nutzen?
also
TCCR1B = (1<<CS12) | (1<<CS11) | (1<<CS10);
?
und dort einen Oszillator mit 50Hz dranhängen?
Ich bedanke mich schon mal im Vorfeld für eure Bemühungen,
Gruß
Kaiser F
Lesezeichen