Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Отловить причину oveerun error на USART SAM7X
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Dron_Gus
Собственно сабж. К USART1 AT91SAM7X256 подключен модем SIM508. В моменты большой нагрузки (прием большого объема данных по GPRS) случается overrun. Порт работает на 115200, обработчик прерывания короткий - запись в кольцевой буфер. Кроме того из прерываний крутится еще один обработчик USART0 и FreeRTOS'овский шулдер на PIT. Все остальное крутиться без прерываний. Отключение всего что можно отключить результатов не дало. Дело осложныется наличием PowerPack FS в виде библиотеки, и что она там внутри делает непонятно. Может она запрещает прерывания и надолго.



Может быть есть какие-то стандартные методы отлавливания таких глюков? Сам уже несколько дней с этим бьюсь...



Пытался только что отловить момент взведения бита overrun с помошью "железной" watchpoint. Не прокатило. Похоже они отлавливают только обращения со стороны ядра... sad.gif
aaarrr
Цитата(Dron_Gus @ Dec 14 2007, 15:13) *
Порт работает на 115200, обработчик прерывания короткий - запись в кольцевой буфер.

А на PDC его завести? FIFO нет, а без него по прерываниям работать ну оч. плохо.
Dron_Gus
Можно и на PDC. Но тогда вылезают проблемы с определением конца строки. Сканировать весь буфер и выкусывать оттуда строки - лишняя потеря времени.
Все же хочется отловить этот глюк.
aaarrr
Цитата(Dron_Gus @ Dec 14 2007, 15:30) *
Можно и на PDC. Но тогда вылезают проблемы с определением конца строки. Сканировать весь буфер и выкусывать оттуда строки - лишняя потеря времени.

ИМХО, это не лишняя потеря времени, а единственно верный путь smile.gif
Можно просто перебрасывать в уже имеющийся кольцевой буфер данные из PDC, при этом менять обработку не придется.

Цитата(Dron_Gus @ Dec 14 2007, 15:30) *
Все же хочется отловить этот глюк.

"Глюком" может быть запрет прерываний на время больше 174uS. Ловить будет трудновато, особенно учитывая наличие чужого кода.
Dron_Gus
Спасибо, судя по всему Вы правы. Перевесил прерывание на FIQ (хорошо звучит smile.gif ) проблемма не исчезла. Похоже прерывания запрешаются "по полной".
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.