Read Rust

Tag: avr


I often got interested by Arduino’s because of some specific problems they can solve, like: programming your thermostat for instance, automate your house, etc… When I first heard of it a friend of mine gave me some hardware so I can experiment. Unfortunately I never really managed to get into it mainly because it was not what I imagined. Coming from a “Python Developer” background, doing C/C++ felt really bad and using an IDE in Java felt like I had no control or no idea of what I was actually doing.

But ~2 years ago I’ve discovered Rust and it changed completely my career. Rust quickly became my favorite programming language and it allowed me to explore new horizons. The news did reach me when I heard it is coming to embedded development and I decided recently to give it a real shot. Not because I needed anymore, but just because I could.

Arduino and embedded development in general are not easy to grasp as you need general knowledge in electronic engineering: what is a resistor, how to measure things, what happens if I measure from here to there, how do I even find the information about what am I supposed to connect where. But on the other hand it is important to say that Arduino did make everything very easy and accessible to anyone… (if you don’t mind C/C++ and an opinionated IDE.)

arduino avr

With the recent ability for Rust to compile for AVR microcontrollers, I thought that it's time for me to bring my favorite feature of Rust to Arduino: async/await.


The avr-rust compiler, once existing as a fork, has since been merged into upstream Rust as of July 2020.
The standard Rust nightly compiler can be used to compile crates for AVR - no compiling from source required.

The recommended way to use avr-rust is via rustup using the official nightly version of the Rust compiler.


AVRA-RS is a Rust rewrite of AVRA. I have created AVRA-RS to fix various shortcomings of the original software. This project now became something more.

First of all, this is not a complete implementation of the original assembler. It also has some important differences, for example, it is tested as much as possible.


View all tags