1. This forum section is a read-only archive which contains old newsgroup posts. If you wish to post a query, please do so in one of our main forum sections (here). This way you will get a faster, better response from the members on Motherboard Point.

help with msp 430 interface and dip-switches

Discussion in 'Embedded' started by bcincin, Nov 28, 2007.

  1. bcincin

    bcincin Guest

    1- I got a board with dip-switches. How do they work? What do they use for


    2- I'm tring to do a c# interface to change baud rate of msp430 but i
    does not work properly. I got a blinking led to see if it works fine. Th
    problem is, when i change baud rate, led stops blinkind. When I set chang
    it back to initial baud rate, led starts blinking again

    Code:
    #include <msp430x16x.h>
    void checkMes (char );
    void delay(); // delay
    void blinker(); // blink led
    char message; // check received data
    volatile unsigned int delm=1; // # of delays
    volatile int t=0; // led's not blinking when it is 0
    volatile int m=0;
    volatile int baud; // msp430 baud speed



    void main(void)
    {
    WDTCTL = WDTPW + WDTHOLD; // Stop WDT
    P3SEL |= 0xC0; // P3.6,7 = USART1 option select
    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


    P1DIR |=BIT0;


    P1OUT =~BIT0;
    // Mainloop

    for(;;){
    _BIS_SR(LPM3_bits + GIE);

    #if 1
    while (!(IFG2 & UTXIFG1)); // USART1 TX buffer ready?

    TXBUF1 = message;
    #endif

    while (t==0){
    // Enter LPM3 w/interrupt

    checkMes (message); //check command message coming from interface

    while (t==1)
    blinker(); //start blinking the light


    }

    }
    }


    #if 1
    // UART1 RX ISR will for exit from LPM3 in Mainloop
    #pragma vector= USART1RX_VECTOR
    __interrupt void usart1_rx (void)
    {
    _BIC_SR_IRQ( LPM3_bits) ;// Clear LPM3 bits from 0(SR)
    t=0;
    message=RXBUF1;

    }

    #endif

    void delay() //changes the blinking speed of led
    {
    unsigned int i;
    i=10000;
    while(i>0)
    i--;
    }


    void blinker () // blinks led
    {
    while (t==1){
    int i=delm;
    P1OUT ^=BIT0;
    while (i>0) // waits for delay
    {
    i--;
    delay();
    }
    }
    }


    void checkMes (char m)
    {
    char c2;
    int com;



    if ((m & 0x80) == 0x80) //Check if it is blink command
    {
    if ((m & 0x10) == 0x10){ //check if it is blink button
    t=1;
    blinker();
    }
    else // # of delays
    {
    c2=(m & 0x07);
    delm=c2;
    t=1;
    }
    }
    else // it is configuration
    {
    t=2;
    com = (m & 0x03); //check baud rate
    switch(com){
    case '1': // set baud rate 2400
    IE2=0x00;
    ME2=0x00;
    UCTL1=0x01; // Software reset
    UCTL1 |= CHAR; // 8-bit character
    UTCTL1 |= SSEL0; // UCLK = ACLK
    UBR01=0x0D;
    UBR11=0x00;
    UMCTL1=0x6B;
    ME2 |= UTXE1 + URXE1; // Enable USART1 TXD/RXD
    UCTL1 &= ~SWRST; // Initialize USART state machine
    IE2 |= URXIE1; // Enable USART1 RX interrupt
    baud=6;
    break;
    case '2': // set baud rate 4800
    IE2=0x00;
    ME2=0x00;
    UCTL1=0x01; // Software reset
    UCTL1 |= CHAR; // 8-bit character
    UTCTL1 |= SSEL0; // UCLK = ACLK
    UBR01=0x06;
    UBR11=0x00;
    UMCTL1=0x77;
    ME2 |= UTXE1 + URXE1; // Enable USART1 TXD/RXD
    UCTL1 &= ~SWRST; // Initialize USART state machine
    IE2 |= URXIE1; // Enable USART1 RX interrupt
    baud=7;
    break;
    case '3': // set baud rate 9600
    IE2=0x00;
    ME2=0x00;
    UCTL1=0x01; // Software reset
    UCTL1 |= CHAR; // 8-bit character
    UTCTL1 |= SSEL0; // UCLK = ACLK
    UBR01=0x03;
    UBR11=0x00;
    UMCTL1=0x29;
    ME2 |= UTXE1 + URXE1; // Enable USART1 TXD/RXD
    UCTL1 &= ~SWRST; // Initialize USART state machine
    IE2 |= URXIE1; // Enable USART1 RX interrupt
    baud=8;
    break;
    default:
    break;
    }
    }
    }
     
    bcincin, Nov 28, 2007
    #1
    1. Advertisements

  2. bcincin

    FreeRTOS.org Guest

    They are used primarily to put oil into the ash tray.


    --
    Regards,
    Richard.

    + http://www.FreeRTOS.org
    14 official architecture ports, 1000 downloads per week.

    + http://www.SafeRTOS.com
    Certified by TÜV as meeting the requirements for safety related systems.
     
    FreeRTOS.org, Nov 28, 2007
    #2
    1. Advertisements

  3. Just a wild guess, but I would imagine your code
    never advances beyond this line:
    The reason *may* be that you did not follow the
    initialization sequence for the USART correctly
    with regard to the SWRST bit. Check the docs.
    There is a required sequence that will otherwise
    result in "unpredictable" behavior.


    --
    Michael N. Moran (h) 770 516 7918
    5009 Old Field Ct. (c) 678 521 5460
    Kennesaw, GA, USA 30144 http://mnmoran.org

    "So often times it happens, that we live our lives in chains
    and we never even know we have the key."
    "Already Gone" by Jack Tempchin (recorded by The Eagles)

    The Beatles were wrong: 1 & 1 & 1 is 1
     
    Michael N. Moran, Nov 28, 2007
    #3
  4. When closed, they allow current to flow through them. When
    open, they don't.
    To turn current on/off.
    Your code is

    1) Too long. People are willing to look at a short program to
    help you with a specific problem. If you just post a 100+
    lines of code and ask "what's wrong with my program?"
    you're not going to get very good results.

    2) A mess. The random indentation and brace placement make it
    impossible to read. Most of us won't try to help until you
    put in a little effort to make it easy for us.

    If you want help, post a smaller, well-formatted program that
    doesn't work. The program needs to be as small as possible but
    still demonstrate the problem.

    You might want to read this:

    http://www.catb.org/~esr/faqs/smart-questions.html
     
    Grant Edwards, Nov 28, 2007
    #4
    1. Advertisements

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.