10 comments

[ 2.1 ms ] story [ 34.1 ms ] thread
Very very nice article. Nice to see you can use something else than arduino.
How similar is Emgo to 'genuine' Go? The syntax looks the same. Perhaps this is a silly question, but is it garbage-collected?
> but is it garbage-collected?

Nope.

TBH this is not that small hardware. There are boards with this chip that can run JS (with interpreter running right on chip)
Yup, come back when you can target an ATtiny.
Yes, there is smaller hardware - however this is indeed small hardware. Especially in the context of running go.

This mcu has 4kb, which is not a lot of ram.

8bit controllers are sometimes 16kb - 32kb

Very interesting.
>> arm-none-eabi-size

I wish I knew about this when dealing with MIB520 and MicaZ

Time to plug one of my favourite (semi-academic) programming languages targeting the embedded space: Céu[0].

It uses a Structured Synchronous Reactive Programming paradigm. Synchronously concurrency means that it is single-core, and not parallel. More accurately, it awaits events in parallel (hence "synchronous reactive programming"), using "trails" instead of threads.

An example from the documentation[1] below:

> The example in Céu that follows blinks a LED every second and terminates on a button press:

    input  none   BUTTON;
    output on/off LED;
    par/or do
        await BUTTON;
    with
        loop do
            await 1s;
            emit LED(on);
            await 1s;
            emit LED(off);
        end
    end

par/or do ... with ... end is an example of two parallel trails, each of which much have one or more await statements, meaning the block on these events. The or in par/or means that if either trail finishes, the whole section ends. In this case, the second trail has an infinite loop (which isn't a problem due to the await statements yielding control to the scheduler), so the program only ends if the first trail ends after a button press.

A more elaborate example by fellow Céu enthusiast Johnicholas can be found here[2][3].

[0] http://ceu-lang.org/

[1] http://fsantanna.github.io/ceu/out/manual/v0.30/

[2] http://johnicholas.github.io/2018/03/24/Hello_Ceu.html

[3] https://github.com/Johnicholas/learn_ceu_030