//**************************************************************** //*** Diese Methode startet den 16-Bit-timer3 im fast PWM Mode *** //*** Es muß die PWM-Intervalldauer und die länge *** //*** des initialen PWM-pulses angegeben werden. *** //**************************************************************** void start_16Bit_Timer3_In_FAST_PWM_Mode(short TOPValue,short startPWMInterval){ TCCR3B = TCCR1B & 0xF8; //CS10, CS11, CS12 auf 0 ==>timer erst abschalten //Einstellen des PWM-Modus (S.137) //Modus Nr.14 Fast PWM TOP=ICR3 TCCR3B = TCCR3B | 0x18; TCCR3A = TCCR3A & 0xFE; TCCR3A = TCCR3A | 0x02; //setzen des TOP-Wertes //höchstwert den der Timer erreicht //danach weiter bei 0 ICR3 = TOPValue; //auswählen eines Pins (S.135)und //setzen der Initialen Pulsweite (S.140) //nicht invertierter Modus an PIN TCCR3A=TCCR3A | 0x80; TCCR3A=TCCR3A & 0xBF; //länge der Highperiode OCR3A = startPWMInterval; //PIN zur Ausgabe konfigurieren DDRB = DDRB | 0x20; //Ansonsten kommt es beim setzen eines Prescalers // sofort zu einem Match!! if((TCNT3H==0x00)&&(TCNT3L==0x00)){ TCNT3H = 0x00; TCNT3L = 0x01; } //prescaler TCCR3B = TCCR3B | 0x02;//nur CS11 ==>achtel der taktfrquenz }