Archive for category avr
A Tutorial of Proteus Isis and Proteus Ares
Posted by Sajid Muhaimin Choudhury in Electronics, pcb layout, tutorial on April 18th, 2009 , 5 Boishakh 1416
New masks for the USB ASP
Posted by Sajid Muhaimin Choudhury in Microcontroller, USB, avr, programmer on February 20th, 2009 , 8 Falgun 1415
These masks are designed by me for the USB ASP Programmer designed by Tomas Fischl (http://www.fischl.de/usbasp/)
USBASP Programmer for AVR is working on Windows Vista
Posted by Sajid Muhaimin Choudhury in USB, avr, programmer on February 17th, 2009 , 5 Falgun 1415
Finally I could get my USB programmer to work with windows vista. Firstly, I stripped of the breadboard from all previous connections, and reconnected the circuit. This ofcourse proved fatal to two of my microcontrollers, as I accidentally connected +12V to Vcc rail, instead of the input to the 7805 IC. I connected the programmer to PC, and it said unknown device. I knew I connected the D+ and D- wires from USB port wrong. The final bread board looks like this:
I tried to search the forums. They suggested to use 2007 build of winavr, I tried that (replaced avrdude.exe in the C:\winavr\bin directory with the 2007 version). Some of them also suggested to use an older version of libusb. So I did that too. After spending an hour, I did some thing I should have done a long time ago. I clicked on the orb (start), typed ‘cmd’, so Vista start menu searched cmd.exe. I right clicked on it and selected “Run as Administrator”. Now when I typed
Beginner’s Microcontroller Programming-IV: Absolute minimalistic approach to the modified SIProg
Posted by Sajid Muhaimin Choudhury in Microcontroller, SIProg, Serial Port Programmer, avr, programmer on November 22nd, 2008 , 8 Agrohayon 1415
Ok, before I startered this project, I tried to construct the USBasp and USBtiny, and was not successful with bread board. I am planning to make a better version of the USBasp in PCB, but at the moment I tried to make a really small SI Prog. It will be so small that the entire veroboard will fit into a standard serial port connector casing. I just bought one from Patuatuli:
To fit the veroboard into the small casing, you can maximum fit a 6×6 hole veroboard piece into it, by properly polishing the sides, the central piece could be two hole longer. As the header is inserted into the box, the backside of the header blocks the first row. With only five holes, I thought, at first it would be impossible to fit my circuit (http://sajiduc.blogspot.com/2008/04/beginners-microcontroller-programming.html) here.
Microcontroller Based Automatic Object Sorting by Length
Posted by Sajid Muhaimin Choudhury in Microcontroller, Projects, avr on November 6th, 2008 , 22 Kartrik 1415
External Crystals and Ponyprog
Posted by Sajid Muhaimin Choudhury in Microcontroller, avr, tips on November 2nd, 2008 , 18 Kartrik 1415
We are now working on a project that requires external crystal. I borrowed a microcontroller from my friend today. We were using external crystal for our project, and I thought that was no big deal. I brought the microcontroller home, and tried to program it. Ponyprog said it is an unknown device. I was quite anguished and thought that it the microcontroller was fried. Suddenly just for curisity, I plugged in a 12MHz crystal. And wow, ponyprog started working again!
Moral (!!!!) : When you have programmed fusebits for external crystals, you MUST use one to program the microcontroller.
USBasp: The USB based AVR programmer
Posted by Sajid Muhaimin Choudhury in Microcontroller, USB, avr, programmer on October 27th, 2008 , 12 Kartrik 1415
My laptop does not have serial port. And ponyprog, up until now, have not provided support for any USB programmers. Today, I constructed my first USB programmer on a breadboard. I had a old USB extenstion cable which was out of order as the header was slack due to wear. I cut of that part and soldered breadboard wires.
My first goal was to make a ponyprog compatible programmer that emulates parallel port. I started with: USB2LPT
Afterwards, I realized that the emulation makes programming too slow. Thus I had to move to a dedicated programmer. But I really like a GUI for inputting, especially the fusebits. AVRdude is a command prompt based programmer. A wrong fusebit setting can lock the microcontroller irrepairable by a Serial Programmer.
Then I found AVR8 Burn-O-Mat: GUI for avrdude . The interface is even better than pony prog for fuses. It actually has small comments beside fusebits. AVRdude even supports my simplified SIProg. So I proceeded to make the famous USB ASP (http://www.fischl.de/usbasp/) I forgot to connect the ICP and INT0 at first, and kept getting “Unknown USB device”. I reflashed 4 times. Finally the programmer was operational and the driver was installed successfully.
I’ll give details of my schematics later. Here is a picture of the circuit.
Update: My Programmer is working now. Read Here.
(Really) Beginners Microcontroller Guide (Part-II) Configuring Ponyprog properly and writing program to uC
Posted by Sajid Muhaimin Choudhury in Microcontroller, avr, tutorial on October 25th, 2008 , 10 Kartrik 1415
(A Continuation from (Really) Beginners Microcontroller Guide (Part-I) Compiling the first program)
(alpha version. Very unstable, still editing)
Writing program to Microcontroller
We will be using ponyprog from lancos. Although it is possible to program directly from winavr, I like the interface of the program very much.
Construct the simplified SI Prog. You’ll need:
1. A serial port DB9 Female Connector,
2. 5V1 Zener Diodes x3
3. Resistors: 15K, 10k, 4k7 x 3
4. Bread board wires
Connect the circuit on veroboard. To see how it looks go to my blog http://sajiduc.blogspot.com/2008/04/beginners-microcontroller-programming.html
To connect the programmer always consult the datasheet of the microcontroller. Connect the Mosi, MISO, SCK, Reset lines of the programmer to the corresponding pins of microcontroller, and connect GND to 0V. Connect the serial connector to the serial port of your mother board. Please do not use a usb-serial converter, and connect only to true serial port.
Goto http://www.lancos.com/prog.html and download ponyprog from there. Install ponyprog, and open ponyprog from startmenu.
After the annoying neigh sound, click ok. Pony prog will say
Click ok again
Now do the bus timing calibration:


Afterwards, it is important. Click Setup>Interface Setup. Select Serial radio button. From drop down select SI Prog API / SI Prog IO. Select the COM port in which the programmer is connected. It is COM1 if you have only one serial port, but for multiple ports, you have to select the appropriate one. Please note that 90% cases, the SIProg does not work because of not proper configuration in this dialog. So if the SI Prog does not work, try to change the COM port, or switch between SI Prog API and IO
Select the appropriate device name
Now to test if the programmer is working, Click Command>Read All. From my experience 70% cases, people don’t get a smooth read operation at the first try. See below for common problems

If every thing is ok, (Which actually did in my first experimental SIProg) Then reading will start.

Now click File>Open, and open the testprog.hex file generated by the compiler.
And then the write will be successful!
Then play with your microcontroller circuit:
Ofcource the write may not be successful.
This might be due to
1. Circuit connection error (Check if you have connected power to micr
ocontroller, check if the breadboard connections are loose, if the programmer are connected to the proper pins, if the programmer is soldered properly.)
2. Check if the BC547 transistor is working by testing if 0.7 V drop occus between Emitter and Base.
3. Check if your serial port is working and you are not using a USB-serial converter
4. Play around with the interface setup (in ponyprog) to find another suitable setting for you. (Try SIprog API, SIProg IO, Check if you have selected correct serial port)
5. This is very common for me:- the microcontroller is dead!!!!
Well, no 5 can result from 2 cases, a) a heart attack of the microcontroller (Fry out, like connecting Vcc of microcontroller to ground and ground to Vcc, microcontroller, at 90% cases just fry) b) Accidental programming of the fusebits of the microcontroller can result the SPI interface to be locked out. This can be overcome by a universal programmer. If you happen to have access to one, ask some one clear the lock bits.
6. You forgot to select the right device (I also sometimes forget to do that)
(Really) Beginners Microcontroller Guide (Part-I) Compiling the first program
Posted by Sajid Muhaimin Choudhury in Microcontroller, avr, tutorial on October 25th, 2008 , 10 Kartrik 1415
(alpha version. Very unstable, still editing)
This is actually a beginners microcontroller guide. Just in alpha version. Please suggest necessary improvements.
Select the coding scheme to C/C++ to better visualize the programming
Now type / copy paste the program:
#include <avr/io.h>
int main (void) {char c;int delay=10000;int i=0;DDRC = 0xFF;DDRD = 0x00;while (1) {c = PIND;PORTC = c;while (++i < delay);PORTC = 0x00;while (--i > 0);}}
Now in order to compile the program using winavr, we need a MAKEFILE. The WinAVR comes with a make file creator called “Mfile[WinAVR]“. Go to it by using start menu.
In the MFile Edit window, you have only two menu: File and Makefile. Click on Makefile, and change MCU Type to ATmega8,
Change main program name to firstprog.c
Now Click File>Save As, and provide filename MAKEFILE with no extensions, in the same directory where you created the firstprog.c
Now go back to programmers notepad, and select, Tools>[WinAVR] Make All
If there is no typo or other problems, the output window (Viewed by pressing F8) will show like this.
Congratulations, you have successfully compiled your first program. (Well, hopefully
)
A Voice Calling Bell
Posted by Sajid Muhaimin Choudhury in Microcontroller, Projects, avr on September 28th, 2008 , 13 Ashin 1415
This one was a group project of mine. The goal was to make a bangla voice calling bell, i.e. when a switch is pressed, the calling bell would actually play back some pre recorded voice. The project was done about 3 months back. It was quite childish, but was assigned to us, we didn’t quite choose it.
My group consisted of Sabih Omar (omar-sabih.blogspot.com), Mohammad Asif Zaman, and Atif Iqbal.
The concept of the project is quite simple. The Voice is first recorded into a PC. Then a matlab code is used to generate 8-bit PCM wave. This code is converted by MATLAB to some C-compatible code that can be readily pasted into the main coding part as a data array. When an interrupt occurs, the PCM is output via a port at a certain interval based on sampling rate (we did on 8kHz). This output is passed to an 8-bit DAC (Digital to Analogue Converter) and filtering and amplification is applied to the signal.
We didn’t have to submit any formal reports in the project, just a CD containing videos. So I don’t have it well documented.
• Sleep Mode in main routine to save power
• A pulled down switch as the bell’s push button used to drive interrupt and thus playback voice.
• Intelligently chosen response based on recurrent key presses.
If switch is pressed successively, the response changed automatically.
The responses were (remember this was a door-bell)
•অনুগ্রহ পূর্বক দরজা খুলুন (Please open the door)
•দয়া করে দরজাটা খুলুন (Kindly open the door)
•দোহাই আপনার দরজাটা খুলুন (I just beg you to open the door)
•আরে এতোবার টিপেন কেন? ভাগেন! (Why are you pressing so many times? Just get lost!)
This nice but utterly useless diagram was presented by me in my presentation:

Unfortunately, the project cannot be run by the Proteus VSM. The DAC there can synthesize a sine wave, but cannot synthesize human voice.
Another thing to note is that AVR microcontrollers keep variables in RAM and code in ROM like any Harvard Architecture device. The voice data are large (typically 8kb for 2 secs) so it is wise to keep them in Program memory.
Please remember to use the command pgm_read_byte to read from flash. We forgot this, and thought our microcontroller has gone crazy.
This is the report that we submitted to our teacher. Unfortunately it is not dubbed and is in Bengali Language.
Finally I have decided to host all project files in EDA Board and AVR Freaks, (unless they decide to unhost them.) Please download if you must, and donate me some points there if you like my projects or find them useful.
![[Bloglines]](http://www.sajidmc.net/wp-content/plugins/bookmarkify/bloglines.png)
![[del.icio.us]](http://www.sajidmc.net/wp-content/plugins/bookmarkify/delicious.png)
![[Digg]](http://www.sajidmc.net/wp-content/plugins/bookmarkify/digg.png)
![[Facebook]](http://www.sajidmc.net/wp-content/plugins/bookmarkify/facebook.png)
![[Google]](http://www.sajidmc.net/wp-content/plugins/bookmarkify/google.png)
![[Twitter]](http://www.sajidmc.net/wp-content/plugins/bookmarkify/twitter.png)
![[Yahoo!]](http://www.sajidmc.net/wp-content/plugins/bookmarkify/yahoo.png)
![[Email]](http://www.sajidmc.net/wp-content/plugins/bookmarkify/email.png)

















Recent Comments