ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
29 ноября
1317354 Топик полностью
Nikolay_Po (07.06.2023 22:12, просмотров: 132) ответил mse homjak на Гы-гы... У CH32VXXX(а, судя по всему, у всех R-V) если влететь в прерывание и не сбросить флаг, программа тормозится полностью, занимаясь исключительно всовыванием-высовыванием в обрабоччик. Хотя, дажэ у 8-битников после возврата из прерывания гарантированно выполняеца одна команда в бэкграунде. Дажэ не знаю, что лучше...
Всегда тщательно продумывал обработчик, чтобы: а) гарантированно сбросить флаг и освободить ЦП; б) Не входить в прерывание слишком часто. И всегда контролировал фактическую загрузку, в первую очередь, осциллогрфом, дрыгая ножкой из прерывания и из главного цикла. Поэтому, честно говоря, удивился, что у atMega, например, одна команда исполняется (как понял, там принудительно снимается флаг прерывания при выходе). У PIC24F, если не ошибаюсь, если не снять флаг, вход в 

прерывание произойдёт снова, без выполнения кода ниже приоритетом.

Другими словами, не задумывался и исходил из контроля загрузки ЦП на этапе проектирования. Но, считаю, выполнение по одной команде между прерываниями при постоянно активном прерывании полезно - позволяет достигать 100% насыщения прерываний, при этом гарантируя выполнение главной программы, пусть и с минимальной скоростью. Вывести программу из нештатной ситуации хватит.