Tag!
Ich habe ein Problem mit der PWM bei einem Atmega32 (auch 16) und zwar
erzeugen alle 3 Timer analoge Ausgänge per PWM. Bei den Timer 1 und 2
funktioniert dies auch tadellos, nur will beim Timer0 nix rauskommen :(
Ich habe jetzt leider keine Ahnung mehr an was das liegen könnte...
------------------------------------------------------------------------
-
------------------------------------------------------------------------
-
hier mal einen auszug meines Quellcodes:
...
DDRD |= 0b10100000; // Pins als Outputs
DDRB |= 0b00001000;
PORTD &= 0b01011111; // Ausgänge abschalten
PORTB &= 0b11110111;
void Timers_init(void)
{
TCCR0 = 0b01101000; //Fast PWM - Timer gestoppt
OCR0 = 0;
//Timer1 (10bit) PWM
TCCR1A = 0b10000011; // 10bit Fast PWM
OCR1A = 0;
TCCR1B = 0b00001000;
// Timer2 (8bit) Fast PWM
TCCR2 = 0b01101000;
OCR2 = 0;
}
void PWM_Air(int wert) //Timer0 -> OC0 an B3
{
TCCR0 = 0b01101000; // Timer stopp
if(wert==0)
{
PORTB &= 0b11110111;
return; // PWM stopp
}
if(wert>=255)wert=255;
OCR0 = wert;
// hier Timer starten
TCCR0 = 0b01101010; //TAKTTEILER 8
}
void PWM_Oxy(int wert) // Timer2 -> OC2 an D7
{
TCCR2 = 0b01101000; // Timer stopp
if(wert==0)
{
PORTD&=0b01111111;
return; // PWM stopp
}
if(wert>=255)wert=255;
if(wert>OCR0)wert=OCR0; //max gleicher Anteil Oxy und Air
OCR2 = wert;
// hier Timer starten
TCCR2 = 0b01101001; //TAKTTEILER 1
}
------------------------------------------------------------------------
-
------------------------------------------------------------------------
-
wär Top, wenn mir jemand weiterhelfen könnte !
Hallo , in welchen Modus willst Du den Timer 0 betreiben? Fast PWM ist es jedenfalls nicht. Bye Andi
.... ich habs jetzt mal in den Simulator reingehauen, und da toggelt der PB3, somit müsste der gepostete Code korrekt sein. Der Fehler ist dann wohl woanderst zu suchen. Bye Andi
Dane schrieb: > hier mal einen auszug meines Quellcodes: > ... Code als Anhang, sonst wirds nix mit Fehlersuche :-)
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.