ATtiny13 – hardware PWM

This article shows how to make an ATtiny13 to generate hardware PWM (Pulse Width Modulation) signal. The example code uses timer in Fast PWM mode (WGM02:0 = 3, see manual section 11.7.3). In this mode, by setting the COM0A1:0 bits to one, the compare unit allows generation of PWM waveforms on the AC0A pin (PB0) with duty resolution 0..255. The presented example … Read more

Bit-level operations – check integer is even or odd

In this short article I will exaplain how to use bit-level operations to verify that integer is even or odd. It’s very useful and fast verification. Examples below have been compiled and tested using gnu-gcc. $/> gcc example.c -o example CHECK EVEN To verify that integer is even we need to check first bit is not set. #include <stdint.h> #include <assert.h> … Read more

Bit-level operations – bit flags and bit masks

This article introduces to bit flags, bit masks and basic bit-level operations on them. In the world of microcontrollers, when you need to save a boolean values (true/false) then it can be useful to “pack” individual boolean values into a single integer value for storage efficiency purposes. This is done by using the bitwise and shift operators to set, clear, … Read more

Microcontrollers and basic bit-level operations

Why it’s so important to know how it works? Well, if you’re making a software for microcontrollers you have to use it in many places in the code to for example manipulate table of processor registers. It also helps to make the program smaller, much faster and allows to perform neat tricks (this isn’t always … Read more

A few funny projects using my simplified implementation of DFT

Bilexa Bass – Singing Fish, Sound-Actived 3D-printed Vibrator and Scared Spider Toy. I wanted to highlight these funny (sometimes crazy!) projects as they are using my version of simplified implementation of DFT I created for project ATtiny13 – dance lights with FFT and because the authors are very idea-driven, original and just awsome. Bilexa Bass – Singing Fish (Bob, ATtiny84) … Read more

ATtiny13 – controlling LEDs WS2811/WS2812

There was a time when controlling RGB LEDs was not always an easy task. I this article I would like to show how to make it without difficulty using one ATtiny13 and LEDs based on WS2811/WS2811 driver. The addressable LEDs are using protocol similiar to OneWire (very time-depended protocol) and can be connected together to create a strip … Read more

ATtiny13 – blinky with timer OVF (assembler version)

Another blinky project in assembler. That one is based on Timer Overflow interrupt. In our circuit a LED is connected to PB0 and is blinking for roughly every 0.5 of second. The code is on Github, click here. Parts List ATtiny13  – i.e. MBAVR-1 development board Resistor – 220Ω, see LED Resistor Calculator LED Circuit Diagram Software This code is written in … Read more

ATtiny13 – blinky with timer COMPA (assembler version)

In this example I’would like to show you how to write in assembler “blinky” project that uses timer COMPA (Timer/Counter Compare Match A) interrupt. The previous blinky project is very similar to what is presented here, but with one exception – the delay section has been replaced by timer interrupt.  In our circuit LED is connected to PB0 and is blinking … Read more