#define F_CPU 16000000UL
#include <avr/io.h>
#include <util/delay.h>
void T1_PWM(int dutyCycle);
static uint16_t TOP = 3124;
int main(void) {
DDRB = (1<< PB5);
uint16_t duty=1;
while (1) {
for(duty=0; duty<100; duty++) {
T1_PWM(duty);
_delay_ms(10);
}
for(duty=100; duty>0; duty--) {
T1_PWM(duty);
_delay_ms(10);
}
}}
void T1_PWM(uint16_t dutyCycle) {
TCCR1A |= (1 << COM1A1) | (1 << COM1A0) | |(1<<WGM11)| (1<<WGM10);;
TCCR1B |= (1 << CS10) ;
OCR1A = (uint16_t) (dutyCycle/100.0)*TOP;
ICR1 = TOP;
}