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

 
 
 
Reply to this topicStart new topic
> TMS320F2811. Программа зависает намертво., Перепробовал многое. Кто-нибудь сталкивался с подобным?
DmitriyX
сообщение Jun 21 2007, 09:47
Сообщение #1


Участник
*

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



Есть проект, написанный на F2811 процессоре. Реализовано на базе DSPBIOS. Программой используется в процессоре: GPIO, CAPTURE, PWM, SPI. Работают прерывания от SPI и от CAPTURE, используется диспетчер DSPBIOS для обработки. Присутствует три таска. Когда работает таск, управляющий ШИМ на основе результатов вычисления в прерывании от CAPTURE, наблюдается хаотическое зависание, т.е. зависание через разные промежутки времени: может через 30 сек, может через 10 мин. После зависания не запускается даже PRD_func, а программный счетчик находится на функции FXN_f_self_loop, ассемблерная инструкция которой прыгает сама на себя бесконечно.
Кто-нибудь сталкивался с проблемой, когда программа прыгает на FXN_f_self_loop? Кто-нибудь знает возможные причины попадания программы на эту функцию?

Спасибо заранее
Go to the top of the page
 
+Quote Post
_Andu_
сообщение Jun 22 2007, 09:50
Сообщение #2


Частый гость
**

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



что-то похожее у меня. задал вопрос в соседнем форуме Процессоры - Processors. если разберетесь что было у вас раскажите.
Go to the top of the page
 
+Quote Post
DmitriyX
сообщение Jun 25 2007, 16:38
Сообщение #3


Участник
*

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



Цитата(_Andu_ @ Jun 22 2007, 13:50) *
что-то похожее у меня. задал вопрос в соседнем форуме Процессоры - Processors. если разберетесь что было у вас раскажите.


Причина зависания стала понятна, найден способ прикрыть эту дыру, но не найден способ полного устранения источника проблемы. На FXN_f_selfLoop программа прыгала у меня в случае когда возникало прерывание, для которого не был назначен обработчик в DSPBIOSe, стояло по умолчанию HWI_unused. Возникало прерывание PIE_INT_5_1, согласно документации, это прерывание при периоде таймера GPT4 в Event Manager B. Самое интересное, что я это прерывание никак не разрешаю. Прерывание возникает даже если таймер GPT4 заблокирован и его значение не изменяется. Проблема решилась установкой обработчика прерывания вместо HWI_unused на пустую функцию возврата, содержащую лишь PieCtrlRegs.PIEACK.bit.ACK5 = 1 (работает без диспетчера).
Не ясно, откуда возникает прерывание от таймера, который во-первых стоит, а во-вторых прерывания от него запрещены. Прерывание от GPT4 возникает в среднем раз в 10 минут. Все это происходит при частоте прерываний модуля Capture 52 КГц. Если понизить частоту до 3 КГц, то ни одного ложного прерывания не наблюдалось. Тоже интересный факт.
Не исключено, что время от времени и другие ложные прерывания могут возникать. Поэтому для неиспользуемых прерываний вместо HWI_unused буду ставить FXN_f_nop с использованием диспетчера или что-нибудь подобное.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 7th July 2025 - 23:51
Рейтинг@Mail.ru


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