Разбираюсь с
WAKE,
в частности с примером реализации на си, подправил его под CV
добавил дефайнов чтобы не переписывать имена регистров и бит под ATMega8,
поправил макрос для расчета UBBR (у CV _MCU_CLOCK_FREQUENCY_ в герцах).
попробовал сначало проверить в протее что отправляет - оказалось что только FEND, и все
не происходит прерывание TXC (и RXC тоже), проверил в железе - еще хуже, раз в секунду короткий импульс 0, но не посылка (как будто только старт бит а дальше пусто...)
при том что когда передача идет без прерываний - все ок
вот инит 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