Frostie
19.04.2006, 00:55
Hallo,
ich habe folgendes Programm für meinen ATMEGA8:
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
}
Das main siht in etwa so aus:
int main(void)
{
pwm2();
// Endlosschleife
while (1)
{
MotorSpeed( 64, 128);
}
}
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.
Was mache ich falsch??
Danke
Gruß
Fostie
ich habe folgendes Programm für meinen ATMEGA8:
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
}
Das main siht in etwa so aus:
int main(void)
{
pwm2();
// Endlosschleife
while (1)
{
MotorSpeed( 64, 128);
}
}
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.
Was mache ich falsch??
Danke
Gruß
Fostie