ISP Programmer for ATmega32 Microcontroller

So far I’ve discussed about the micro controller basics and the compiler software. I’ve yet not written anything about programming.

ATmega32 series micro controllers support 3 types of programming

  •   Parallel Programming
  •   ISP Programming or serial Programming
  •   Programming via JTAG

Here ISP stands for In System Programmer. To burn a micro controller just the burning Hardware is not enough, it requires software also that would download the program present in a computer or memory device into the micro controller.

                Now the software which I am talking about is named PONY PROGRAMMER 2.06. My circuit is adapted from the website of Pony Programmer. It uses PC COM PORT to download the program into the micro controller. It has a signal amplitude of +5 to +12 volt representing binary ‘1’ and -5 to -12 representing ‘0’.

                The micro controller, ATmega32 is programmed using the pins meant for SPI communication. To enable programming, the microcontroller must be taken to the RESET state by pulling its reset pin LOW (Logic 0, or say 0 V). In this state, microcontroller is programmable in either mode (Parallel programming or serial programming). Micro controller always accepts 0 V as logic 0 and +5 V as logic one.

                The signals transmitted from PC is not in a form that could be accepted directly by the micro controller. Those signals from PC should be made suitable for micro controller. In the programmer, Zener diodes provide necessary conditioning for the signals. It is wired in such a way that it converts ±12 volt signal to +5-0 volt signal which is suitable for the micro controller.  A resistance is necessary to limit the current in the nodes of Zener diodes, without the which the Zener diode may burn off. And computer internal circuits may also receive harms.

A high signal (+5V) in the ‘Reset’ pin of micro controller brings it into operational state. A low signal (Ground) drives it into programming mode. Internal pull up resistors are provided at the reset pins and if nothing is connected to this pin, the micro controller tries to execute the program written within it. Designers can provide a resistance capacitance reset circuit, but it’s not always necessary. Whatever, a push button is used in most cases to provide reset facility. Here in the burner circuit an open collector output is provided to the reset pin and it is driven by the programmer through the port. This much is enough.

 The necessary data transmission and reception work portion is handled by the pony programmer. Follow the links provided to download pony programmer. The following burner circuit can burn ATmega32 microcontroller. Connect the derived signals to the adjacent pins, attach the cable to com port, power up the device i.e. micro controller, and the micro controller is ready to be programmed.

ISP Programmer Circuit Diagram

Image:  Circuit diagram of the ISP Burner

Image: Circuit diagram of the ISP Burner

ISP burner cable

Programming cable

ISP programmer connection arrangement

Connection Arrangement

So that is how the circuit is set up. Now let me tell you that the micro controller runs upon the internal calibrated RC oscillator in the pictures. So that there is no crystal is attached. Yet the micro controller is programmable. Let us see the software settings. First of all, select the port, to which you have attached the device!  And the programming device from the menu “Set Up>Interface Set Up…”. Select “SI Prog I/O”, this one provides fastest programming speed. And about the ports, it should be com port for this programming cable! Now select the port you have the cable attached to.

Selecting the programmer

Now come to the device selection menu. Here ATmega32 belongs to the AVR family. So it is listed under “Devices> AVR micro”. Select ATmega32 as your device. Auto detection will also do.

Choosing the device

Now after this two vital things check out If your circuit is working or not. Choose “Command>Read All”

Command menu

Now if you see that it is reading the micro controller without any error message, your programming cable is working and you can program the micro controller with it.

Work Progress

Read Successful

You can Burn your hex file with it (Compilers provide hex files to program micro controllers). Just open “File> Open Device File…” now an window will open, now browse for your hex file, load it into the pony programmer, and burn. Pony programmer supports click and drag operation too. That means, if you drop the hex file into the pony programmer, it will automatically catch it.

Components:

  • DB9 female connector
  • 2 X 1K resistors
  • 2 X 5.1 V Zener diode
  • 1 X 15K resistor
  • Vero board
  • BC 547 or any general purpose NPN transistor
  • Male Relimate connector (6PIN & 2PIN)

Links for Reference:

ATmega32 datasheet

Pony Programmer download page

Pony programmer 2.06 download

Note: 1. Make sure that you have a COM PORT in your computer hardware and your operating system recognizes it. Check it from “Control Panel > Administrative Tools > Computer Management”. In the cascaded list pane, find the following

“Computer Management > System Tools > Device Manager > Ports (com & LPT)”. If COM ports are present under this list, this circuit will work fine. Else, look for a USB based burner.

Note 2. This burner will work fine for ATmega16 too.  For ATmega8, you need to connect the signals to the respected pins.

Note 3 .You can omit the male 2-PIN Relimate connector

 Bibliography

Lancos.com and Atmel

Mr. Gaurav Chaudhuri’s Blog

Custom Search

Leave a Reply

28 Responses to “ISP Programmer for ATmega32 Microcontroller”

  • Rano says:

    Rakesh any way of burning the ATmega32 chip from usb port of laptop?

    • rakesh says:

      Yes, It’s possible. But there one intermediate IC is required. There ready-made boards are available in the market and over the internet too. It’s better to grab one than making one by yourself.

    • Anish says:

      Google for USBASP. you can find it in ebay

  • Leo says:

    Hi Sir Rakesh,

    I tried AT89S52 but it displays “Device not Responding” when executing “Read All” and “Write All” commands. What seems to be the problem? And on the Picture above what voltage did you use and where did you connect the voltage terminals at the breadboard?

    • rakesh says:

      Leo,
      Working with the 89S52 little bit tough. Programming it, is tougher. That’s why I avoided to work with it. If your circuit is fine, try selecting the appropriate device from the drop down list as shown before. I hope that will help.

  • rohin says:

    i love your feedback.now i get my answer.now i am going to start my project.it is very useful information.many website is telling about it but no one telling very clearly like your website.thank you dear rakesh and circuitstoday.com.i love your website.thankyou.

  • rohin says:

    one more question, can i burn atmel89s52 40 pin with this isp programmer.i shall be very thankful to you.

    • Rakesh says:

      I have not tried 89S51 to burn with pony programmer(Not there is support for 89S52 and 89s53). I refer you to go to the pony programmer website. Schematics are there. You can follow them. I actually never felt any ease of using 8051 architecture based micro-controllers.

  • rohin says:

    dear sir,i am new in micro controller.i can understand that p3 is connection to atmega 16/32 but what is p5 header two.plz tell me soon.

    • Rakesh says:

      This P5 gives an option to skip a breadboard for programming the ATmega16/32. It’s optional and you can remove it from the circuit, It doesn’t harm at all. But, then, you need to wire the micro controller mounted on the breadboard. And then you can supply it with 5V

      you can skip calling me sir, you can directly address me as Rakesh.

  • Andrew says:

    Hi,
    I just built the isp programming circuit using the provided schematic for programming my atmega 32L.
    however, when i try to “read all” using pony prog, i get an error message “Device missing or unknown device (-24)”. If i ignore the message, the device ends up reading the hex file in the microcontroller.
    How can i avoid the error message?

    regards

    • Rakesh says:

      While making this cable, I faced this problem lot of time. In case there is something wrong with the connection or setting, this message comes up. This won’t show up only if the the Pony programmer recognizes what is the the device that is connected to. Try making the following checks:
      1> First of all check the settings in the pony programmer, suppose you are connecting ATMega8, select the same from the device menu. The read hex file must not be all FF in this case.
      2> The port selected for programming must be proper. In this case it must be on of the physical com ports.
      3> Check if the signals available in the output of the circuit. you may use LED’s to detect the signal.
      4> Check if at the time of reset, the transistor turns on. Or you may try connecting the RESET pin to ground and then program.

      • Andrew says:

        Hi Rakesh,
        Thanks for the reply. I went through my circuit and found that i had not connected my signal’s ground correctly. I did the troubleshooting and it is now ok.

  • de silva says:

    dear sir,
    in the circuit diagram shown R5,R6,R7,R8 As 1k resistors,but the Components list shows it,

    2 X 1K resistors,
    1 X 15K resistor,
    which one is the right one?

    • Rakesh says:

      You can replace the 1K resistor with any resistor valued between 1k to 10k. Sorry for late reply, I have been really busy these days.

  • alok says:

    can we use a db9 to usb connector to program it from laptop?

    • rakesh says:

      Sadly- No. The USB to RS232 converter will not work. But the chip used in the converter can be used to design a ISP Burner. The ic used is FTDI chip’s FT232. And it was exclusively used in Arduino boards till 2011. The Chip and arduino’s driver work fine. But that chip, USB-Serial driver and PONY-PROG doesn’t mix.

  • Jose Limon says:

    Whats the wattage of the resistor? can i use AVR STUDIO FOR THIS?

    • rakesh says:

      1/4 or 1/6 watt is fine.

      And About AVR studio Compatibility. This burner cable cannot be driven from the inside of the AVR studio. But, It can download the hex file generated by AVR studio.

      Hex file is generated after you build the code. and it can be found inside the “\\default” directory.

      the flow is as follows

      Create a project in avr studio -> Write your program -> build the program -> find out the Hex file -> open Pony programmer -> load the hex file -> attach the cable to PC and connect the other end to the micro controller -> Select options in the pony programmer -> download the hex file into micro controller.

  • Rakesh says:

    @Anish
    The switching between normal mode and programming mode is made by the reset pin. The reset pin has two functions. If it is tied high, the micro controller will run in normal mode. this pin is internally pulled up by a resistor. So even if users are not connecting any resistor, the micro controller will run in normal mode

    And when the RESET pin is tied low, the micro controller enters programming. Two types of programming can be made in this mode. ISP and parallel programming.

  • Anish says:

    Oh, sorry i didn’t read the post completely.I have another question though. Will a serial to usb converter work with this ISP programmer?

  • Anish says:

    Hi rakesh,
    So, the atmega32 does not require the programming voltage. But how it switches between programming mode and normal mode? like the PICs

  • Rakesh says:

    Ow, sorry. About the voltages, I meant that 13.2V. ATmega32 doesn’t need it. Some micro controller requires this voltage for some modes of the programming.

  • Rakesh says:

    @Shurid
    ATmega32 doesn’t need any voltage as some of the ATtiny micro controllers or some PIC micro controllers need it. The transformer is required for the circuit 5V regulator, it supplies power to the micro controller.
    And about the Zener diodes, It doesn’t actually converts the voltage. The term “Shaping” is more appropriate for it’s operation. A Zener diode brings down the voltage between two nodes to the Zener diode’s voltage rating by draining current through it.

  • Shurid says:

    Another thing, Rakesh, that transformer (in image 3), have u used it for supplying the programming voltage (~13.2V) to the uC ?

  • Shurid says:

    rakesh …

    “Zener diodes provide necessary conditioning of the signals. It is so attached that it converts ±12 volt signal to +5-0 volt signal which is suitable for the micro controllers …” — can a zener convert voltages ? or are u talking about level down the voltage ??