Вход
Наше всё
Теги
codebook
无线电组件
Поиск
Опросы
Закон
Пятница
22 ноября
О смысле всего сущего
0xFF
Средства и методы разработки
Мобильная и беспроводная связь
Блошиный рынок
Объявления
Микроконтроллеры
PLD, FPGA, DSP
AVR
PIC
ARM, RISC-V
Технологии
Кибернетика, автоматика, протоколы
Схемы, платы, компоненты
Микроконтроллеры PIC
340046
Топик полностью
abivan
(11.07.2012 08:56, просмотров: 195)
ответил
fk0
на
PIC18. Зачем hitech-C (STD версия 9.51PL2) сохраняет TABLAT в прологе обработчика прерываний???
вызов ф-ий или switch в прерывании используешь?
#define SWITCH(x) for(;;) #define CASE(x) if(MyVar==x) #define DEFAULT SWITCH(MyVar){ CASE(ADC_PHASE_CLBR_GP_NULL){ braek; } DEFAULT { break; } }
Ответить
Это да, я уже догнал, что оптимизация switch в таблицу -- жуть. И поборол. Но TBLPTR всё равно используется для доступа к константам в ROM. Для этого достаточно сохранить TBLPTRH и TBLPTRL. А TABLAT-то зачем???
-
fk0
(11.07.2012 11:25
)
Подсказка. Во время записи в FLASH, "movwf TABLAT" выполнил, а следующие за ним копирование в holding register "tblwt+*" - не успел, попал в прерывание.
-
PIC32
(11.07.2012 12:29 - 13:09
)
А... забыл, что ещё есть инструкция TBLRD и TABLAT ни разу не индексный регистр. Ниже что сохраняется для самого быстрого и приоритетного прерывания:
fk0
(524 знак., 11.07.2012 15:18
)