prst 0 7 июня, 2006 Опубликовано 7 июня, 2006 · Жалоба Люди добрые, подскажите плиз что за ерунда происходит, или что я не так делаю... мне нужно переинициализировать компорт на другую скорость работы мне нужно сменить скорость работы порта - это цель вот как я делаю //usart1->US_BRGR = usart_reg_speed[usart_speed_ptr]; тоесть я переписываю просто регистр поверху я подозреваю что так делать можно, но не уверен или так init_ComPort1_reinit(usart_reg_speed[usart_speed_ptr]); здесь компорт поверху переписывает регисты и все но после того как я это делаю USART начитает принимать спустя какоето время(10-15 сек и нескольких посылок) так вот вопрос - USART при переинициализации нужно вообще отключать? как всетаки правильно делать??? сорри - за поста - это глюки браузера и перегружался видимо апач в это время здесь на сайте еще раз сорри Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
IV_K 0 7 июня, 2006 Опубликовано 7 июня, 2006 · Жалоба я например при установке регистов уарта выключаю его и запрещаю прерывания.. вот так.. 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(); } Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться