|
Проблема LPC2214 UART+T0 IRQ |
|
|
|
Nov 22 2006, 11:44
|
Частый гость
 
Группа: Свой
Сообщений: 123
Регистрация: 11-01-06
Пользователь №: 13 032

|
Прерывания два УАРТ и Таймер0, Т0 запускается периодически (отсчет таймаута), пока был один Т0 все работало, с делал прерывание на прием по УАРТу - какие-то глюки Не получается разобраться в чем проблема, вот код Инициализания прирываний:
static void DefDummyInterrupt(void) {}
// IRQ exception handler. Calls the interrupt handlers. #pragma vector=0x18 __irq __ramfunc void irq_handler(void) { void (*interrupt_function)(); unsigned long vector;
vector = VICVectAddr; // Get interrupt vector. interrupt_function = (void(*)())vector; // __enable_interrupt(); // Enable interrupts. (*interrupt_function)(); // Call vectored interrupt function.
VICVectAddr = 0; // Clear interrupt in VIC. }
//************************************************************ void init_IRQ(void) { // Setup interrupt controller. VICProtection = 0; // Disable all interrupts VICIntEnClear = 0xffffffff; VICDefVectAddr = (unsigned long)&DefDummyInterrupt;
// Setup timer callback function. VICIntSelect=0x0; // Timer0 & UART select as IRQ. VICVectAddr0 = (unsigned long)&UART0Interrupt; VICVectCntl0 = 0x20 | VIC_UART0; // Enable vector interrupt for UART0. VICVectAddr1 = (unsigned long)&Timer0Interrupt; VICVectCntl1 = 0x20 | VIC_TIMER0; // Enable vector interrupt for timer 0. VICIntEnable = 0x50; // Enable timer 0 & UART0 interrupt. }
УАРТ - слот0 Т0- слот1 Процедура обработки для Т0 и УАРТа
// Timer0 interrupt handler __ramfunc void Timer0Interrupt(void) { T0IR = 0xff; // Clear timer 0 interrupt line. BF=0; }
//****************************************************************** // Заполняет буфер приема __ramfunc void UART0Interrupt() { while (U0LSR&0x1) { rx_buff[rx_end]=U0RBR; rx_end=(rx_end+1)%RX_BUFF_LEN; rx_len++; } }
Под житагом запускаю программу, передаю пакет данных. На него должен быть ответ, ответа нет. Останавливаю программу, пакет в буфер принимается верно, лишнего нет почему-то постоянно вылетает на DummyInterrupt, пока не тормознешь отладчиком ответа нет, после остановки отладчиком и снова запуска ответ передается. Если точка останова на irq_handler то постоянно вылезают DummyInterrupt. Вообщем чушь какая-то, отладить не получается стоит тормознуть отладчиком идут ответы на пакет.
Может есть пример рабочего кода для обработки приема по УАРТ?
|
|
|
|
|
 |
Ответов
|
Nov 23 2006, 18:39
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(dmyl @ Nov 23 2006, 15:40)  Проблему поборол, не понятно почему вычитывание данных UART до опустошения буфера (бит DR) не эквивалентно вычитыванию UART пока не снимется IIR. Странный подход к делу - НЕ должно оно сниматся от того, что буфер опустошили а должно только после того, как Вы дали понять, что на него среагировали, а уж какяя там Ваша реакция должна быть - читать буфер, не читать буфер, читать, но в следующий понедельник - не его дело. Цитата Загадкой осталось такое поведение под отладчиком через JTAG. Причем абсолютно точно, если висит окно просмотра регистров UART то прерывание сразу сбрасывалось, если окно закрыть то нет. Какая "загадка" - висит отладчик и ЧИТАЕТ UART. Железу UART по барабану, кто его считал и дал знак, что СРЕАГИРОВАЛ на прерывание.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Nov 24 2006, 10:22
|
Частый гость
 
Группа: Свой
Сообщений: 123
Регистрация: 11-01-06
Пользователь №: 13 032

