How to make ATtiny13 running at 128 kHz clock source

The ATtiny13’s default clock source setting is the Internal RC Oscillator running at 9.6MHz with clock divider /8 (fuses L=0x6A and H=0xFF; see fuse calculator). This short article explains how to downclock the ATtiny13 by swtiching to Internal RC Oscillator running at 128kHz without clock divider (fuses L=0x7B and H=0xFF) and still have a control to program AVR … Read more

How to update AVR USBasp firmware to latest version

The common reason why you would like to update this firmware is unlock slow-sck function for cheap (e-bay or Aliexpress) USBasp programmers, like this one on the picture. The slow-sck function allows to program AVR chips running at very low frequency clock source (i.e. 128kHz). When your USBasp programmer prints that warning it means that firmware update is … Read more

ESP8266 – WiFi beacon spammer

In this article I will show you how to make a WiFi  beacon spammer on ESP8266. Beacon spamming involves broadcasting a valid IEEE 802.11 beacon frames using fake SSIDs and MAC addresses. This educational project is hackable and easy to get running. The code is on GitHub, here. What is WiFi Beacon? WiFI beacon frames are used by … Read more

Twiddle-factor-based FFT for microcontrollers

This version of FFT algorithm has been tested with success on a various microcontrollers (AVR – including ATtiny13, STM32 and ESP8266). The code is relatively simple and short what makes it easy to port to other programming languages / microcontrollers. In this tutorial I will open the black-box and show you some practical information about how this algorithm works and how to use … Read more

Arduino – how to start?

Arduino is an open-source electronics platform based on easy-to-use hardware (Arduino boards), software (Arduino IDE), which allows to write programs and upload them to board (usually via USB connection) and an amazing community. In my opinion it’s a great tool to learn about microcontroller programming and for fast device prototyping. Arduino is not only for beginners. … 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

How to install AVR assembler AVRA on Linux (Ubuntu)

In this article I’d like to show how to install AVRA – an opensource version of assembler for ATMEL (currently MICROCHIP) chips on Linux (Ubuntu). Please note that AVRA is not a part of AVR-GCC and uses different directives. 1. Install AVRA sudo apt-get install avra 2. Compile and flash example program (ATtiny13) Clone repository from GitHub cd $HOME git clone … Read more