Announcements

Ever wondered how you could shape the future in collaboration with others? Join us at OktoberTech Asia Pacific and get inspired. Click here to sign up FREE of charge.

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

Legacy microcontrollers Forum Discussions

MotooTanaka
Level 9
First comment on KBA 1000 replies posted 750 replies posted
Level 9

Hi,

   

I've been writing some demo programs 
for FM0-64L-S6E1C3 with PDL 2.1.0 and PSoC Creator 4.0.

   

So far, I could manage SPI(CSIO) and I2C to work.
Using utilities/printf_scanf by setting following in pdl_user.h
===========
// Printf/Scanf via UART function
#define PDL_UTILITY_ENABLE_UART_PRINTF              PDL_ON
#define PDL_UTILITY_ENABLE_UART_SCANF               PDL_ON 
===========

   

Although printf seems reasonably working,
scanf does not come back.

   

So I spent a few days and found that 
int _read(int file, char *ptr, int len) in uart_io.c 
does not return until it reads "len" number of letters.
In my debugger, the len was 1024, when I was trying to read a few letters.

   

So I replaced following lines

   

==============
    int i;
    file = file;
    for(i = 0; i < len; i++)
    {
        while (TRUE != Mfs_Uart_GetStatus(UartCh, UartRxFull))
        {
            /* Wait until there is a character in the Rx FIFO */
        }
        *ptr++ = (char)Mfs_Uart_ReceiveData(UartCh);
    }
    return len;
==============

   

with following lines

   

==============
    int i = 0  ;
    char c ;
    file = file ;

   

    while(i < len) {
        while (TRUE != Mfs_Uart_GetStatus(UartCh, UartRxFull)) {
            /* Wait until there is a characer in the Rx FIFO */
        }
        c = (char)Mfs_Uart_ReceiveData(UartCh);
        Mfs_Uart_ClrStatus(UartCh, UartRxFull) ;
        ptr[i++] = c ;
        if (!isprint(c)) { 
            break ;
        }
    }

   

    ptr = 0 ;
    return i ;
==============

   

now scanf can read "%d", "%x", "%s".
But I wonder if my correction is correct,
or if there is/(will be) a better fix of PDL.

   

moto

1 Solution
Anonymous
Not applicable

Yes, this seems to be a problem with scanf implementation. The work-around you added seems to be fine. We will check this with our software team.

View solution in original post

0 Likes
2 Replies
Anonymous
Not applicable

Yes, this seems to be a problem with scanf implementation. The work-around you added seems to be fine. We will check this with our software team.

0 Likes
MotooTanaka
Level 9
First comment on KBA 1000 replies posted 750 replies posted
Level 9

 Dear BMAH-san,

   

Thank you for your respose!

   

Then I assume that my fix is usable and go forward for the time being.

   

Best Regards,

   

24-Nov-2016

   

Motoo Tanaka