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

 
 
 
Reply to this topicStart new topic
> USART TXC/RXC interrupt M8
vooon
сообщение Mar 13 2007, 18:51
Сообщение #1


Участник
*

Группа: Свой
Сообщений: 72
Регистрация: 27-06-06
Из: Msk
Пользователь №: 18 401



Разбираюсь с WAKE,
в частности с примером реализации на си, подправил его под CV
добавил дефайнов чтобы не переписывать имена регистров и бит под ATMega8,
поправил макрос для расчета UBBR (у CV _MCU_CLOCK_FREQUENCY_ в герцах).

попробовал сначало проверить в протее что отправляет - оказалось что только FEND, и все
не происходит прерывание TXC (и RXC тоже), проверил в железе - еще хуже, раз в секунду короткий импульс 0, но не посылка (как будто только старт бит а дальше пусто...)
при том что когда передача идет без прерываний - все ок cranky.gif

вот инит USART'а:
Код
#ifndef CV_USART_INIT // для проверки...
  UCSR0C = (1<<URSEL0) | (1<<UCSZ01) | (1<<UCSZ00); //8-битная посылка
  UBRR0L = LO(UBRR0V);                              //задание скорости обмена
  UBRR0H = HI(UBRR0V) & ~(1<<URSEL0);
  //разрешение прерываний по приему и передаче, разрешение приема и передачи
  UCSR0B = (1<<RXCIE0) | (1<<TXCIE0) | (1<<RXEN0) | (1<<TXEN0);
#else
#warning USED CodeWizard USART initialization
  /* USART initialization
   * Communication Parameters: 8 Data, 1 Stop, No Parity
   * USART Receiver: On
   * USART Transmitter: On
   * USART Mode: Asynchronous
   * USART Baud rate: 9600
   */
  UCSRA = 0x00;
  UCSRB = 0xD8;
  UCSRC = 0x86;
  UBRRH = 0x00;
  UBRRL = 0x19; // ведь должно быть 25???
#endif

первый вариант - родной, дополненный мной, второй сгенерированный визардом

тестовай код для авра: Прикрепленный файл  avr.zip ( 27.91 килобайт ) Кол-во скачиваний: 148
определения бит из папки inc: Прикрепленный файл  inc_bitdef.zip ( 158.22 килобайт ) Кол-во скачиваний: 129
Go to the top of the page
 
+Quote Post
megajohn
сообщение Mar 13 2007, 19:47
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 080
Регистрация: 16-11-04
Из: СПб
Пользователь №: 1 143



Цитата(vooon @ Mar 13 2007, 18:51) *
вот инит USART'а:
Код
  UBRRL = 0x19; // ведь должно быть 25???
#endif


0x19 это в шестнадцетиричной, а это и есть 25 в десятичной =)

И кстати, я так и не увидел разрешение глобального прерывания (то есть установка I-бита)

Сообщение отредактировал megajohn - Mar 13 2007, 20:00


--------------------
Марс - единственная планета, полностью населенная роботами (около 7 штук).
Go to the top of the page
 
+Quote Post
vooon
сообщение Mar 14 2007, 06:24
Сообщение #3


Участник
*

Группа: Свой
Сообщений: 72
Регистрация: 27-06-06
Из: Msk
Пользователь №: 18 401



Цитата(megajohn @ Mar 13 2007, 19:47) *
0x19 это в шестнадцетиричной, а это и есть 25 в десятичной =)

И кстати, я так и не увидел разрешение глобального прерывания (то есть установка I-бита)


ага, так и есть... по недосыпу совсем башка не варит... (совсем в сову превратился sad.gif )
так и sei() проглядел... (а ведь искал: "в чем же ошибка, где хомут" blush.gif )

ну хоть одно полезное дело - выложил правленные инклюды с определениями имен бит...
(то что у CV "в дефолте" не расписаны биты ИМХО единственный реально мешающий недостаток)


ЗЫ: гдето в восемь сам нашел в чем проблема, да отписываться не стал blush.gif
Go to the top of the page
 
+Quote Post

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

 


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


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