This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Send a char [] + UART

Other Parts Discussed in Thread: CONTROLSUITE

a sensor node I have different data like: 3 voltages and 3 currents. and I need to send this data as follows: node name, data type (voltage or current 1 1), data value (current or voltage value).
but when I try to send a char something like this: char [] = { "node1", "voltaje1" voltaje1} I can not. I can do to send this information?

  • Hi, Natalia

    Are you able to send single character over UART ? Once you are OK with that you can just use pointers to send any string.
    For example a simple UART char send function might be like this:

    void uarta_write(char p)
    {
    UCA2TXBUF=p;
    while(!EUSCI_A2->rIFG.b.bTXCPTIFG); // Wait till transmit buffer empty
    EUSCI_A2->rIFG.b.bTXCPTIFG=0;
    }

    or

    void print_string(char *p)
    {
    while(*p != '\0')
    {
    UCA2TXBUF=*p;
    while(!EUSCI_A2->rIFG.b.bTXCPTIFG); // Wait till transmit buffer empty
    EUSCI_A2->rIFG.b.bTXCPTIFG=0;
    p=p+1;
    }
    }

    Registers might change slightly but it is always the same story
  • Please see the sci examples in controlSUITE. sci_echoback would be a good example to look at for this.

    sal
  • for sending char [] = { "node1", "voltage1" voltage1}; you can try sth like this : 

    void helpNataliaCancino(){
        while ((SciaRegs.SCICTL2.bit.TXEMPTY != 1)) { }     // this line can be change according to your board/code/hardware 
        SciaRegs.SCITXBUF = 'n';
        SciaRegs.SCITXBUF = 'o';
        SciaRegs.SCITXBUF = 'd';
        SciaRegs.SCITXBUF = 'e';
        SciaRegs.SCITXBUF = '1';
        SciaRegs.SCITXBUF = ' ';
        SciaRegs.SCITXBUF = 'v';
        SciaRegs.SCITXBUF = 'o';
        SciaRegs.SCITXBUF = 'l';
        SciaRegs.SCITXBUF = 't';
        SciaRegs.SCITXBUF = 'a';
        SciaRegs.SCITXBUF = 'g';
        SciaRegs.SCITXBUF = 'e';
        SciaRegs.SCITXBUF = '1';
        SciaRegs.SCITXBUF = ' ';
        SciaRegs.SCITXBUF = voltage1;
    }

  • There is also a printf() which used the SCI available in controlSUITE. I think it is something like uartstdio.c