#include int main(void) { // 1. Set PB1 (OC1A) as output DDRB |= (1 << PB1); // 2. Fast PWM mode (WGM13:0 = 14) TCCR1A = (1 << COM1A1) | (1 << WGM11); TCCR1B = (1 << WGM12) | (1 << WGM13); // 3. Prescaler = 8 (start timer) TCCR1B |= (1 << CS11); // 4. Set TOP value (frequency) ICR1 = 19999; // ~50 Hz (good for visible LED dimming demo) // 5. Initial duty cycle OCR1A = 0; while (1) { // Increase brightness for (uint16_t i = 0; i < 2000; i++) { OCR1A = i * 10; // increase duty for (volatile uint32_t d = 0; d < 5000; d++); // small delay } // Decrease brightness for (int16_t i = 2000; i > 0; i--) { OCR1A = i * 10; for (volatile uint32_t d = 0; d < 5000; d++); } } }