ups, du hattest recht. In MotorDir hatte ich PortD angesprochen.
Ist behoben und ich habe die PWM PINs in MotorSpeed eingeschaltet.
Das Ergebnis: Es tut sich immer noch nichts...
Hier die veränderte Motor.c
Kann jemand helfen?Code:/* Motortreiber für das RN-Control Board mit 2 Getriebemotoren Der Treiber ist an den Treibern für den ASURO angelehnt by Stefan 18.09.2005 */ #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 = PIND &~ (( 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 = PIND &~ (( 1 << PD5 )| ( 1 << PD4 )); // Motor an Port PD4 und PD5 aus OCR1A = left_speed; OCR1B = right_speed; PORTD = PIND | ( 1 << PD5 )| ( 1 << PD4 ); // Motor an Port PD4 und PD5 an } /* Motor Richtung festlegen (FWD; BWD) */ void MotorDir(unsigned char left_dir, unsigned char right_dir) { PORTB = (PORTB &~ ((1 << PB0) | (1 << PB1))) | right_dir; if (left_dir == FWD) left_dir = (1 << PC6); else left_dir = (1 << PC7); PORTC = (PORTC &~ ((1 << PC6) | (1 << PC7))) | left_dir; } /* Motoren Stoppen */ void MotorStop (void) { PORTD = PIND &~ (( 1 << PD5 )| ( 1 << PD4 )); // Motor an Port PD4 und PD5 aus OCR1A = 0; OCR1B = 0; }
Danke
Gruß Stefan







Zitieren

Lesezeichen