Important changes to forums and questions
All forums and questions are now archived. To start a new conversation or read the latest updates go to forums.mbed.com.
5 years, 10 months ago.
How do I stop serial dropping characters on Nucleo F411RE or F401RE when tickless is enabled.
I can not get all characters via serial reliably from Nucleo F411RE or F401RE when I have tickless enabled. I am talking to a cellular modem at 115200 baud. This seems to be a similar or the same problem listed in https://github.com/ARMmbed/mbed-os/issues/8714 except for a different board. This issue has been closed and looks like it has been merged but I am loosing characters with the F411RE.
As soon I as I remove
"target.macros_add": ["MBED_TICKLESS","DEVICE_LPTICKER"],
#include "mbed.h" RawSerial Modem(PA_9, PA_10,115200); DigitalIn mybutton(USER_BUTTON); DigitalOut led2(PA_5,0); int main() { LowPowerTimer t; char c; bool found = false; char respBuffer[500]=""; int bsize = sizeof(respBuffer); Modem.set_flow_control(Serial::RTS,PA_12,PA_11); printf("Ready...\n"); while(1) { if(mybutton == 0) { led2=1; wait(1); led2=0; printf("Sending ATI1\n"); Modem.puts("ATI1\r"); t.start(); char test[10] = "OK\r"; int eLen = strlen(test); int i=0; while(t.read_ms() < 10000){ while (Modem.readable()) { c = Modem.getc(); if(i<bsize) { respBuffer[i] = c; respBuffer[i+1]=0; } i++; } if(i>eLen){ int match = memcmp(test,&respBuffer[(i-eLen)],eLen); if(match == 0 ){ found=true; break; } } } t.stop(); printf("Found:%d\nOUTPUT:\n$$%s$$\nmilliSec: %d\n",found,respBuffer,t.read_ms()); } ThisThread::sleep_for(1000); } }
from my mbed_app.json file, no characters are lost.
Output with tickless
Sending ATI1 Found:1 OUTPUT: $$ ATI1 CinterionELS31-V REVISION 4.3.0c A-REVISION 4.3.3.0-36343 L-REVISION 3.7.6 OK $$ milliSec: 218 Sending ATI1 Found:1 OUTPUT: $$ ATI1 Cinterion ELS31-V VISION 4.3.0c A-REVION 4.3.3.0-36343 L-REVISION 3.6 OK $$ milliSec: 327 Sending ATI1 Found:1 OUTPUT: $$ ATI1 Cinterio ELS31-V REVISION 4.3.0c A-RESION 4.3.3.0-36343 L-REVISION 3.6 OK $$ milliSec: 436
Output without tickless
Sending ATI1 Found:1 OUTPUT: $$ ATI1 Cinterion ELS31-V REVISION 4.3.3.0c A-REVISION 4.3.3.0-36343 L-REVISION 3.7.6 OK $$ milliSec: 314 Sending ATI1 Found:1 OUTPUT: $$ ATI1 Cinterion ELS31-V REVISION 4.3.3.0c A-REVISION 4.3.3.0-36343 L-REVISION 3.7.6 OK $$ milliSec: 423 Sending ATI1 Found:1 OUTPUT: $$ ATI1 Cinterion ELS31-V REVISION 4.3.3.0c A-REVISION 4.3.3.0-36343 L-REVISION 3.7.6 OK $$ milliSec: 532
Any ideas on what I should try? Is this bug not fixed or is it just fixed for a specific board?
Thanks,
Hi Paul,
There is another issue specific to the Nucleo F411RE here:
We think this will help you. If not, please create a new GitHub issue as that will get you a response from the ST team.
Regards,
Ralph, Team Mbed
posted by Ralph Fulchiero 05 Feb 2019