Programming in C – Tips for Embedded Development.

Here I will highlight some features of C language commonly used in 8 bit embedded platforms like 8051, AVR and PICs. While programming microcontrollers in C most of the time we have to deal with registers. Most common tasks are setting and clearing bits in a register and check whether a bit is 0 or 1 in a given register. So here I will give detail on those topics, it will help you if you are new to embedded programming in C and if you get confused when you see some codes. A Register A register is simply a collection of some bits (mostly 8 bits in case of 8bit MCUs). Either each different bit in a register has some purpose or the register as a whole holds a value. Registers serves as connection between a CPU and a Peripheral device (like ADC or TIMER). By modifying the register the CPU is actually instructing the PERIPHERAL to do something or it is configuring it in some way. And by reading a register, the CPU can know the state of peripheral or read associated data. Fig.: CPU writing to Peripheral Register   Fig.: CPU Reading from Peripheral Register Binary Numbers in C When you write a=110; in C it means you are setting the value of variable"a" to "one hundred and […]

RF Communication Between Microcontrollers – Part I

In many situations a communication link between to devices becomes essential. This communication can be wired or wireless. If two devices are close to each other (like a MCU and a Memory) a wired link is preferred. How ever in many situations two devices are reasonably far apart. In that case a wireless link is preferred. Two popular wireless communication technologies are IR Communications Used in IrDA, and Remote controls Short Range Requires two devices to be in line of sight. There should be no Opaque Obstacle in between the devices. Easy and low cost to implement RF Communication Widely used, including Bluetooth,Radios,Cell phones, Satellite etc Wide range, from few meters to millions of kilometers (Can be Used to control Robots in Mars) Does not requires two devices to be in line of sight. Can cross many obstacles Circuits can be complicated and costly. In this tutorial we will learn how to practically implement a wireless link between two MCUs. This link will be used to send and receive digital data. We will create a Radio Frequency link. How ever as I said the RF circuits are little complicated so we will use ready made RF Modules. These are easily available and low cost. What is a RF Module ? A RF Module is a small circuit pre built and […]

AVR Project – Digital Stop Watch with ATmega8

Hello Friends, In this tutorial we will make a "Digital Stop Watch" using an AVR ATmega8 Microcontroller. This will help you learn many concepts like Multiplexed Seven Segment Display Interfacing Using AVR Timers Using Interrupts And many others too. The code is written in C language for avr-gcc (WinAVR) . Fig.: Digital Stop Watch Prototype Steps to Build the "Digital Stop Watch" using AVR ATmega8 MCU Make the circuit according to the schematic on general purpose PCB or a BreadBoard. Make a project in AVR Studio and add a new file to the project. Copy/paste the "c" code. Set optimization as "o2" and CPU frequency as 16000000Hz. Save and Build the project. You will get a HEX file. Burn this HEX file to an ATmega8 MCU using a tool such as eXtreme Burner AVR. Set High Fuse = C9(Hex) Low Fuse = FF(Hex). How to do this depends on you programmer software. I have use a xBoard MINI development board for fast and easy prototyping. The Displays+Transistors+Key are on the Veroboard while the Core CPU unit + power supply is in the xBoard MINI. It can be programmed "In System" over USB Port using eXtreme Burner – AVR software toolkit. Fig.: Digital Stop Watch made using xBoard MINI   How to Use the "Digital Stop Watch" When initially powered up […]