ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
28 ноября
651999 Топик полностью
Vit (10.02.2016 17:45, просмотров: 78) ответил VL на Три сигнала одного GPIO вызывают перерывание. Анализ состояния выводов с запоминанием есть, но прерывания теряется уж очень часто. Общие рекомендации есть? Для теста подаю один сигнал на все входы.
ловил на MSP430 делал в обработчике прерываний примерно так: 1) читаем входы в переменную 2) читаем маску полярности в переменную 3) читаем флаги в переменную 4) чистим регистр флагов //здесь - п.3-п.4 могут появиться необработанные запросы, т.е. потеряться флаги 5) переменную состояния входов XOR-им со входами 6) зачищаем по И переменную состояния входов с переменной маски полярности (чистим от инвалидных изменений) 7) зачищаем по И переменную состояния входов с побитово инвертированным значением из регистра флагов (на предмет необслуживания аппаратно подхваченных за это время флагов) 8) зачищаем по И переменную состояния входов с регистром индивидуальных разрешений прерываний порта ( выбиваем необслуживаемые прерывания) 9) в переменную, хранящую флаги из п. 3, заносим по побитовому ИЛИ переменную состояния входов из п. 8 10) обслуживаем запросы прерываний согласно переменной из п. 10. Остальные (которые есть в регистре флагов) обслужатся по следующему входу в обработчик. вроде как п. 2 можно выбросить, а в п. 6 можно зачищать прямо с регистром полярностей, но было сделано как описал. в EFM32 эту левизну, похоже, не положили:) - выглядит так, что там буферизация/синхронизация чтения триггеров проложена.