Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: преинициализация USART1 в AT91SAM7S256
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
PrSt
Люди добрые, подскажите плиз что за ерунда происходит, или что я не так делаю...

мне нужно переинициализировать компорт на другую скорость работы
мне нужно сменить скорость работы порта - это цель

вот как я делаю

//usart1->US_BRGR = usart_reg_speed[usart_speed_ptr];
тоесть я переписываю просто регистр поверху
я подозреваю что так делать можно, но не уверен

или так
init_ComPort1_reinit(usart_reg_speed[usart_speed_ptr]);
здесь компорт поверху переписывает регисты и все

но после того как я это делаю USART начитает принимать спустя какоето время(10-15 сек и нескольких посылок)

так вот вопрос - USART при переинициализации нужно вообще отключать?
как всетаки правильно делать???


сорри - за поста - это глюки браузера и перегружался видимо апач в это время здесь на сайте
еще раз сорри
IV_K
я например при установке регистов уарта выключаю его и запрещаю прерывания..

вот так..

static void SamUsartEnable(void){ // Разрешим уарт и перрывания.
OS_CPU_SR cpu_sr;
OS_ENTER_CRITICAL();
AT91C_USART_PTR->US_CR = AT91C_US_RXEN | AT91C_US_TXEN;
OS_EXIT_CRITICAL();
}

static void SamUsartDisable(void){ // Запрет работы уарта.
OS_CPU_SR cpu_sr;
OS_ENTER_CRITICAL();
AT91C_USART_PTR->US_CR = AT91C_US_RXDIS | AT91C_US_TXDIS;
OS_EXIT_CRITICAL();
}
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.