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

 
 
> Автоопределение частоты работы УСАРТа, Пните куда надо
SpiritDance
сообщение Apr 17 2006, 18:25
Сообщение #1


Дух погибшего транзистора
****

Группа: Свой
Сообщений: 877
Регистрация: 6-09-05
Из: Москва
Пользователь №: 8 288



Понадобилось, значит, мне сваять автодетект частоты передатчика при преме. Прием по УСАРТу. Передача либо от компа либо не от компа, протокола вобщем еще нет. Вопрос, как сделать, от чего оттолкнутся, как вообще это делают? Хелп. unsure.gif


--------------------
Yes, there are two paths you can go by But in the long run Theres still time to change the road youre on.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
SpiritDance
сообщение Apr 25 2006, 04:43
Сообщение #2


Дух погибшего транзистора
****

Группа: Свой
Сообщений: 877
Регистрация: 6-09-05
Из: Москва
Пользователь №: 8 288



Решил выложить код автодетекта, проверен на атmega128 c 7-мегагерцовым кварцем практически на всех стандартных скоростях. Для синхронизации нужно послать контроллеру 16 байтов со значением 0х80. Вдруг понадобится кому.
Цитата
//----------------------------------------------------------------------------------------------------------------------
INT16U autodetect_baudrate(void)
{
/*
** определение частоты работы по усарту
*/

INT8U i;
INT16U TempData = 0;

//конфигурируем сигнал RxD как дискретный вход
_USART_DDR_PIN &= ~(1 << _USART_RXD_PIN);

//ожидаем 16 байт = 0x80
for( i = 0; i < 16 ; i++ )
{
//обнуляем таймер
TCNT1_BOOT = 0;
//ожидаем стартовый бит = 1 (сброс высокого уровня в ноль)
while( _USART_PORT_PIN & (1 << _USART_RXD_PIN) );
//запускаем таймер
TCCR1B_BOOT = 2;

//ждем стоп-бита (низкий уровень меняется на высокий)
while( !(_USART_PORT_PIN & (1 << _USART_RXD_PIN) ) );
//останавливаем таймер
TCCR1B_BOOT = 0;
TempData += TCNT1_BOOT;
}

//В данные момент TempData = UDR *256, сл. передаем старший байт
return ( (TempData >> 8) );
}


Еще раз спасибо всем ответившим.


--------------------
Yes, there are two paths you can go by But in the long run Theres still time to change the road youre on.
Go to the top of the page
 
+Quote Post



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

 


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


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