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

 
 
> LPC2138, конфликт IRQ, перезапускается, как устранить?
arttech
сообщение Feb 20 2008, 11:43
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 62
Регистрация: 28-10-06
Из: г. Севастополь
Пользователь №: 21 744



Подскажите, как можно обойти нижеописанную проблему.

Контроллер производит обработку по 2м прерываниям IRQ.
1. UART0- приоритет 0;
2. Timer0 - приоритет 1;

В процессе передачи данных участвует SPI (вызывается процедура).

Один раз в 20мсек эта подпрограмма (приёма/передачи по SPI) вызывается и работает около 1мсек по времени. Если всё оставить как должно быть, то прерываясь процессор вносит незначительные погрешности в задержках приёма/передачи по SPI и в результате процесс приёма/передачи срывается (в данном случае виноват не LPC, а приёмник). Но Timer0 и UART при этом работают великолепно.

Чтоб избежать срыва в работе при передаче по SPI я на время выполнения процедуры запрещаю прерывания по UART (U0IER = 0x00;). При этом как минимум одно прерывание по UARTу успевает проскочить, но т.к. прерывание дезактивировано, то в буфер UARTa просто добавится плюс один символ, который я потом в процессе смогу забрать самостоятельно, что в дальнейшем и делаю.
Но появляется другая проблема, через каждые 20-40 секунд контроллер начинает перезапускаться.

Как избежать конфликта с прерыванием по UARTу и как устранить перезапуск МК?
Go to the top of the page
 
+Quote Post



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

 


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


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