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

 
 
> Не могу "выйти" из прерывания USART. помогите.
Budek
сообщение Jun 22 2009, 15:04
Сообщение #1


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

Группа: Свой
Сообщений: 132
Регистрация: 17-02-08
Из: Уфа
Пользователь №: 35 116



Господа, помогите, пожалуйста. Начал изучать AT91SAM7X256.
В основном цикле тупо мигаю 1-м светодиодом, в обработчике прерывания USART0 делаю вспышку 2-м.
Так вот что не пойму (бьюсь третий день): при отправке символа с компа в обработчик захожу (2-й светодиод вспыхивает 1 раз, как и положено). Но вот в основную программу не выхожу (вернее из обработчика вроде выхожу, но вот куда, неясно) - "висит", 1-й светодиод не мигает.
инициализирую USART вроде верно:
Код
void init_serial (void)
{
AT91C_BASE_PIOA->PIO_PDR=(1<<0)|(1<<1);
AT91C_BASE_PIOA->PIO_ASR=(1<<0)|(1<<1);
AT91C_BASE_PIOA->PIO_BSR=0;
AT91C_BASE_PMC->PMC_PCER=1<<AT91C_ID_US0;
AT91C_BASE_US0->US_MR=AT91C_US_USMODE_NORMAL|AT91C_US_CLKS_CLOCK|AT91C_US_CHRL_8_BITS|
                                          AT91C_US_NBSTOP_1_BIT;
AT91C_BASE_US0->US_BRGR=MCK/(16*115200);
AT91C_BASE_US0->US_TTGR=0;
AT91C_BASE_US0->US_CR=AT91C_US_RXEN|AT91C_US_TXEN;
AT91F_AIC_ConfigureIt (AT91C_BASE_AIC, AT91C_ID_US0, 1,
                           AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL, Usart_c_irq_handler);
AT91C_BASE_US0->US_IER=(1<<0);
AT91F_AIC_EnableIt (AT91C_BASE_AIC, AT91C_ID_US0);
}

такое ощущение, что микроконтроллер "не знает", по какому адресу идти, выходя из обработчика. помогает только ресет.
Спасибо заранее всем.
Причина редактирования: Оформление цитаты исходника.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
aaarrr
сообщение Jun 22 2009, 17:21
Сообщение #2


Гуру
******

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



Да пожалуйста. Вы бы код своего прерывания выложили, вместе с тем, что в стартапе написано. Телепаты уже в отпуске smile.gif
Go to the top of the page
 
+Quote Post
Budek
сообщение Jun 22 2009, 17:55
Сообщение #3


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

Группа: Свой
Сообщений: 132
Регистрация: 17-02-08
Из: Уфа
Пользователь №: 35 116



Цитата(aaarrr @ Jun 22 2009, 23:21) *
Да пожалуйста. Вы бы код своего прерывания выложили, вместе с тем, что в стартапе написано. Телепаты уже в отпуске smile.gif


обработчик:

Код
void Usart_c_irq_handler(void)
{
unsigned int status;
status = AT91C_BASE_US0 -> US_CSR;
status &= AT91C_BASE_US0 -> US_IMR;
if (status & AT91C_US_RXRDY)   BlincLed(GetCharUsart0()-0x60);
AT91C_BASE_AIC->AIC_ICCR=0xFFFFFFFF;
AT91C_BASE_AIC->AIC_EOICR=0xFFFFFFFF;
}


а вот со стартапом "полный бардак". сейчас один хороший человек пытается его "выправить".
спасибо.
Причина редактирования: Оформление цитаты исходника.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jun 22 2009, 18:24
Сообщение #4


Гуру
******

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



Цитата(Budek @ Jun 22 2009, 21:55) *
обработчик:

AT91C_BASE_AIC->AIC_ICCR=0xFFFFFFFF; - не нужно, т.е. вредно.

Цитата(Budek @ Jun 22 2009, 21:55) *
а вот со стартапом "полный бардак". сейчас один хороший человек пытается его "выправить".
спасибо.

Ну, удачи ему.
Go to the top of the page
 
+Quote Post



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

 


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


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