ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
8 сентября
94309
Vladimir Ljaschko (14.07.2007 17:11, просмотров: 19642)
Проблема переделки проекта с x86 на ATMEGA128, связанная с отсутствием приоритетов прерываний (дохтуром на телесисах навеяло). Прибор с механическими движущимися частями. Вся поддержка механики происходит в прерываниях от четырех таймеров - 1 мс, 10 мс, 100 мс, 1 с. Приоритеты соответствующие. Все прочие прерывания тоже используются (UART, RTC) всего восемь. Микропроцессор от NEC снят с производства пять лет назад, складские запасы заканчиваются, с другими микросхемами тоже проблемы. Предполагаю переделать на AVR, во всяком случае в деталях рассмотреть эту возможность. Процессы в основном цикле достаточно сложные и затянуты по времени - больше 200 мс, и флагами передавать реально только событие 1 с. Получается, что вполне реальна ситуация четырех-пяти вложенных прерываний (таймеры + UART). Так вот, вопрос - получается, если я не хочу сильно менять структуру проекта, что теперь нужно после входа в каждое прерывание - "вручную" прочитать и запомнить существующие маски прерываний, - оставить разрешения только тех прерываний, которые определены, как более приоритетные - разрешить прерывание контроллера. При выходе нужно восстановить маски прерываний. 1. Ничего не забыл? Будет мне счастье? 2. С другой стороны, там еще более 40 линий ввода-вывода, и памяти 32К. Если использовать шину, то выводы будут заняты, порты нужно расширять. Может, сразу на АРМ какой ориентироваться?