Код: Выделить всё
#include <avr/io.h>
#include <avr/interrupt.h>
void setup()
{
TCCR0A = 0x10; // режим CTC
TCCR0B = 0x01; //предделитель тактовой частоты CLK/1
TCNT0 = 0; // начальное значение счётчика
OCR0A = 100; // начальное значение регистра совпадения A
DDRB |= (1 << PB3); // output на PB3
PORTB &= ~(1 << PB3); // низкий уровень на PB3
//устанавливаем бит разрешения прерывания 0-ого счетчика по совпадению с OCR0A
TIMSK0 |= (1 << OCIE0A);
sei();// Разрешаем прерывания глобально
}
byte a = 0;
ISR(TIM0_COMPA_vect) // обработка прерывания при совпадении счётчика с OCR0A
{
if (a == 0)
{
PORTB |= (1 << PB3); // высокий на PB3
++a;
}
else
{
PORTB &= ~(1 << PB3); // низкий на PB3
a = 0;
}
}
void loop()
{}

