Hallo,
ich habe folgendes Programm für meinen ATMEGA8:
Das main siht in etwa so aus:Code:void pwm2(void){ TCCR1A = (1<<COM1A1) | (1<<COM1B1) | (1<<COM1A0) | (1<<COM1B0) | (1<<WGM11)|(1<<WGM10); // 10 Bit Pwm, invertierend TCCR1B = (1<<CS11); // Prescaler 8 // Ausgänge für PWM PORTB &= ~(( 1 << PB0 )| ( 1 << PB1 )); // Motor an Port PB0 und PB1 aus OCR1A=1; // Mindestzeit für PWM1 OCR1B=1; // Mindestzeit für PWM2 // und in Ausgangswerte setzen } void MotorSpeed(unsigned int left_speed, unsigned int right_speed) { PORTB &= ~(( 1 << PB0 )| ( 1 << PB1 )); // Motor an Port PB0 und PB1 aus OCR1A = left_speed; OCR1B = right_speed; PORTB |= (( 1 << PB0 )| ( 1 << PB1 )); // Motor an Port PB0 und PB1 aus }
Jetzt zu meiner Frage, der Motor dreht sich , aber leider reagiert er auf keine Wertänderungen bei MotorSpeed! nur bei 1 und 1024 bleibt er stehen, aber bei allen werten dazwischen dreht er immer gleich.Code:int main(void) { pwm2(); // Endlosschleife while (1) { MotorSpeed( 64, 128); } }
Was mache ich falsch??
Danke
Gruß
Fostie







Zitieren

Lesezeichen