Это будет мало информативно.
Принцип прерываний в AVR следующий.
Если возникает условие для какого-либо прерывания, то устанавливается соответствующий флаг/бит. Если прерывания разрешены, то вызывается обработчик прерывания, который сбрасывает установленный флаг. Пока выполняется обработчик, прерывания запрещены, они разрешатся командой RETI. Либо их можно разрешить внутри обработчика соответствующей командой, при необходимости. Если прерываний несколько, то приоритет у прерывания с меньшим адресом вектора перехода.
Таким образом прерывания не теряются. Но! Можно потерять количество событий, если за время запрета прерываний их будет несколько.
Если в программе используются прерывания, то запрещать их можно на максимально короткое время. Как пример, атомарные операции, когда запрет на прерывание длится несколько команд, необходимых выполнить неразрывно.
Делать прерывание от кнопки, без аппаратного подавления дребезга, ИМХО не логично. Всё равно придётся анализировать временные интервалы, чтобы отделить дребезг от полезной информации.
А вы сталкивались с новыми Celeron G6900? Я-то с ними не сталкивался, только видел тесты в инете. По идее, и такого должно хватить:) В игры-то не играю.
Recommended Posts