#include <avr/io.h>
#include <util/delay.h>

#ifndef F_CPU
#define F_CPU 16000000UL
#endif

void init_pwm()
{
    // Set OC0A (PD6, D6 on Arduino nano) as output
    DDRD |= (1 << DDD6);
    // duty cycle (0 - 255)
    OCR0A = 0;
    // Clear OC0A (PD6, D6 on Arduino nano) on compare match, set on bottom
    // ↓ Bottom  ↓ OCR0A
    // ──────────┐         ┌──────────┐
    //           └─────────┘          └─────────
    // ↑ 0                 ↑ 255
    TCCR0A |= (1 << COM0A1);
    // Set mode to Fast PWM
    TCCR0A |= (1 << WGM01) | (1 << WGM00);
    // Set prescaler to 8
    TCCR0B |= (1 << CS01);
}

int main()
{
    init_pwm();

    // loop forever
    while (1)
    {
        OCR0A++;
        _delay_ms(10);
    }
    return 0;
}
nano:12
nano:11
nano:10
nano:9
nano:8
nano:7
nano:6
nano:5
nano:4
nano:3
nano:2
nano:GND.2
nano:RESET.2
nano:0
nano:1
nano:13
nano:3.3V
nano:AREF
nano:A0
nano:A1
nano:A2
nano:A3
nano:A4
nano:A5
nano:A6
nano:A7
nano:5V
nano:RESET
nano:GND.1
nano:VIN
nano:12.2
nano:5V.2
nano:13.2
nano:11.2
nano:RESET.3
nano:GND.3
led1:A
led1:C