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.
8 years, 4 months ago.
TimeOut not working properly on NUCLEO-F103RB
Hello all,
I found a problem when I use multiple TimeOuts on a Nucleo-F103RB. When I use two (or more) TimeOuts the program sometimes suddenly seems to 'stop'. I calculate the deltaTime (the time it takes to run one loop, = stopTime loop - startTime loop) which normally takes about 23 uS to complete. After 1253 loops, the deltaTime suddenly drops to 5 uS for 20 loops. After 2253, 5388 and 9388 loops the same problem occurs. It always takes exacly 20 loops to get back to the normal deltaTime.
When I include a wait or if I change the parameters of the TimeOuts the position of the drops change.
Does anybody know what can cause this drop or how it can be fixed? Here's my code:
MultipleTimeOuts
#include "mbed.h"
Serial pc(USBTX, USBRX); //tx rx debug
Timer timer;
Timeout timer1;
Timeout timer2;
bool timing1 = false;
bool timing2 = false;
long starttime;
long endtime;
long deltatime;
void interrupt1(){
timing1 = false;
}
void interrupt2(){
timing2 = false;
}
int main(){
timer.start();
//wait(1);
while(1){
starttime = timer.read_us();
if(timing1 == false){
timer1.attach_us(&interrupt1, 300);
timing1 = true;}
if(timing2 == false){
timer2.attach_us(&interrupt2, 300);
timing2 = true;}
endtime = timer.read_us();
deltatime = endtime - starttime;
pc.printf("%i\r\n", deltatime);
}
}
1 Answer
8 years, 4 months ago.
Hello Hein,
There are some issues with the current implementation of Timer, Ticker, Timeout and wait family of functions for STM boards that are using a 16-bit timer. See for example this link. Fortunately STM team has already a solution which is in test phase and available here. Using the new hal_tick_16.c and us_ticker_16b.c in my project fixed all the issues. I think it is worth to give it a try.
timing1 and timing2 should be volatile otherwise you could get some weird compiler optimisation issues.
posted by Andy A 09 Jun 2017