Hallo,
habe den ganzen Tag versucht herauszufinden, wie man einen Getriebemotor (4,5-15V, 1A) über PWM ansteuern kann. Ich habe das RNControl 14 von roboterhardware der einen L293D integriert hat. Es gelingt mir, über die Motorklemmen Spannung auszugeben. Leider kann ich immer nur 0V oder 12 V an den Motor geben - ich möchte das gerne regelbar machen.

Im folgenden Code habe ich die von mir benutzten Befehle für das PWMen dargestellt:

Code:
#define PWM_init             DDRD= _BV(PD4) | _BV(PD5);
#define upcounting           TCCR1A = _BV(COM1A0) | _BV(COM1A1)    
#define downcounting         TCCR1A |= _BV(COM1A1)                
#define T_prescaler_256      TCCR1B |= _BV(CS12)
#define T_stop               TCCR1B = ~_BV(CS12) & ~_BV(CS11) & ~_BV(CS10)     

void main(void){
         ....
   outp(0xFF, DDRC); // Alle Ports von C als Output setzen
	outp(0xFF, PORTC); // Alle Ports 0
	outp(0xFF, DDRD); // Alle Ports von D als Output setzen
	outp(0xFF, PORTD); // Alle Ports 0


	PWM_init;
	upcounting; 

      sbi(PORTC, 6);//Drehrichtung
		cbi(PORTC, 7);//Drehrichtung
      sbi(PORTD, 4);
		                       //Timer2_stop;
		                      //Timer2_prescaler_256;
      for(i = 0; i > 1023; ++i){
		OCR1B= i;
		OCR1A= i;
		ms_sleep(30);
                }
         ....
}
Wenn ich sbi(PORTD, 4) setze, dann liegen gleich 12V an den Klemmen. Lasse ich eben diesen Befehl weg, dann messe ich nur zwischen 35 bis 75 mV und der Motor macht gar nichts.

Ich habe im Manual vom Atmega32 nachgeschaut, werde aber nicht richtig schlau daraus. Vielleicht kann mir jemand einen Tipp geben.

Für Eure Mühe schönen Dank!

Gruß!