Использование Atmega 128 в качестве логических единиц реального времени
В настоящее время я занимаюсь разработкой простой модели цифрового пианино. Я использовал тонны декодеров и А для создания своего проекта. В симуляции эти AND связаны и включают внешнее int0. Так что, если какая-либо кнопка нажата, это запускает функцию воспроизведения кнопки независимо от других процессов. Но в PCB и пайке я нахожу эти AND довольно раздражающими. Поэтому я пытаюсь опустить эти AND, изменив мой код. Есть ли какие-либо программные прерывания, которые запускаются автоматически, если какой-либо один вход достигает нуля? Или FPGA-подобный компонент в Atmega 128? или я должен написать код сканирования кнопок в каждой строке моего основного кода (я отсканировал таблицу данных, но не достиг успеха)
74148 - кодировщик с 8 по 3
2 ответа
Хорошо, если ваш тайминг "медленный", вы можете легко внедрить диод И, заменив все И на диоды 1n4148 (катод на 74148) и уникальный подтягивающий резистор на все аноды... когда любой вход приводит диод к GND это снесет ПРЕРЫВАНИЕ на авр...
при правильном подтягивании (4.7k) вы можете достичь времени отклика 10us (может и больше)
С большим количеством ключей вы можете использовать серию параллельных сдвиговых регистров (например, 74HC(T)165 ... 8 ключей на единицу) - последовательно соединенные друг с другом последовательности - и считывать их значения сразу каждые 10 мс или так, используя интерфейс SPI ATMega128.