Как посчитать правильно. При частоте на 1 000 000 Гц.
p.s.
Нужно наподобие АЦП (не подходит) только, в двоичном виде 1 или 0.
Читать данные с потока, на порту. И если данные совпали то делать действие.
Код: Выделить всё
loop:
in r16, porta; // Чтение - 1 такт
st y+, r16; // Запись в память - 2 такта
rjmp loop; // Бесконечный цикл - 2 такта.
// Реально, бесконечный цикл. Без проверок и возможности выхода.
Код: Выделить всё
// Предварительно:
ldi r17, 0x20; // 0x0200 - 1024 байта памяти выделено под буфер захвата. Предполагается, что буфер памяти расположен в адресах 0x0000..0x1F00
loop:
in r16, porta; // Чтение - 1 такт
st y+, r16; // Запись в память - 2 такта
cpse r17, r29; // Сравниваем верхний байт регистра Y - 0x??xx со значением (0x20), установленым ранее. 1 такт, если не совпадает, иначе - 3 такта (инструкция перехода занимает 2 байта).
rjmp loop; // Вернуться обратно на метку - 2 такта.