ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
19 мая
122307 Топик полностью
Alex B. (09.06.2008 12:21, просмотров: 211) ответил abivan на PIC24F MPLAB C30 тестовая прога с ISR. Что за warning?
надо прочитать пункт 8.10 из доки на последнюю версию компилера 3.10 http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=2575
в двух словах: констовые переменные размещаются в программной памяти, а обращение к ним идет через PSV (отображение программной памяти на память данных). Часть ПЗУ размером в 32КБ, которая отображается в ОЗУ выбирается регистром PSVPAG. До версии компилятора 3.0 функции и обработчики прерываний не сохраняли PSVPAG, т.е. по большому счету общий размер констовых переменных мог быть не более 32КБ. Начиная с 3.0 к функции или обработчику прерываний можно добавить атрибут auto_psv: void __attribute__((interrupt, auto_psv)) myISR() { /* This function can reference const variables and string literals with the constants-in-code memory model. */ } В этом случае значение PSVPAG сохраняется при входе в функцию, компилер переключает PSVPAG куда надо (если надо), а при выходе PSVPAG восстанавливается. Естественно, вход в прерывание будет дольше. А вот макрос _ISR до сих пор не исправили, отсюда и варнинг, который говорит о том, что можешь промахнуться мимо констовых массивов. Кроме PIC24DS нужно еще и reference manual читать, там все подробней расписано =) - по ссылке
Согласуйте импеданс!