Alex B. (09.06.2008 12:21, просмотров: 228) ответил 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 читать, там все подробней расписано =) - по ссылке
Согласуйте импеданс!