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

 
 
> Прерывание UART
Timofey
сообщение Jun 1 2010, 05:09
Сообщение #1


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

Группа: Участник
Сообщений: 119
Регистрация: 3-07-06
Пользователь №: 18 528



Контроллер - Mega32 16AU
Стоит внешний кварц на 16 МГц
CKSEL=0F (выбран внешний кварц)
Среда программирования IAR for AVR 5.30
Проблема: никак не могу включить прерывание по приему хотя бы одного байта
Код
#include <iom32.h>

#define FOSC              16000000
#define UBRR_9600         (((FOSC/16)/9600)-1)


#pragma vector=USART_RXC_vect
__interrupt void Receive_Byte(void);

__interrupt void Receive_Byte(void)
{
   unsigned char _data;
   PORTD&=~AVR_PIO_D_OK; //по приему хотя бы одного байта, должен загореться индикатор
   while ( !(UCSRA & (1<<RXC)) );
   _data = UDR;
}

void Init_UART (void)
{  
   Set_DE(0);
   UBRRH = (unsigned char)(UBRR_9600>>8);
   UBRRL = (unsigned char)(UBRR_9600);
  
   UCSRB = ((1<<RXEN)|(1<<TXEN)|(1<<RXCIE)|(1<<TXCIE));
  
   UCSRC = ((1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0)|(1<<UPM1)|(1<<UPM0));//8bit,stop-bit 1, part - ODD  
}

Запускаю терминал, выставляю настройки порта нужные, отправляю один байт - индикатор не горит.
Осцилографом посмотрел, байт до контроллера доходит, но прерывание так и не срабатывает.
Сама программа при этом запускается и работает нормально (другой светодиод моргает). Что нужно еще установить (включить)?
Спасибо.

З.Ы. Как сделать так, чтобы код в посте был компактный (с прокруткой), а не занимал большую часть поста?
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Timofey   Прерывание UART   Jun 1 2010, 05:09
- - MrYuran   А разрешить прерывания не забыли? Цитата(Timofey ...   Jun 1 2010, 05:33
- - Timofey   Включил и прерывания и приемник с передатчиком Код...   Jun 1 2010, 06:14
|- - Сергей Борщ   Цитата(Timofey @ Jun 1 2010, 09:14) Включ...   Jun 1 2010, 06:31
|- - MrYuran   Цитата(Timofey @ Jun 1 2010, 10:14) Включ...   Jun 1 2010, 07:11
- - GDI   В симуляторе проверьте, все ли регистры реально пр...   Jun 1 2010, 06:31
|- - Timofey   Цитата(Сергей Борщ @ Jun 1 2010, 12:31) ...   Jun 1 2010, 06:42
- - mempfis_   Код __interrupt void Receive_Byte(void) {...   Jun 1 2010, 06:35
- - Timofey   Все, заработало. Всем спасибо. Тема закрыта.   Jun 1 2010, 07:56
|- - Karaox   Доброго времени суток! Я новичок в девайсостро...   Sep 13 2010, 09:19
|- - defunct   Цитата(Karaox @ Sep 13 2010, 12:19) Помог...   Sep 13 2010, 15:20
|- - =GM=   Karaox, чтобы сработало Receive Complete interrupt...   Sep 13 2010, 15:41
|- - defunct   Цитата(=GM= @ Sep 13 2010, 18:41) RTS (це...   Sep 14 2010, 03:51
|- - Karaox   Благодарю за ответы. to defunct: в datasheet’е п...   Sep 14 2010, 04:28
|- - defunct   Цитата(Karaox @ Sep 14 2010, 07:28) Как н...   Sep 14 2010, 04:52
|- - Karaox   Большое спасибо, За советы. Я разобрался в своём в...   Oct 25 2010, 16:59
- - ArtemKAD   ЦитатаВиной было то, что я упустил из виду хрестом...   Oct 26 2010, 10:37
|- - Karaox   Цитата(ArtemKAD @ Oct 26 2010, 14:37) Но ...   Oct 26 2010, 19:30
- - ArtemKAD   Цитатат.е. первые N пакетов и «устанавливает табли...   Oct 26 2010, 19:43
- - Karaox   Цитата(ArtemKAD @ Oct 26 2010, 23:43) Дос...   Nov 25 2010, 11:37
- - Палыч   Цитата(Karaox @ Nov 25 2010, 14:37) Никак...   Nov 25 2010, 15:37
- - Karaox   Цитата(Палыч @ Nov 25 2010, 18:37) Вот по...   Nov 26 2010, 10:10


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

 


RSS Текстовая версия Сейчас: 20th June 2025 - 18:16
Рейтинг@Mail.ru


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