EmbeddedRelated.com
Forums

how to initializatize/re-configure usart?

Started by bcincin September 28, 2007
Hi. I want to change reset uart and change baud rate with an interface
(combobox) on windows. At the beginning default baud rate is 2400. 

ME2 |= UTXE1 + URXE1; // Enable USART1 TXD/RXD 

UCTL1 |= CHAR; // 8-bit character 
UTCTL1 |= SSEL0; // UCLK = ACLK 
UBR01 = 0x0D; // 32k/2400 - 13.65 
UBR11 = 0x00; 
UMCTL1 = 0x6B; // Modulation 
UCTL1 &= ~SWRST; // Initialize USART state machine 
IE2 |= URXIE1; // Enable USART1 RX interrupt 

.. 

how can i reset this later? I tried something like this but it doesn't
work 

... 
case 3: // set baud rate 9600 
UCTL1 |= CHAR; // 8-bit character 
UTCTL1 |= SSEL0; // UCLK = ACLK 
UBR01=0x03; 
UBR11=0x00; 
UMCTL1=0x29; 
UCTL1 &= ~SWRST; 
IE2 |= URXIE1; 
default; 
.... 


How can I do it? 



On Fri, 28 Sep 2007 06:44:14 -0500, "bcincin" <berkecincin@gmail.com>
wrote in comp.arch.embedded:

> > Hi. I want to change reset uart and change baud rate with an interface > (combobox) on windows. At the beginning default baud rate is 2400.
For what UART? What hardware is this program for?
> ME2 |= UTXE1 + URXE1; // Enable USART1 TXD/RXD > > UCTL1 |= CHAR; // 8-bit character > UTCTL1 |= SSEL0; // UCLK = ACLK > UBR01 = 0x0D; // 32k/2400 - 13.65 > UBR11 = 0x00; > UMCTL1 = 0x6B; // Modulation > UCTL1 &= ~SWRST; // Initialize USART state machine > IE2 |= URXIE1; // Enable USART1 RX interrupt > > .. > > how can i reset this later? I tried something like this but it doesn't > work > > ... > case 3: // set baud rate 9600 > UCTL1 |= CHAR; // 8-bit character > UTCTL1 |= SSEL0; // UCLK = ACLK > UBR01=0x03; > UBR11=0x00; > UMCTL1=0x29; > UCTL1 &= ~SWRST; > IE2 |= URXIE1; > default; > ....
Without knowing what part you are talking about, it's hard to do more than guess. But perhaps you should at least disable the interrupt while you are changing settings. -- Jack Klein Home: http://JK-Technology.Com FAQs for comp.lang.c http://c-faq.com/ comp.lang.c++ http://www.parashift.com/c++-faq-lite/ alt.comp.lang.learn.c-c++ http://www.club.cc.cmu.edu/~ajo/docs/FAQ-acllc.html
On Fri, 28 Sep 2007 22:14:15 -0500, Jack Klein <jackklein@spamcop.net>
wrote:

>On Fri, 28 Sep 2007 06:44:14 -0500, "bcincin" <berkecincin@gmail.com> >wrote in comp.arch.embedded: > >> >> Hi. I want to change reset uart and change baud rate with an interface >> (combobox) on windows. At the beginning default baud rate is 2400. > >For what UART? What hardware is this program for? > >> ME2 |= UTXE1 + URXE1; // Enable USART1 TXD/RXD >> >> UCTL1 |= CHAR; // 8-bit character >> UTCTL1 |= SSEL0; // UCLK = ACLK >> UBR01 = 0x0D; // 32k/2400 - 13.65 >> UBR11 = 0x00; >> UMCTL1 = 0x6B; // Modulation >> UCTL1 &= ~SWRST; // Initialize USART state machine >> IE2 |= URXIE1; // Enable USART1 RX interrupt >> >> .. >> >> how can i reset this later? I tried something like this but it doesn't >> work >> >> ... >> case 3: // set baud rate 9600 >> UCTL1 |= CHAR; // 8-bit character >> UTCTL1 |= SSEL0; // UCLK = ACLK >> UBR01=0x03; >> UBR11=0x00; >> UMCTL1=0x29; >> UCTL1 &= ~SWRST; >> IE2 |= URXIE1; >> default; >> .... > >Without knowing what part you are talking about, it's hard to do more >than guess. But perhaps you should at least disable the interrupt >while you are changing settings.
Also ... many UARTS have a soft-reset per channel. You can use this bit to reset the specific channel, and then reconfigure. Regards Anton Erasmus