#define F_CPU 16000000UL
#include <avr/io.h>
#include <util/delay.h>
int main(void)
{
uint16_t duty, TOP;
DDRB |= (1<<5); // By default, PORTB.7 is OC0A
TOP = 30000;
ICR1 = TOP;
// Prescalar = 1
while (1) {
for(duty=0; duty<TOP; duty++) {
TCCR1A |= (1 << COM1A1) | (1 << COM1A0) | (1 << WGM11);
TCCR1B |= (1<<WGM13) | (1<<WGM12) | (1 << CS10) | (1 << CS12);
OCR1A = duty; /*increase the LED light intensity*/
_delay_ms(5);
}
for(duty=TOP; duty>0; duty--) {
TCCR1A |= (1 << COM1A1) | (1 << COM1A0) | (1 << WGM11);
TCCR1B |= (1<<WGM13) | (1<<WGM12) | (1 << CS10) | (1 << CS12);
OCR1A = duty; /*decrease the LED light intensity*/
_delay_ms(5);
}
}
return 0;
}