Thanks for the reply. That certainly makes sense. Another oddity I see is when running this code:
Code: Select all
import pyb
import utime
dum1 = utime.ticks_us()
dum2 = 0
dum3 = 0
dum4 = 300
dum5 = 0
a = 0.5
def tick_motor(timer):
global dum1,dum2,dum3,dum4,dum4
dum2 = utime.ticks_us()
print(dum2-dum1)
while dum3<dum4:
dum3 = dum3 + 1
dum3 = 0
dum5 = utime.ticks_us()
print('Loop Time: ', utime.ticks_diff(dum5,dum2))
dum1 = dum2
tim1 = pyb.Timer(5)
tim1.init(freq=500)
tim1.callback(tick_motor)
Some occasions I see this output:
Code: Select all
1999
Loop Time: 1479
2000
Loop Time: 1489
2000
Loop Time: 1479
2000
Loop Time: 1483
2000
Loop Time: 1477
2000
Loop Time: 1479
But if I break and soft reset and run again, I see this output without changing the code:
Code: Select all
1000
Loop Time: 481
1000
Loop Time: 478
1000
Loop Time: 477
1000
Loop Time: 478
1000
Loop Time: 482