|
Цитата Странный подход к делу - НЕ должно оно сниматся от того, что буфер опустошили а должно только после того, как Вы дали понять, что на него среагировали, а уж какяя там Ваша реакция должна быть - читать буфер, не читать буфер, читать, но в следующий понедельник - не его дело. Что же тут странного? Или есть другой способ дать понять что среагировали на прерывание по приему УАРТа и сбросить его кроме как прочитать данные из RBR?
|
|
|
|
Сообщений в этой теме
dmyl Проблема LPC2214 UART+T0 IRQ Nov 22 2006, 11:44 dmyl Немного переделал - выкинул Т0, оставил только при... Nov 22 2006, 12:11 Alex03 Цитата(dmyl @ Nov 22 2006, 14:11) Немного... Nov 22 2006, 14:32  zltigo Цитата(Alex03 @ Nov 22 2006, 13:32) А поч... Nov 22 2006, 18:39   Alex03 Цитата(zltigo @ Nov 22 2006, 20:39) Цитат... Nov 27 2006, 10:07    zltigo Цитата(Alex03 @ Nov 27 2006, 09:07) А всё... Nov 27 2006, 11:39     Alex03 Цитата(zltigo @ Nov 27 2006, 13:39) Цитат... Nov 27 2006, 15:26      zltigo Цитата(Alex03 @ Nov 27 2006, 14:26) Если ... Nov 27 2006, 19:23       Alex03 Уважаемый zltigo!
У меня нет желания спорить с... Nov 28 2006, 12:31        zltigo Цитата(Alex03 @ Nov 28 2006, 11:31) У мен... Nov 28 2006, 13:38         Alex03 Цитата(zltigo @ Nov 28 2006, 15:38) По ... Nov 28 2006, 16:40          zltigo Цитата(Alex03 @ Nov 28 2006, 15:40) А пер... Nov 28 2006, 17:11 amw Использую оба указанных прерывания. Никаких пробле... Nov 22 2006, 17:23 Andrew2000 Цитата(dmyl @ Nov 22 2006, 11:44) Прерыва... Nov 23 2006, 02:29 aaarrr Цитата(Andrew2000 @ Nov 23 2006, 02:29) Т... Nov 23 2006, 04:22 zltigo Цитата(aaarrr @ Nov 23 2006, 03:22) К инс... Nov 23 2006, 10:20    zltigo Цитата(dmyl @ Nov 24 2006, 09:22) Или ест... Nov 24 2006, 15:47     dmyl ЦитатаУж не знаю, как и обьяснить... Вы с железом ... Nov 24 2006, 15:55      zltigo Цитата(dmyl @ Nov 24 2006, 14:55) Если вы... Nov 24 2006, 17:18       dmyl Цитата(zltigo @ Nov 24 2006, 18:18) Для п... Nov 24 2006, 20:26        zltigo Цитата(dmyl @ Nov 24 2006, 19:26) ...там ... Nov 24 2006, 21:33         dmyl Цитата(zltigo @ Nov 24 2006, 22:33) Еще р... Nov 25 2006, 10:23          zltigo Цитата(dmyl @ Nov 25 2006, 09:23) Это пон... Nov 25 2006, 11:58           dmyl Цитата(zltigo @ Nov 25 2006, 12:58) Так в... Nov 25 2006, 14:03            zltigo Цитата(dmyl @ Nov 25 2006, 13:03) Со стар... Nov 25 2006, 15:57             dmyl Цитата(zltigo @ Nov 25 2006, 16:57) Если ... Nov 25 2006, 18:02              zltigo Цитата(dmyl @ Nov 25 2006, 17:02) В каком... Nov 25 2006, 18:54 bombastic Цитата(dmyl @ Nov 22 2006, 11:44) Если то... Nov 24 2006, 14:56 Сергей Борщ Цитата(bombastic @ Nov 24 2006, 13:56) Ци... Nov 24 2006, 16:59 sensor_ua У меня работает чуток рихтанутый вариант обработчи... Nov 28 2006, 17:16
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|