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)
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;
}
Vielen Dank für eure Hilfe.
Gruß
Stefan