[an error occurred while processing this directive]
Ответ:
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено misyachniy 31 января 2006 г. 12:09
В ответ на: Михаил, спасибо. Переписал в winavr, там есть ассемблерный листинг, смотрю., посылать начала, а прием пока отказывает. отправлено <font color=gray>zummer</font> 31 января 2006 г. 00:03

Вот кусочек чужой инициализации, ядобавил 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: 
NoIX ключ Запомнить

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Rambler's Top100 Рейтинг@Mail.ru
Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание

E-mail: info@telesys.ru