Link-time optimization (LTO) is a very powerful compiler-optimization technique. As I noticed, it does not go very well together with debugging object-oriented programs under GCC, at least for AVR MCUs. I noticed that in the context of debugging an Arduino program, and it took me quite a while to figure out that LTO is the culprit.Continue reading
Lubarsky’s Law of Cybernetic Entomology: There’s always one more bug
(Who the hell is Lubarsky?)
A new Arduino library has seen the light of day:
SingleWireSerial. It supports single-wire, asynchronous serial, half-duplex communication. By using the input capture feature of the AVR MCUs, it is extremely accurate and supports bit rates up to 250 kbps robustly. And contrary to its title, one can even use it in a two-wire setting.
The featured image of this post is by rawpixel.com – de.freepik.com
SoftwareSerial class has the
available() method, which returns the number of characters that have been already received but not yet read. This is very similar to what the standard
Serial.available() method offers. There is an interesting difference, though. A call to
SoftwareSerial.available() is significantly slower than a call to
Serial.available(). We will look for the deeper reason of this strange behavior and I will show you three ways how to fix it.
EDIT: The problem will vanish with Arduino version 1.8.17Continue reading
Although the typical Arduino programmer is probably not interested in writing assembly code, in some situations assembly programming is essential. Let’s have a look at these situations and see what one can do.Continue reading
When things go wrong, although your program logic appears to be correct, it is time to look at the signals going into the MCU and coming out of the MCU. The best tool for that is a logic analyzer.Continue reading