Технический форум по робототехнике.
Diablo » 18 апр 2012, 19:09
Добрый вечер!
Помогите пожалуйста разобраться со следующей проблемой:
Не работают прерывания на МК LPC2294. Точнее работают, но только когда гружу прошивку через JTAG. Если после записи перезагрузить МК, то прошивка перестаёт работать (программу записываю во флэш). Если шить утилитой от Phillips, то также не работает.
Код настройки прерываний взят из примеров к данному микроконтроллеру, поставляемых вместе с IAR.
Может быть кто уже сталкивался с похожей проблемой?
Заранее благодарю за ответ!
Romikgy » 19 апр 2012, 20:29
так джетагом проверь записалось ли во флеш , и нет ли кода , на ремап в озу....
Diablo » 19 апр 2012, 20:36
Все настройки проекта настроены на запись и выпонение программы из Flash. Под JTAGом смотрел - код во флэш памяти, все обработчики находятся по нужным адресам и когда по шагам выполняю программу всё работает идеально, но стоит только ребутнуть контроллер - работа прошивки прекращается. Я уже не знаю в чем может быть дело

Romikgy » 19 апр 2012, 20:44
а с clock ами все гуд запущены для прерываний? нет ли выполнения без проверки статусов?
Diablo » 19 апр 2012, 20:55
С таймером тоже вроде все норм, запускал, проверял, тикает. Код брал из книжек и из примеров, так что он должен быть правильным.
Интересно, что происходит после ребута, можно ли посмотреть JTAGом куда попадет программа после сброса?
Romikgy » 19 апр 2012, 21:35
да установить брекпоинт....
а насчет правильности .... и в книгах бывают ошибки и даже в даташитах....
Добавлено спустя 3 минуты 34 секунды:
плюс у чипа есть бутлоадер .... он выключен ?
Diablo » 19 апр 2012, 21:41
Спасибо, завтра попробую посмотреть что происходит после сброса.
Бутлоадер проверял, тоже сначала подумал, что программе не передаётся управление, но он оказался выключен.
Romikgy » 19 апр 2012, 21:52
плюс еще pll как настроен посмотри
Diablo » 19 апр 2012, 21:58
PLL пока убрал, микроконтроллер работает на частоте 10 МГц от внешнего кварца.
Romikgy » 19 апр 2012, 22:20
имхо надо корректно настраивать pll в любом случае....
Diablo » 20 апр 2012, 19:52
Смотрел JTAGом, после рестарта содержимое регистра MEMMAP = 3, а нужно чтобы был равен 1. Т.е. вектора переотображаются во внешнюю память.
Но, насколько мне известно ремап происходит для всей таблицы векторов исключительных ситуаций (с 0 по 0х1с адреса) и почему не работает прошивка в данном случае понятно, но почему она работает когда я отключаю прерывания?