Hallo,
ich komme nur langsam voran. Inzwischen ist zwar das Fahrwerk meines Roboters fertig - die Prorammierung des RN-Control Boards klappt noch nicht.
Zwar lässt sich inzwischen die Richtung regeln - nicht jedoch die Geschwindikeit.![]()
Also ich verstehe das doch richtig:
Ausgang PD4 und PD5 regeln die Geschwindigkeit? Also auf 0 setzen => Roboter steht.
OCR1A und OCR1B geben den "Anteil" der Rechteckspannung der 1 ist!? Also 0 => keine Ammplitude => Motoren stehen
Richtig? Wenn ja warum funktioniert das Proramm nicht (Hier der Motortreiber)
Vielen Dank für eure Hilfe.Code:#include <avr/io.h> #include <avr/io.h> #include <avr/interrupt.h> #include <avr/signal.h> #include "motor.h" void MotorInit(void) // Initialisierung der Motoren { DDRD |= (1<<PD4) | (1<<PD5); // PWM Pins als Ausgang festlegen (links/rechts) // Motor Ports für die Richtung festlegen (als Ausgänge) DDRC |= (1<<PC6) | (1<<PC7); // 6=Motor 1 Kanal 1 7= Motor 1 Kanal 2 DDRB |= (1<<PB0) | (1<<PB1); // 0=Motor 2 Kanal 1 1= Motor 2 Kanal 2 // PWM einstellen 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 PORTD &= ~(( 1 << PD5 )| ( 1 << PD4 )); // Motor an Port PD4 und PD5 aus OCR1A=1; // Mindestzeit für PWM1 OCR1B=1; // Mindestzeit für PWM2 // und in Ausgangswerte setzen } /* Motor Geschwindigkeit verändern */ void MotorSpeed(unsigned int left_speed, unsigned int right_speed) { PORTD &= ~(( 1 << PD5 )| ( 1 << PD4 )); // Motor an Port PD4 und PD5 aus OCR1A = left_speed; OCR1B = right_speed; PORTD |= (( 1 << PD5 )| ( 1 << PD4 )); // Motor an Port PD4 und PD5 an } /* Motoren anhalten */ void MotorStop (void) { // PORTD &= ~(( 1 << PD5 )| ( 1 << PD4 )); // Motor an Port PD4 und PD5 aus OCR1A = 0; OCR1B = 0; } /* Motor Richtung festlegen (FWD; BWD) */ void MotorDir(unsigned char left_dir, unsigned char right_dir) { PORTB &= ~((1 << PB0) | (1 << PB1)); PORTB |= right_dir; if (left_dir == FWD) left_dir = (1 << PC6); else left_dir = (1 << PC7); PORTC &= ~((1 << PC6) | (1 << PC7)); PORTC |= left_dir; }
Gruß
Stefan







Zitieren

Lesezeichen