реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Проблема с VIC в LPC2478, Непонятная ситуация с зависанием
Dog Pawlowa
сообщение Mar 19 2009, 14:17
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



LPC2478. Третий раз наблюдаю такую фигню при отладке - контроллер висит в прерывании UART, при этом в VICADRESS находится вектор прерывания по таймеру.
Инициализация прерывания таймера:
Код
    T0IR_bit.MR0INT = 1;  // clear pending interrupt
    VIC_SetVectoredIRQ(Timer0IntrHandler,0,VIC_TIMER0);
    VICINTENABLE |= 1UL << VIC_TIMER0;
    T0TCR_bit.CE = 1;     // counting Enable


Инициализация прерывания уарт:
Код
__disable_interrupt();
       VIC_SetVectoredIRQ(UART0Interrupt,1,VIC_UART0);
       VICINTENABLE |= 1UL << VIC_UART0;
    U0IER=1; // receiver only   //      U0IER=2; transmitter only
    __enable_interrupt();


В конце обоих обработчиков VICADDRESS обнуляется, поэтому ситуация, когда в VIC записан один вектор, а контроллер висит в другом прерывании, мне непонятна.
Причем устройства работают днями, отправка в терминал идет по прерываниям, и ничего не сбоит. Эта ситуация наблюдается очень редко, только при старте под JTAGом.
Забить или у меня что-то не то?


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Mar 19 2009, 14:34
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



В отладчике регистры VIC'а не открыты? А то ему ведь все равно, кто его читает - процессор или дебаггер.
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Mar 19 2009, 16:17
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(aaarrr @ Mar 19 2009, 18:34) *
В отладчике регистры VIC'а не открыты? А то ему ведь все равно, кто его читает - процессор или дебаггер.

Открыты, не могу понять, куда смотреть sad.gif
Криминала в регистрах не вижу.


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Mar 19 2009, 16:29
Сообщение #4


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(Dog Pawlowa @ Mar 19 2009, 18:17) *
Открыты, не могу понять, куда смотреть sad.gif
Наоборот, не смотреть. Скорректируйте .ddf, чтобы в окне регистров VIC не отображался VICVectAddr. Вы входите в прерывание, попадаете на точку останова, дебаггер считывает этот регистр чтобы показать вам, и это чтение приводит к записи в VICVectAddr вектора следующего прерывания. А то, которое он вам показал будет потеряно.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 03:03
Рейтинг@Mail.ru


Страница сгенерированна за 0.03016 секунд с 7
ELECTRONIX ©2004-2016