So wird wenigstens noch eine kleine Rampe beachtet, meine Lösung war da radikaler:
Code:
// Achtung! Die PWM-Werte werden hier OHNE Rampe verändert! 
void setMotorPWM(uint8_t power_links, uint8_t power_rechts) 
{ 
extern uint8_t mleft_ptmp, mright_ptmp; 

   if(power_links > 210) power_links = 210; 
   if(power_rechts > 210) power_rechts = 210; 
   mleft_power=mleft_ptmp=power_links; 
   mright_power=mright_ptmp=power_rechts; 

   OCR1BL = power_links; 
   OCR1AL = power_rechts; 

   if(power_links || power_rechts) 
      TCCR1A = (1 << WGM11) | (1 << COM1A1) | (1 << COM1B1); 
   else 
      TCCR1A = 0; 
}
PWM wird direkt gesetzt (und die nötigen Lib-Variablen werden angepasst), ohne Rücksicht auf Verluste. Mit allen Vor- und Nachteilen die diese Ansteuerung mit sich bringt.

Gruß

mic