Hallo Alle,
meine Fast-PWM läuft langsamer als berechnet.
Umgebung: mega328/20 MHzNach meiner Rechnung (Taschenrechner) ergibt das also 20Mio Maschinenzyklen div Prescaler8 div 255-PWM-TOP 9803 PWM-Zyklen. Der Oskar zeigt mir aber nur rund 5000 PWM-Zyklen (rund 10 bei 10*0,2ms/DIV). Kann mir bitte jemand ne richtige Rechnung aufmachen?Code:// ============================================================================== = // == PWM-Routinen zur Motoransteuerung void TC1PWM_init(void) //Init Timer/Counter1 für Erzeugung des PWM-Signals { // TCCR1A |= (1<<COM1A1)|(1<<COM1B1); //Clear/set OC1A/OC1B on Cmp Match, S132 // OC1A/OC1B ist Port PB1/B2 TCCR1A |= (1<<WGM10)|(1<<WGM12); // Fast PWM, TOP=0xFF=dez255, doc S133 TCCR1B |= (1<<CS11); // Prescaler ist clk/8 doc S135 TIMSK1 &= ~(1<<OCIE1A)|(1<<OCIE1B); // T/C1 Oput CmpA+B Match intrrpt dsabld TIMSK1 &= ~(1<<TOIE1); // T/C1 Ovrflw intrrpt dsabled ~S137 OCR1A = 0; // PWM auf Null setze OCR1B = 0; // PWM auf Null setzen } // ============================================================================== = void setPWM1_re (uint8_t speed) // Geschwindigkeit Motor1, Mot12 (rechter) {OCR1A = speed;} // PWM auf PB1/OC1A // ============================================================================== = void setPWM2_li (uint8_t speed) // Geschwindigkeit Motor2, Mot34 (linker) {OCR1B = speed;} // PWM auf PB2/OC1B // ============================================================================== =
Danke im Voraus.







Zitieren

Lesezeichen