[an error occurred while processing this directive]
|
Вот кусочек чужой инициализации, ядобавил ATmega128:
//----------------------------------------------------------
void UART_Init(u32 BaudRate)
{
#if defined(__AVR_ATmega8515__)UCSRA=0; // Скорость передачи не удвивается
UBRRH=(((SysClk/16)/BaudRate)-1)>>8;
UBRRL=(((SysClk/16)/BaudRate)-1)&0xFF;
UCSRB=(1<UCSRC=(1<
#elif defined (__AVR_ATmega16__)
UCSRA=0; // Скорость передачи не удвивается 159
UBRRH=(((SysClk/16)/BaudRate)-1)>>8; //
UBRRL=(((SysClk/16)/BaudRate)-1)&0xFF ; // for 3,6864 M 115,200 Bod
UCSRB=(1<UCSRC=(1< #elif defined (__AVR_ATmega128__)
UCSR1A=0;
UBRR1H=(((F_CPU/16)/BaudRate)-1)>>8;
UBRR1L=(((F_CPU/16)/BaudRate)-1)&0xFF ;
UCSR1B=(1<UCSR1C=(1< #else
# error "Don't know what kind of MCU you are compiling for"
#endif
}
Прерывание проще разрешать запрещать sei();/cli();
Кроме того желательно Interrupt заменить на SIGNAL
Тогда есть увереность, что прерывание не прервется другим прерыванием:
SIGNAL (SIG_UART1_RECV) // прерывание по приему
{
EXEC_SIG_UART1_RECV();
}
E-mail: info@telesys.ru