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

 
 
 
Reply to this topicStart new topic
> UART3 & ep9307, Как настроить прерывание INT_UART3?
Andrei....
сообщение Dec 11 2006, 17:34
Сообщение #1


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

Группа: Новичок
Сообщений: 104
Регистрация: 20-03-06
Пользователь №: 15 402



Какие то запутки с прерыванием INT_UART3. Постояно вызывается с флагом TIS в UART3IntIDIntClr регистре, видимо чего то не сбрасываю...чего?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Dec 11 2006, 18:28
Сообщение #2


Гуру
******

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



Цитата(Andrei.... @ Dec 11 2006, 17:34) *
Какие то запутки с прерыванием INT_UART3. Постояно вызывается с флагом TIS в UART3IntIDIntClr регистре, видимо чего то не сбрасываю...чего?

Если бит TIE в UART1Ctrl установлен, то прерывание будет вызываться постоянно, пока в TX FIFO есть свободное место.
В документации это совершенно прозрачно описано.
Go to the top of the page
 
+Quote Post
Andrei....
сообщение Dec 12 2006, 10:19
Сообщение #3


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

Группа: Новичок
Сообщений: 104
Регистрация: 20-03-06
Пользователь №: 15 402



Да, понятно. Но почему прерывание не вызывается если и RIE выставлен в UART3Ctrl? Байты в UART3Data приходят - перывания нет.
Go to the top of the page
 
+Quote Post
Andrei....
сообщение Dec 12 2006, 16:42
Сообщение #4


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

Группа: Новичок
Сообщений: 104
Регистрация: 20-03-06
Пользователь №: 15 402



recive interrupt заработал, недозаполнялся FIFO.
А почему не возникает прерывание recive timeout (бит RTIE в UART3Ctrl регистре), если в порт ничего не приходит?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Dec 12 2006, 18:07
Сообщение #5


Гуру
******

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



Цитата
А почему не возникает прерывание recive timeout (бит RTIE в UART3Ctrl регистре), если в порт ничего не приходит?

Оно возникает только если FIFO не пуст. Работает нормально.
Go to the top of the page
 
+Quote Post
Andrei....
сообщение Dec 12 2006, 18:24
Сообщение #6


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

Группа: Новичок
Сообщений: 104
Регистрация: 20-03-06
Пользователь №: 15 402



Цитата(aaarrr @ Dec 12 2006, 18:07) *
Цитата
А почему не возникает прерывание recive timeout (бит RTIE в UART3Ctrl регистре), если в порт ничего не приходит?

Оно возникает только если FIFO не пуст. Работает нормально.


Выходит если мне надо определить момент когда в течении какого то времени не пришли байты (нет ответа от устройства) то оно мне не поможет. Такую ситуацию не разрулить в одном INT_UART3.

И второй вопрос: не вызывается таймерное прерывание, что не так настроил?

ldr r0, =1000//500ms
ldr r1, =0x80810000 //Timer1Load
str r0, [r1]
ldr r0, =(1<<7/*ENABLE*/)|(1<<6/*MODE*/)|(0<<3/*CLKSRL*/)
ldr r1, =0x80810008 //Timer1Control
str r0, [r1]
...
VIC1IntEnable = (1<<VIC1_AACINTR)|(1<<VIC1_TC1OI); // Enable AC97 interrupt, TC1OI interrupt.
...
VIC1VectCntl1=0x20|VIC1_TC1OI; // Enable vector interrupt.
VIC1VectAddr1=(unsigned long)InterruptHandler;//interrupt handler
...
__ARMLIB_enableIRQ();

void irq_handler(void) __attribute__ ((interrupt ("IRQ")))
{
unsigned long vector1=VIC1VectAddr,vector2=VIC2VectAddr;
if(vector1)
{
(*((void(*)(void))vector1))();// Call vectored interrupt function.
VIC1VectAddr=0; // Clear interrupt in VIC.
}
if(vector2)
{
(*((void(*)(void))vector2))();// Call vectored interrupt function.
VIC2VectAddr=0; // Clear interrupt in VIC.
}
}
void InterruptHandler(void)
{
...
Timer1Clear=0; //???
}

и нужно сбрасывать прерывание (Timer1Clear=0)
Go to the top of the page
 
+Quote Post
Andrei....
сообщение Dec 12 2006, 18:35
Сообщение #7


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

Группа: Новичок
Сообщений: 104
Регистрация: 20-03-06
Пользователь №: 15 402



С таймером вопрос снят.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Dec 12 2006, 19:19
Сообщение #8


Гуру
******

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



Цитата(Andrei.... @ Dec 12 2006, 18:24) *
Выходит если мне надо определить момент когда в течении какого то времени не пришли байты (нет ответа от устройства) то оно мне не поможет. Такую ситуацию не разрулить в одном INT_UART3.

Придется использовать внешний таймер. И на время паузы между пакетами накладывается ограничение - оно не может быть меньше времени передачи 4-х байт.

Вот к чему приводит копирование "промышленных стандартов" sad.gif
Go to the top of the page
 
+Quote Post

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

 


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


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