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

 
 
> Прерывание для RS232 на AtMega128
Nekromant
сообщение Apr 5 2009, 14:57
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 47
Регистрация: 21-03-07
Пользователь №: 26 369



Добрый день, уважаемые форумчане.
Возникла задача реализовать общение между контроллером и ПК.
Сама передача работает. т.е контроллер принимает символы и отправляет, но при попытке организовать прерывание по приему символа-оно просто не срабатывает. вот фрагменты кода на строгий суд:
используется отладочная плата STK500
CODE
extern THD44780Service Lcd;
extern char c;

void TDebugSerial::Init() //инициализация USART
{
/* Enable double speed */
UCSR1A = (1 << U2X);
/* Enable receiver, transmitter and interrupts */
UCSR1B = (1 << RXEN1) | (1 << TXEN1) | (1 << RXCIE1);
/* 8 bit data */
UCSR1C = (1 << UCSZ11) | (1 << UCSZ10) ;
/* high byte of UART speed */
UBRR1H = (8000000 /(19200 * 8L) - 1) >> 8;
/* low byte of UART speed */
UBRR1L = (uint8_t)(8000000 / (19200 * 8L)-1);

}
......
ISR(USART1_RX_vect)//организация прерывания по приему символа
{
uint32_t i=98765432; //проверка срабатывания прерывания
Lcd.WriteInt(i); //проверка срабатывания прерывания


}



Lcd.WriteInt(i)---функция вывода на дисплей жк-индикатора-в главных циклах и других функция срабатывает. В этом же прерывании просто молчание и никакой реакции. вместо нее даже пытался менять состояние светодиодов-все равно молчание.
Причина редактирования: Оформление цитаты исходника.
Go to the top of the page
 
+Quote Post



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

 


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


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