Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: USART TXC/RXC interrupt M8
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
vooon
Разбираюсь с 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

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

тестовай код для авра: Нажмите для просмотра прикрепленного файлаопределения бит из папки inc: Нажмите для просмотра прикрепленного файла
megajohn
Цитата(vooon @ Mar 13 2007, 18:51) *
вот инит USART'а:
Код
  UBRRL = 0x19; // ведь должно быть 25???
#endif


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

И кстати, я так и не увидел разрешение глобального прерывания (то есть установка I-бита)
vooon
Цитата(megajohn @ Mar 13 2007, 19:47) *
0x19 это в шестнадцетиричной, а это и есть 25 в десятичной =)

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


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

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


ЗЫ: гдето в восемь сам нашел в чем проблема, да отписываться не стал blush.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.