Microcontroller Programming Issues

February 11, 2017

Bugs in software are bad, bugs in hardware are even worse, but inconsistent results are what makes it a total nightmare. Not my first post on crazy voodoo wasting precious time, I previously approached a similar issue here, so you can call this article “voodoo reloaded” without being far from the truth. Because sometimes those devices we spend so many hours to build – using the best of our logic…


Morse encoder

August 17, 2016

The morse code encodes the latin alphabet comprised of 26 letters to a binary base. Traditionally, the destination set used dots and dashes, making the encoded letters easy to transmit as signals both over radio and wire. But any binary set of symbols can be used instead. For other languages with more than 26 characters, or for special characters, there is an extended set of morse binary combinations something we…


Post Beta hardware iteration

August 23, 2015

For the Portable Environmental Monitor beta release, both the project summary and the system design document presented some of the things to improve next. The first PCB was fine, but there was a linear regulator wasting power, that had to be replaced. Also, new ideas needed more hardware changes. Here is another hardware iteration to implement all that. The new changes include: – power efficient Lithium battery voltage converter, using…


Portable Environmental Monitor

August 12, 2015

The portable environmental monitor addresses pollution, the kind that we are unable to see but directly affects our health and causes life threatening diseases. Airborne toxic chemicals, radioactive dust and radioactive radon are correlated with cases of pulmonary cancer. Since our biological senses can do little to warn us of such possible dangers, the plan was to design the Portable environmental monitor as a first line detection and warning system….


ILI9341 touchscreen LCD Library

July 23, 2015

I got a few QVGA LCD’s with resistive touchscreen for an ongoing project. All that was left to do was putting the driver code together. The LCD code part was very much similar to my previous work on the ILI9163 but this time I went for faster SPI communication (also due to the bigger resolution). The microcontroller – an Atmega128 – uses normal SPI transfer and the external quartz crystal…


Atmega8 UDP Client

February 21, 2015

As a follow-up to Radu’s Atmega8 and enc28J60 for ethernet support article, I used the libraries to implement an ATmega8 UDP client using ENC28J60 that broadcasts a simple “Hello World” message over Ethernet. Circuit Diagram is exactly the same as simple web-server project(take a look at Schematic&Docs in the project folder). Do not forget to connect CS to PORTB2 if you are using Atmega8 and modify CS pin section in…


Atmega128 Voodoo

February 9, 2015

Apparently I had no better inspiration on how to name this post. It all started with a nice sunny day, when I was in great shape for doing creative work. My plan was to do some research on the following uRADMonitor models B/C, to put everything together and start the design of the new device. With all the extra new features, it was clear I needed a microcontroller upgrade, from…


The AVR Watchdog

January 15, 2015

The AVR Watchdog is an essential mechanism to protect long term run applications from code freezes affecting their functionality.


AVR SDCard FAT support with FatFS

August 2, 2013

You’ve probably seen or done lots of cool microcontroller projects already, but did you ever consider adding permanent data storage to your projects? I did, and there are numerous advantages: saving data from sensors (data logger), saving configuration files, reading external content like images or songs, and so on! One thing is to connect an SD Card to an AVR microcontroller via SPI (relatively easy), a completely different thing is…


How to set the AVR Fusebits

March 11, 2013

Learn how to set your atmega to work with various external crystals, program the fusebits, and build a fusebit doctor to revive your AVRs, in case you wrote the wrong settings .