Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

C вашего разрешения повторюсь. Вопрос не решен (USART0 AT91SAM7S)

Отправлено sag1979 10 декабря 2008 г. 15:31


Вот в этой программе не происходит прерывания USART0 RXRDY!!!
При этом : прием байта с ожиданием флага RXRDY происходит нормально.
Прерывание TXRDY тоже есть, если передавать байт....а вот RXRDY - не происходит! Посмотрите, а то буду вторую ночь не спать. Спасибо!

-----------------------------------------------------------------
Текст....
-----------------------------------------------------------------
#include "AT91SAM7S256.h"

volatile int IRQflag = 0;
int result = 0;
unsigned char read_char_USART0(void)
{
while (!(AT91C_BASE_US0->US_CSR&AT91C_US_RXRDY));
return(((unsigned char*)AT91C_BASE_US0->US_RHR)[0]);
}
void UART_IRQ (void) __irq
{
volatile int status;
status = AT91C_BASE_AIC->AIC_IVR;
IRQflag = 1;
AT91C_BASE_AIC->AIC_EOICR = 0;

}
int main (void)

{

AT91C_BASE_PMC->PMC_PCER = (1 << AT91C_ID_PIOA);
AT91C_BASE_PMC->PMC_PCER = (1 << AT91C_ID_US0);

AT91C_BASE_PIOA->PIO_PDR = AT91C_PIO_PA5 | AT91C_PIO_PA6;
AT91C_BASE_PIOA->PIO_ASR = AT91C_PIO_PA5 | AT91C_PIO_PA6;

AT91C_BASE_US0->US_CR = AT91C_US_TXDIS;
AT91C_BASE_US0->US_CR = AT91C_US_RXDIS;

AT91C_BASE_US0->US_BRGR = 310;
AT91C_BASE_US0->US_MR = 0x08c0;

AT91C_BASE_AIC->AIC_SMR[AT91C_ID_US0] = //AT91C_AIC_SRCTYPE_INT_POSITIVE_EDGE |
AT91C_AIC_PRIOR_HIGHEST;
AT91C_BASE_AIC->AIC_SVR[AT91C_ID_US0] = (unsigned long) UART_IRQ;
AT91C_BASE_AIC->AIC_IECR = (1 << AT91C_ID_US0);


AT91C_BASE_US0->US_CR = AT91C_US_TXEN;
AT91C_BASE_US0->US_CR = AT91C_US_RXEN;


AT91C_BASE_US0->US_IER = AT91C_US_TXRDY;
AT91C_BASE_US0->US_IER = AT91C_US_RXRDY;

while(1)
{
if(IRQflag)
{
result += 0xFF & AT91C_BASE_US0->US_RHR;
IRQflag = 0;

}
//read_char_USART0();
//read_char_USART0();

}

return(0);
}


Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
умножьте 3 на единицу:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru