|
во всех остальных расставлять рулёжку битами разрешения/запрещения этого прерывания? Причём не просто запрета/разрешения, а сохранения текущего состояния, запрета, потом его восстановления, так как не факт, что какое-либо прерывание в системе всё время включено.
Например, при организации UART-передачи по data register empty обработчик прерываний перед запихиванием последнего байта из буфера в UDR может сам себя запрещать (т.е. после передачи последнего байта флаг UDRF взведётся, но прерывания не произойдёт), а PacketSend потом помещать пакет в буфер и опять разрешать UDRE.
Предложенный подход с кросс-связями между обработчиками породит такое количество "левых" взаимосвязей в программе, убойный эффект от которого (на устойчивость программы) превысит возможный эффект от подходов "абсолютно все переменные в программе, включая счётчики циклов - глобальные и параметры в процедуры передаются только через них".
Т.е. себе дешевле будет взять процессор с более приличной системой прерываний, если система достаточно нагружена и требует для уменьшения времени реакции приоритетной системы прерываний :-)
(не "действительно приоритетной", а просто "приоритетной", коей у AVR просто нет).
E-mail: info@telesys.ru