Введение сумбурное, идеи в макросах интересные. Непонятности во введении: Запрещение прерываний
- Такое решение нельзя использовать в системах с вытесняющей RTOS (там есть свои методы).
Почему нельзя? Какие другие магические методы ОС запретят прерыванию делать _LATA0 = ~_LATA0 ?
Критическая секция
Критическая секция - это часть кода, в которой запрещено переключение контекста. Чаще всего это означает запрещение прерываний и ...
Если прерывания не запрещаются, что мешает прерыванию сделать _LATA0 = ~_LATA0 и чем поможет в этом случае критическая секция? Если они таки запрещаются, то чем критическая секция, которая (возможно) делает еще какие-то дополнительные действия, лучше простого запрещения/восстановления прерываний?
Далее по тексту:
Условный оператор ? :
Для того чтобы реализовать чтение битового поля, применен тернарный оператор ?. Если тип доступа к структуре равен BFA_RD, то макрос генерирует следующее выражение:
Собственно тернарный оператор кроме как в заголовке больше нигде не встречается.