Spyke
aussie.zone

Real pain in the ass when you're in embedded and your carefully placed NOPs get stripped

27
lemmy.ca

Tell the CPU to wait for you?

Na, keep the CPU busy with useless crap till you need it.

67
jaybonereply
lemmy.world

Fuck those other processes. I want to hear that fan.

28
lemmy.world

On microcontrollers that might be a valid approach.

26
kevincoxreply
lemmy.ml

I've written these cycle-perfect sleep loops before.

It gets really complicated if you want to account for time spent in interrupt handlers.

11

Thankfully I didn't need high precision realtime. I just needed to wait a few seconds for serial comm.

2
towerfulreply
programming.dev

Nah, some MCUs have low power modes.
ESP32 has 5 of them, from disabling fancy features, throttling the clock, even delegating to an ultra low power coprocessor, or just going to sleep until a pin wakes it up again. It can go from 240mA to 150uA and still process things, or sleep for only 5uA.

4
programming.dev

This should be the new isEven()/isOdd(). Calculate the speed of the CPU and use that to determine how long it might take to achieve a 'sleep' of a required time.

12

I took an embedded hardware class where specifically we were required to manually calculate our sleeps or use interrupts and timers rather than using a library function to do it for us.

11
lemmy.world

Javascript enters chat:

await new Promise(r => setTimeout(r, 2000));

Which is somehow even worse.

10
lemmy.world

I actually remember the teacher having us do this in high school. I tried it again a few years later and it didn't really work anymore.

5
snaggenreply
programming.dev

On my first programming lesson, we were taught that 1 second sleep was for i = 1 to 1000 😀, computers was not that fast back then...

13
ferretreply
sh.itjust.works

I mean maybe in an early interpreted language like BASIC… even the Intel 8086 could count to 1000 in a fraction of a second

3

This was in 1985, on a ABC80, a Swedish computer with a 3 MHz CPU. So, in theory it would be much faster, but I assume there were many performance losses (slow basic interpretor and thing like that) so that for loop got close enough to a second for us to use.

https://en.m.wikipedia.org/wiki/ABC_80

5

I just measured it, and this takes 0.17 seconds. And it's really reliable, I added another zero to that number and it was 1.7 seconds

2

You reached the end