NerdKits - electronics education for a digital generation

You are not logged in. [log in]

NEW: Learning electronics? Ask your questions on the new Electronics Questions & Answers site hosted by CircuitLab.

Support Forum » How to install the NK bootloader

February 19, 2011
by Rick_S
Rick_S's Avatar

As of late, I've noticed a lot of interest in the programming of the bootloader onto either a new or existing micro-controller. This post is to provide a brief instruction to those venturing into this.

Programming a bootloader on a micro-controller requires additional hardware that was not provided with your NerdKit.

First and foremost, programming a bootloader requires a different type of programmer. While there are other methods to install a bootloader, for this instruction, I am going to focus on the ISP programmer. An ISP (or In System Programmer) is a device that connects to the SPI port of your micro-controller to program it via a serial protocol. There are several of these devices readily available on the internet, or if you are adventurous, you can attempt to build your own from scratch.

Some common ISP programmers include:

  1. DAPA - Direct Access Parallel Adapter. This is a somewhat outdated homebrew programming method. To use this type of programmer, you MUST have a TRUE parallel port in your computer, not a USB to parallel adapter. The schematic for this can be found several places on the web.
  2. DASA - Direct Access Serial Adapter. This is the serial variation of the DAPA programmer. It is also a homebrew programmer that requires a TRUE serial port in your computer, not a USB to serial adapter. This schematic too can be found several places on the web.
  3. USB - ISP Programmer. There are several variations of these available. Many commercial types even some directly from Atmel. Some of these would be the Atmel Dragon, USBASP, AVR MKII, USBTinyISP, etc...

There are others including the popular STK500 dev kit from Atmel, and some other buffered parallel port programmers that can be used. The type you use isn't terribly important. I currently use a programmer I purchased in kit form on ebay. It has the USBASP firmware on it.

Here is a photo of the programmer I use. You may be able to find one on ebay, or from the designers WEBSITE.

PHOTO

PHOTO

Once you have your programmer, you need to keep a couple of things in mind. Some programmers will supply power to your circuit for programming, some require the circuit to have power. The programmer I am using is capable of supplying the power. As a result, I do not use the power regulator or battery when programming.

OK, let's get started.

To program the bootloader you will need to build your breadboard very similar to how the initial setup in the guide describes. If your programmer supplies power, you can leave the regulator portion off the board. The main difference is that you MUST replace the jumper wire at pin1 with a resistor (I use 10k).

This Photo illustrates the basic setup.

PHOTO

Here I have added a small circuit board I made that breaks out the MOSI, MISO, SCK, and Reset pins from the programming cable to my breadboard. You can purchase similar breakout boards on e-bay, or just attach wires into the ribbon cable connector to the proper places on your breadboard.

PHOTO

This photo shows the connections to the micro-controller.

PHOTO

And Programmer...

PHOTO

If you go your own route, the pin-out for the connector is this. (This is the header pinout on a board)

PHOTO

Once all your connections are made, you are ready to start loading the bootloader.

The NK team kindly has done most all of the work here for you in providing you with a compiled source to upload and a list of all the fuse settings. The main thing here is to make sure to use the proper bootloader for the chip you are programming. The ATMEGA168 and ATMEGA328P are different and used different fuse settings and bootloader file.

The chip I am using in my example is the ATMEGA328P.

In your code folder you downloaded from the member area, you will find 2 folders for bootloaders. They are called "bootloader168" and bootloader328P)

The first thing you need to do is look at the makefile.

The default makefile uses a DAPA programmer. You must change this to the type of programmer you have prior to attempting to load the files.

In my case, I changed the dapa in the 1st line to usbasp so mine reads like this.

AVRDUDEFLAGS=-c usbasp -pm328p

Now, just to make sure we start of fresh, it's a good idea to do a chip erase. This will make sure the lock bits are cleared and any existing bootloader/program is cleared off the chip. (It will also test the setup.

To do this simply type this from your command line.

avrdude -c usbasp -p m328p -e

(substitute your programmer and micro in the proper spots as needed)

If your setup is good, you should see this response.

C:\Users\Rick\Desktop\Code\BOOTLO~2>avrdude -c usbasp -p m328p -e

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.02s

avrdude: Device signature = 0x1e950f
avrdude: erasing chip

avrdude: safemode: Fuses OK

avrdude done.  Thank you.

If you did, your setup is good, and you are ready to proceed to programming.

After you've done the erase, you need to set the fuse bits in the micro to configure it.

This is done by navigating into your bootloader folder and typeing:

make fuses

If this was successful, you should see a bunch of lines scroll on your screen as each fuse is programmed. Make sure each section verifies. For the 328P I'm programming, this is what the response is from make.

C:\Users\Rick\Desktop\Code\BOOTLO~2>make fuses
avrdude -c usbasp -pm328p -U lock:w:0x2f:m

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.02s

avrdude: Device signature = 0x1e950f
avrdude: reading input file "0x2f"
avrdude: writing lock (1 bytes):

Writing | ################################################## | 100% 0.00s

avrdude: 1 bytes of lock written
avrdude: verifying lock memory against 0x2f:
avrdude: load data lock data from input file 0x2f:
avrdude: input file 0x2f contains 1 bytes
avrdude: reading on-chip lock data:

Reading | ################################################## | 100% 0.00s

avrdude: verifying ...
avrdude: 1 bytes of lock verified

avrdude: safemode: Fuses OK

avrdude done.  Thank you.

avrdude -c usbasp -pm328p -U efuse:w:0x05:m

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.03s

avrdude: Device signature = 0x1e950f
avrdude: reading input file "0x05"
avrdude: writing efuse (1 bytes):

Writing | ################################################## | 100% 0.00s

avrdude: 1 bytes of efuse written
avrdude: verifying efuse memory against 0x05:
avrdude: load data efuse data from input file 0x05:
avrdude: input file 0x05 contains 1 bytes
avrdude: reading on-chip efuse data:

Reading | ################################################## | 100% 0.02s

avrdude: verifying ...
avrdude: 1 bytes of efuse verified

avrdude: safemode: Fuses OK

avrdude done.  Thank you.

avrdude -c usbasp -pm328p -U hfuse:w:0xd2:m

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.03s

avrdude: Device signature = 0x1e950f
avrdude: reading input file "0xd2"
avrdude: writing hfuse (1 bytes):

Writing | ################################################## | 100% 0.02s

avrdude: 1 bytes of hfuse written
avrdude: verifying hfuse memory against 0xd2:
avrdude: load data hfuse data from input file 0xd2:
avrdude: input file 0xd2 contains 1 bytes
avrdude: reading on-chip hfuse data:

Reading | ################################################## | 100% 0.02s

avrdude: verifying ...
avrdude: 1 bytes of hfuse verified

avrdude: safemode: Fuses OK

avrdude done.  Thank you.

avrdude -c usbasp -pm328p -U lfuse:w:0xf7:m

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.02s

avrdude: Device signature = 0x1e950f
avrdude: reading input file "0xf7"
avrdude: writing lfuse (1 bytes):

Writing | ################################################## | 100% 0.02s

avrdude: 1 bytes of lfuse written
avrdude: verifying lfuse memory against 0xf7:
avrdude: load data lfuse data from input file 0xf7:
avrdude: input file 0xf7 contains 1 bytes
avrdude: reading on-chip lfuse data:

Reading | ################################################## | 100% 0.02s

avrdude: verifying ...
avrdude: 1 bytes of lfuse verified

avrdude: safemode: Fuses OK

avrdude done.  Thank you.

After this is done, you are ready to send the bootloader to the chip. This can be done by typeing:

make install

Once you've done this, you should get the following response from make.

C:\Users\Rick\Desktop\Code\BOOTLO~2>make install
avrdude -c usbasp -pm328p -U flash:w:foodloader.hex:a

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.02s

avrdude: Device signature = 0x1e950f
avrdude: NOTE: FLASH memory has been specified, an erase cycle will be performed
         To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "foodloader.hex"
avrdude: input file foodloader.hex auto detected as Intel Hex
avrdude: writing flash (31756 bytes):

Writing | ################################################## | 100% 15.62s

avrdude: 31756 bytes of flash written
avrdude: verifying flash memory against foodloader.hex:
avrdude: load data flash data from input file foodloader.hex:
avrdude: input file foodloader.hex auto detected as Intel Hex
avrdude: input file foodloader.hex contains 31756 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 9.38s

avrdude: verifying ...
avrdude: 31756 bytes of flash verified

avrdude: safemode: Fuses OK

avrdude done.  Thank you.

If you made it to this point,

Congratulations!

You just installed your bootloader. You should now be able to connect the micro-controller as shown in your guide and use it to upload your programs via the NK programming cable.

Rick

February 19, 2011
by JKITSON
JKITSON's Avatar

THANKS RICK

VERY WELL DONE..

JIM

February 19, 2011
by n3ueaEMTP
n3ueaEMTP's Avatar

Rick, this is fantastic, thank you!!!

Chris

February 20, 2011
by Rick_S
Rick_S's Avatar

No problem, hope people find it helpful.

Rick

March 16, 2011
by Ralphxyz
Ralphxyz's Avatar

Man Rick, this is such a great tutorial. It really explains everything step by step.

Of course it has failed to work so far but I do not have a good record of things working like they should.

I am using the ATmel Dragon programmer (dragon_pp) in HVPP (High Voltage Parallel Programming) mode.

The USB fails to be found, I'll keep playing with it and try it on my MAC there I can set a com port.

But thanks once again, gee there aught to be a compilation available of all of these user contributed tutorials,

you know something like a FAQ maybe.

Ralph

March 16, 2011
by Rick_S
Rick_S's Avatar

Thanks for the compliments Ralph. They are appreciated.

Why are you doing HVP Programming instead if ISP? Did you really muck one up?

Rick

March 16, 2011
by Ralphxyz
Ralphxyz's Avatar

For some reason I can not get ISP to work, either on the ATmel Dragon or on a ATmel STK600.

To load the Bootloader (foodloader.hex) using AVR Studio it is a simple 1- 2 -3 process, So it is easy and I do not have to think about it. In other words I am using HVPP because it works. Setting the fuses in AVR Studio is not for the faint of heart, in fact there are fuse settings in the mike-fusesettings.txt document that you can not set in AVR Studio. Using the "make fuses" would ensure using the same settings.

I just have to spend the time to work out why the ISP mode does not work. And to figure out what is happening with the USB detection.

I even made a target board to use with the Dragon and STK600 but that also failed in using ISP.

I had a unnamed "BETA" ISP programmer (that worked great once I figured out the AVRDUDE syntax to use) but that has never been released or has had limited disclosure. The beta programmer used a Nerdkit ATmel 168 controller as was discussed in a thread we had last month with you and Noter, that essentially described the beta programmer I had received step by step.

I tend to try things two or three times and if they do not work and something else does then I just move on and "possible" get back to them at a later date. So sometimes I get back and get things working or sometimes I never get around to it. The ISP problem I get back to every 2 or 3 months and spend a afternoon trying to get it to work. I even asked support@atmel for help describing what was happening and they ended up apologizing for the terrible STK600 documentation, promising to do a complete job in the next release of AVR Studio. They were baffled by my problem. I believe one of the problems with the STK600 is that the contacts have a laquer layer over them that has to be removed.

So I tried and could not detect the USB using the dragon I even used -P usb and that just essentially changed the same error message.

The Dragon works fine connecting to the usb using hvpp and AVR Studio.

Ralph

March 17, 2011
by SpaceGhost
SpaceGhost's Avatar

What an excellent tutorial! Great step by step instruction, this information will surely come in handy for a lot of us. Thank you Rick for your straight-forward, easy to follow instructions.

By the way, I've been following your I2C thread also... Very interesting stuff. Kind of a lot to get my head around right now though. I've ordered a few extra MCUs for a project I'm working on - but it's been pretty slow going because free time for me right now seems to be at a premium. But it's great to know that info is here, and that such other really cool stuff keeps showing up. Thanks again Rick for your great contributions!

Dave

March 17, 2011
by Rick_S
Rick_S's Avatar

Thanks for the kind words. I'd seen a lot of "how do I install the bootloader" questions and thought I'd put it together. I hope it helps.

Rick

March 30, 2011
by lnino
lnino's Avatar

Hi. This is a really great tutorial.

I tried to find a circuit board(MOSI, MISO, SCK, and Reset) for my breadboard on ebay like you said. But I had no luck. Where I can get such a thing and what is it called. Maybe I can find it also in europe, to have less waiting time because of the delivery.

Thanks.

March 30, 2011
by Rick_S
Rick_S's Avatar

I made my own, but ebay does have them. Here is a quick link to one I found.

Rick

March 30, 2011
by lnino
lnino's Avatar

Hi Rick,

thanks for you reply. I will search a little through the internet if I can find a part which is not that close to Japan. :-)

April 01, 2011
by lnino
lnino's Avatar

Hi back again.

can I flash every atmega168 with NK Booatloader for 168?

There are different types of atmega168. + atmega168-20pu + atmega168-20au . ..

Is there a difference? Or can I flash all of them?

April 01, 2011
by Rick_S
Rick_S's Avatar

You should be able to flash any of them as long as they are connected correctly. The different suffixes are for different speed and package styles.

Rick

April 01, 2011
by lnino
lnino's Avatar

Hi Rick,

thanks for the reply.

April 03, 2011
by lnino
lnino's Avatar

Hi Rick,

on the link of the designers website I saw the part USBasp. HERE

Is this the same thing? Is this also for flashing the bootloader on my MCU?

The USBasp would be closer to buy for me, because it is from germany. The delivery from the states takes 4-5 weeks in the most cases. And I can't wait. smile

April 09, 2011
by Rick_S
Rick_S's Avatar

Yes, that will do the exact same thing.... Sorry I missed your post several days ago. I have the USBASP firmware on my device so functionally they are identical.

Rick

May 04, 2011
by Singlecoilx3
Singlecoilx3's Avatar

If you are having trouble installing the drivers in Vista or Win7 (as I did) because of unsigned driver problems follow these steps in the post by 'knandan' on AVRFreaks.

May 05, 2011
by Singlecoilx3
Singlecoilx3's Avatar

can you explain/show the connections more for us folks that don't have that breakout board? I was able to get the driver installed and working but when i try to run:

avrdude -c usbasp -p m328p -e

I get the response:

avrdude: error: could not find USB device "USBasp" with vid=0x16c0 pid=0x5dc

I also tried using AVR Studio as was mentioned on fun4diy but I get a similar error saying:

Unable to connect to tool AVRISP mkII (00A20000011E0)

and then:

Failed to get interface clock value.

Thanks!!

May 05, 2011
by Rick_S
Rick_S's Avatar

The kit he sells for the programmer comes by default with an AVRISP MkII compatable firmware. At the time I bought mine, he had a note on his site saying that some people had experienced problems with that firmware in Win Vista and 7 and suggested the USBASP firmware as an alternative. That is the firmware I am running. If you didn't request USBASP firmware when you ordered, you will have to change the lines that reference it for avrdude. So anywhere you see usbasp in my instruction, replace that with avrispmkII.

When you assembled your 10 pin cable, did you check the orientation of the keyed side? If you assembled it properly, with the keyed side up, the red stripe on the wire would be to the left of the connector like this.

image

(Sorry for the crappy cell phone pic) Plain Smiley

If you did make it this way, the pins would be labled as such:

connector

See the datasheet for the pin labels on the chip.

One other thing. The programmer can supply power to your target chip for programming but that can be iffy. I usually remove the power jumper so the target chip power is disconnected from the porammer then power the chip with it's own power supply.

Rick

May 05, 2011
by Singlecoilx3
Singlecoilx3's Avatar

thanks for the quick reply Rick, now i am getting:

avrdude: ser_open(): can't open device "com1": the system cannot find the file specified.

Thanks

May 05, 2011
by Rick_S
Rick_S's Avatar

Try entering this at the command line and see what happens.

avrdude -c avrispmkII -p m328p -e -P USB

You may need to tell AVRdude that it is on usb not serial. The -P USB does this. If this works, add that to your AVRDUDEFLAGS line in the makefile.

Rick

May 05, 2011
by Singlecoilx3
Singlecoilx3's Avatar

I am still not able to get anything working. I have it double checked the wiring, the AVR MKII board, tried typing everything you suggested, tried changing the makefile as you suggested. I keep getting shut down. I am pretty good at troubleshooting problems when I understand how things work but I am clueless about all this stuff. Something isn't right because even AVR Studio says it can't even connect to the AVR MKII board.

Lost in the universe somewhere, Eric (Singlecoilx3)

May 06, 2011
by Singlecoilx3
Singlecoilx3's Avatar

Here is my setup-

May 06, 2011
by Singlecoilx3
Singlecoilx3's Avatar

May 06, 2011
by Singlecoilx3
Singlecoilx3's Avatar

May 06, 2011
by Rick_S
Rick_S's Avatar

The only difference I see in your wiring, would be that you have AVREF (Pin21) to ground instead of VCC as I do. I don't think that would make a difference in programming the chip though.

The error you are getting however seems to be a problem with AVR Studio talking to the programmer. I know that Atmel has updated the firmware in their True AVRISP MKII programmers to support newer xmega chips. Also, the firmware the fun4diy guy uses (if you follow the link) to emulate an AVRISP MKII isn't even supported anymore by the author. Maybe (and this is only a guess), the version of AVR Studio you are using knows that isn't a real AVRISP programmer and is having trouble communicating through it. Did you try AVRdude again? What were it's responses?

One other thing you could try, remove the power jumper (the one labeled 5v...3v) and power the target micro with it's own power.

Rick

May 06, 2011
by Ralphxyz
Ralphxyz's Avatar

Wow thanks Singlecoilx3, I didn't know ATmel had released AVR Studio 5.

Try installing AVR Studio 4, you might have better results.

Ralph

May 06, 2011
by Singlecoilx3
Singlecoilx3's Avatar

@Rick, Thanks for catching the vcc/gnd wiring error. I will change that when I get home. To answer your other question- I did try AVRdude again, but will give it another try after fixing the wiring issue you pointed out.

@Ralph, I will give AVR Studio 4 a try also.

Thanks guys. This issue has really gotten me frustrated :-|

Eric

May 06, 2011
by BobaMosfet
BobaMosfet's Avatar

I've got AVR Studio 4 on Windows 7, and it works fine. I didn't know AVR Studio 5 was out yet.

BM

May 06, 2011
by Noter
Noter's Avatar

AREF is only used by the ADC so it doesn't matter if it goes to GND or Vcc or has no connection when the ADC is not in use. I don't see how it could make any difference as far as programming the chip via SPI.

AVRDUDE will give a message something like "Found programmer: Id = "AVRISP "; type = S" if it is communicating with the programmer. No point in worrying about wiring in the target circuit until you know you have good contact with the programmer. Once that happens and there is a problem in the wiring I think you'll get timeout errors from AVRDUDE.

I haven't used AVR studio but I would think there would be something similar, a way to verify communication with the programmer. Maybe you can query the programmer for version info and type or something without attempting a download at the same time?

May 06, 2011
by Noter
Noter's Avatar

By the way, if your target chip is brand new, you'll need the low speed jumper installed or other method of setting low speed for the SPI on your programmer because the new chip is set at the factory to run at 1mhz.

May 06, 2011
by Rick_S
Rick_S's Avatar

I've sent an e-mail to the fun4diy person to see if I can get a copy of the firmware he uses by default on the programmers. If he sends it to me I'll load it up on a chip and test things out with my programmer. Maybe I can figure it out then. Clicking on the link fun4diy has to the original firmware authors site, I find a somewhat dis-organized site and I'm not sure what to get if the original author even has the same firmware any more. Hopefully the fun4diy guy will get me a copy of what he uses.

Have you built your second programmer yet? I know you said you purchased two. If not, I could possibly program up a mega8 with the USBASP firmware and send it to you if we can't figure this one out.

Rick

May 06, 2011
by Singlecoilx3
Singlecoilx3's Avatar

@Noter thank you for the helpful info. This will surely save me some headaches once I get to that point. Much appreciated.

@Rick that sounds great. Thank you for the incredible support thus far. I will try what you have mentioned tonight and if I have no luck I will build up the 2nd programmer to try it instead. As frustrating as this thing is I'm sure I am going to understand it better once it is bsorted out than if it just worked the first time :)

Also Rick, I have a spam email account that I can post here on the forum that I don't care if it gets spidered by harvester bots. I never check it on my own but if you tell me you have sent something I will take a look: namfoo82#at#yahoo.com

Once you email me there I will reply to your email with the one I normally use so you have it.

May 06, 2011
by Rick_S
Rick_S's Avatar

If you build the second programmer, make sure to socket the microcontroller, that way if you want to swap it for another, you can keep the original the way it is... Also makes it easier to repair if something goes bad that damages the micro.

Rick

May 06, 2011
by Rick_S
Rick_S's Avatar

I just got a reply from the fun4diy person. He sent me the default programmer firmware. If I have time tonight, I'll load it up on my programmer and see if I can replicate your problems.

May 06, 2011
by Singlecoilx3
Singlecoilx3's Avatar

I was able to pick up an IC socket to use for the 2nd programmer. I will make sure to use that when I build the 2nd one tonight. Thanks again for your help Rick

May 07, 2011
by hariharan
hariharan's Avatar

Hi guys, I bought the kit and assembled it, but now, i am stuck with the driver. I really didn't understand which driver i should download.

May 07, 2011
by Rick_S
Rick_S's Avatar

Hariharan, which kit are you referring to?

Singlecoilx3, I instlled the avrisp mkII firmware but could never get it to work. It shows up, but has an exclamation point saying it could not start. I tried libusb but didn't get it to work either. One thing though, I think AVRStudio uses the Jungo USB drivers so if it isn't listed there as working that may be why you aren't getting the desired results.

I really wish I could go up and add to my original instruction... IF you buy one of these programmers, get them with the usbasp firmware... I know that works and works well with avrdude.

Singlecoilx3, I've sent an e-mail to the account you listed.

Rick

May 07, 2011
by Singlecoilx3
Singlecoilx3's Avatar

update#1- built the 2nd programmer, chip is socketed. currently installing avr studio 4 to give that a try also. I sent you an email reply from my real email address Rick. I am going to order another kit from that guy with the USBasp FW instead and give that a try.

May 08, 2011
by Rick_S
Rick_S's Avatar

The current version of this instruction is located in the newly released NerdKit Library

Rick

May 08, 2011
by hariharan
hariharan's Avatar

i mean the USBasp kit which you (Rick) were refering in the first place. I bought the USBasp fw one.

May 08, 2011
by Rick_S
Rick_S's Avatar

The Driver can be found on the official USBASP site. Here is a LINK directly to the driver there.

Rick

May 08, 2011
by hariharan
hariharan's Avatar

Thanks Rick!!!

But when i tried downloading the driver,nothing seems to happen. Will this work on Vista?

May 08, 2011
by Rick_S
Rick_S's Avatar

Yes, I use mine on both Win7 and Vista machines with no problem.

Rick

May 08, 2011
by Singlecoilx3
Singlecoilx3's Avatar

I can get access to an XP machine... I have the AVR ISPMKII programmer... should these work together? What do I need to do?

Eric

May 08, 2011
by Singlecoilx3
Singlecoilx3's Avatar

nvm, the person I was going to borrow the computer from thought they had XP but it was actually Vista. :(

May 08, 2011
by Rick_S
Rick_S's Avatar

If you could get access to an XP machine, just load AVR Studio 4. According to Mengjin Su (the guy from fun4diy), That shoud be all you need.

Rick

May 08, 2011
by Singlecoilx3
Singlecoilx3's Avatar

hmmm.... the word Linux just popped into my head... Wondering if it would be worth my time........

May 08, 2011
by Noter
Noter's Avatar

How about virtual XP on your Win7 machine? Maybe it would work for AVR Studio 4 and the AVR ISPMKII programmer.

Windows XP Mode and Windows Virtual PC Home

May 08, 2011
by Singlecoilx3
Singlecoilx3's Avatar

UGood thinking. I tried to do that earllier today, but sadly M$oft doesn't allow it with home premium edition of win7. My work computer is xp though... wink

May 08, 2011
by Noter
Noter's Avatar

Did you download and try it? Here's an article that says it will work on home editions and provides direct links for download.

Windows 7 Virtual PC and Windows XP Mode Official Direct Download Links

May 08, 2011
by Singlecoilx3
Singlecoilx3's Avatar

Link Yea I tried it and it does not work in home premium by design. I did just find this link though here. I don't have a copy of xp with a cd key anymore so I will just try it at work tomorrow on the xp machine or wait for my new programmer kit with usbasp to arrive.

May 08, 2011
by Singlecoilx3
Singlecoilx3's Avatar

Thanks for the good suggestion though :)

May 09, 2011
by Singlecoilx3
Singlecoilx3's Avatar

when I type:

avrdude -c avrispmkII -p m328p -e

I get:

avrdude: stk500_2_ReceiveMessage(): timeout
avrdude: stk500_2_ReceiveMessage(): timeout
avrdude: stk500_2_ReceiveMessage(): timeout
avrdude: stk500_2_ReceiveMessage(): timeout
avrdude: stk500_2_ReceiveMessage(): timeout
avrdude: stk500_2_ReceiveMessage(): timeout
avrdude: stk500_2_ReceiveMessage(): timeout
avrdude: stk500_2_ReceiveMessage(): timeout

this is what is in the file 'bootloader':

AVRDUDEFLAGS=-c avrispmkII -pm328p

all: fuses install

fuses:
    avrdude ${AVRDUDEFLAGS} -U lock:w:0x2f:m
    avrdude ${AVRDUDEFLAGS} -U efuse:w:0x05:m
    avrdude ${AVRDUDEFLAGS} -U hfuse:w:0xd2:m
    avrdude ${AVRDUDEFLAGS} -U lfuse:w:0xf7:m

install:
    avrdude ${AVRDUDEFLAGS} -U flash:w:foodloader.hex:a
May 09, 2011
by Singlecoilx3
Singlecoilx3's Avatar

^^ this is on the XP machine at work

May 09, 2011
by Singlecoilx3
Singlecoilx3's Avatar

...as a test I typed that without the usb cable even plugged in and got the same response. also avr studio 4 doesn't recognize it. what drivers/etc should I have installed?

May 09, 2011
by Rick_S
Rick_S's Avatar

Eric,

I wasn't sure of the driver issue either since I had not used that firmware. That was one of the questions I asked Mengjin.

Here is a cut and paste of my question and his response:

You don't need change the fuse setting (both AVRISP mkII and USBasp use the same setting).

AVR Studio v4.x carries the driver it needs.

-Mengjin-
________________________________________
From: rdshear@xxxxxxx.zzz
To: mengjins@xxxxxxx.zzz
Subject: RE: Firmware
Date: Fri, 6 May 2011 18:35:28 -0500
Thank you for the firmware.  Are there any special fuse settings required for it to work properly?  
Also, I haven’t used this firmware before, are there any special drivers?

Thank you so much for your help, I really appreciate it.

Rick

From his response, I have to make the assumption that the driver should load as part of AVR Studio. However based on what you have said, it seems otherwise. Are you sure you don't want me to do what I stated in my email?

Rick

May 09, 2011
by Singlecoilx3
Singlecoilx3's Avatar

Re: Rick- I think I have exhausted my patience with trying to get this FW to work on any OS. I did order another kit with the FW you recommended and it was shipped out on SAT. I should get it by tomorrow since the city Mengjin sends them from is only about a 2 hour drive from where I live. I will pick up again with the new FW as soon as I get it. I certainly appreciate what you offered but it will not be necessary. :) I can't thank you enough for all the help you have given me on this issue. You truly are a key player in making this such a great community.

Eric

May 09, 2011
by Rick_S
Rick_S's Avatar

Thank you for the kind comments. I do feel somewhat responsible and wish I could have gotten it to work. I know the USBASP firmware works fine on my Win7 machine so I'm sure you'll have no problem with it.

Rick

May 09, 2011
by Singlecoilx3
Singlecoilx3's Avatar

I thought there may have been a possibility you felt somewhat responsible. That is exactly why I decided not to take you up on your offer :). Definitely not your fault, and I learn something every time things don't go as I expected. You did also mention it somewhere in the original writeup but I scanned it hastily and didn't pay attention to the details :-/

I am excited to get the programmer with the other FW and get it going and move on to the next part of my Higher Resolution Large LED Display project. <--- totally just plugged it in your thread :> :> :>

May 10, 2011
by Singlecoilx3
Singlecoilx3's Avatar

got the new kit tonight with the USBASP firmware on it. still having problems :(

I type:

avrdude -c usbasp -p m328p -e

and get:

avrdude: error: programm enable: target doesn't answer. 1
avrdude: initialization failed, rc=-1
         Double check connections and try again, or use -F to override this check.

avrdude done.  Thank you.

the red light comes on when I type the command, but quickly goes out again. I also tried AVR Studio 4 and it says 'failed to connect' when I choose AVR ISPMKII and USB.

This is truly bad luck I am having... :(

May 10, 2011
by Singlecoilx3
Singlecoilx3's Avatar

ZOMG!!111!!!! it did something! I replaced the ribbon cable which must have been bad. it erased the chip :) :) :) woot!!111!

May 11, 2011
by Ralphxyz
Ralphxyz's Avatar

Ok, so now I hope we can get some work out of you.

We do have a wedding coming.

Ralph

May 11, 2011
by Singlecoilx3
Singlecoilx3's Avatar

Haha :) We most certainly do! I did end up getting one of them all programmed last night before I passed out for the night. I'll finish the programming them with the bootloaders tonight and then it is time to move on to something different :)

January 16, 2012
by lnino
lnino's Avatar

Hi, after some time passed by, I found some time to continue programming on my MCU.

I have bought the USBasp and tried to use this tutorial to flash my atmega168. But it won't work. Do you have some ideas where the problem could be?

Here are some screenshots.

As I have seen there is no current on the red line on my breadboard. Is this okay?

P1 P2

January 16, 2012
by Rick_S
Rick_S's Avatar

Not all USPASP devices provide power for the target device. You need to find out if yours does. The programmer I pictured above has the ability to provide power via a jumper next to the 10 pin header. It can provide 5v, 3.3v, or no power (with the jumper removed.) You may have to add a jumper for your device. Where did you get your USBASP from?

Rick

January 16, 2012
by Rick_S
Rick_S's Avatar

After reading the label on your programmer, I see it is the official one. Make sure your jumper for applying power to the target and the low speed jumper are both in place. That should make it work if all is wired correctly.

Rick

January 17, 2012
by lnino
lnino's Avatar

Hi Rick,

thank you for your reply.

Regarding to this schematic of my USBasp, would be JP1 and JP3 the both jumpers which I have to set?

But as I can see the jumper are not in place on my USBasp, I think I have to solder them. :-)

USBasp

USBasp

January 17, 2012
by Rick_S
Rick_S's Avatar

Yes, to provide target voltage from your programmer and program the bootloader on a new mcu, you would need both. (Actually, I think you can get away without the slow speed jumper as long as the USBASP firmware is the latest. I believe you pass the baud parameter to it and it will control the speed. The jumper is just and easy hardware method to control this.

Rick

January 17, 2012
by lnino
lnino's Avatar

Hi Rick, I have now soldered the jumper pins on my USBasp. After setting the both jumpers I have now current on the "red line" on the breadboard.

But when I enter the command: "avrdude -c usbasp -pm168 -e" the failure above still occurs.

Here some detailed fotos of my wiring.

Maybe you have a suggestion.

USBasp USBasp USBasp

January 17, 2012
by lnino
lnino's Avatar

EDIT: Now it worked. The wires were connected the wrong way. It took some time to understand that the pin order changes when I plug in the male in the female.

Now the failure is gone. I will forward now to get my controller flashed. :-)

January 17, 2012
by Rick_S
Rick_S's Avatar

I thought one of the people earlier in this thread might have had that issue, that was why I posted the picture of what the cable end pinout would be.

Glad you got it going, let me know how it works for you!

Rick

January 18, 2012
by lnino
lnino's Avatar

Hi Rick, yes The view of The Ribbon cable was The Solution. Thanks for The Tutorial. After wiring it The right Way i could follow your Tutorial and it worked Great. Thanks a Lot.

January 18, 2012
by lnino
lnino's Avatar

Hi Rick, yes The view of The Ribbon cable was The Solution. Thanks for The Tutorial. After wiring it The right Way i could follow your Tutorial and it worked Great. Thanks a Lot.

January 18, 2012
by Rick_S
Rick_S's Avatar

Good to hear you got it programmed. Thumbs Up

Rick

October 12, 2014
by jlaskowski
jlaskowski's Avatar

I'm using an AVR mkII and it says it does not supply power. Does that mean I need to just keep pin one connected to +5V and use neither the resistor nor jumper?

October 12, 2014
by jlaskowski
jlaskowski's Avatar

In answer to my own post above, I included the 10k resistor between pin 1 and +5V and connected reset from the avrisp mkII to pin 1.

When reading the documentation that comes with the AVRISP mkII, it says you must install the AVR USB driver. It turns out that does not work with avrdude (it may have at one time, but doesn't now, since Atmel switched to the Jungo USB driver). Instead, I had to download the libusb drivers as shown here. I followed the instructions in that link and it didn't install the driver properly. I rebooted my machine, tried again and it worked the second time.

Before I realized the driver was incorrect, I tried installing a newer version of avrdude.exe and avrdude.conf (as opposed to the ones that come with WinAVR-20090313). Once I changed the driver (as mentioned above), I ran "make fuses" and it executed "avrdude ${AVRDUDEFLAGS} -U lock:w:0x2f:m" fine, but then failed on "avrdude ${AVRDUDEFLAGS} -U efuse:w:0x05:m", saying, "did not find any USB device 'usb'." I reverted back to the older avrdude.exe and avrdude.conf files and it worked fine.

August 16, 2015
by edSky
edSky's Avatar

What a day! I purchased a USBasp programmer on ebay and it came with a 10-pin to 6-pin adapter. Everything I needed. I installed the latest driver I could find that worked with Windows 7 - usbasp-windriver.2011-05-28.zip - and got it working after googling around. Next got a few tubes of ATMEGA168 and ATMEGA328P chips from Mouser Electronics. Then I dug up my old Heathkit H-8 prototyping board (yeah, I know) and wired everything up as outlined above. I tried dozens of times and kept getting "target doesn't answer" errors. I cried.

Next I downloaded a neat GUI tool, eXtreme Burner AVR. That too, failed. I hoped I would see more information than avrdude shows but I didn't. I googled some more, looked up more and more about programmers and finally tried something. In the images and tutorial above only the MISO, MOSI, ReSeT and SCK are connected to the ATmega. I took a chance and connected the programmer's GND to the ATmega's ground and voila! I was able to successfully erase the chip!

breadboard with programmer

Next step, the bootloader and then more fun. Thanks for keeping this site alive!

August 16, 2015
by JKITSON
JKITSON's Avatar

Nice job. Nothing like a lot of goodies, nothing works, cry a little and WOW it works.

Those are the best of times....

Good luck & have fun..

Jim

August 16, 2015
by edSky
edSky's Avatar

Completing the two circuits via ground did the trick. The crying part was just poetic license (although I was snappy for a bit when my wife popped in to work to say "Hi!").

The programmer I got was AVR 10 Pin USB Programmer 3.3V/5V 51 ATMEGA8 w/ Cable & adapter USBasp USBISP

In the meantime I've met my goal of creating four backup ATmega168's this afternoon. My next anxiety is what to do if the PL2303 programming header dies or gets lost. Until then, this was very helpful

August 17, 2015
by Rick_S
Rick_S's Avatar

Glad to see the old thread still helps out some. I'm also glad to see you figured out that the ground being connected was important. In my write-up, I made the assumption that all the connections shown in the breakout would be made but only specified the MOSI, MISO, SCK, and Reset mainly because those were the signals broken out on my little breakout board, however the power (5V & GND) were also broken out I just didn't mention them. I guess I should have as it would have saved you some tears BigGrin

As for worrying about your PL2303 USB-Serial adapter, don't. Now that you have an ISP programmer, you don't even technically need it. You can fully program the chips with it instead. But, if you prefer the USB-Serial method, most USB-Serial adapters will work as a replacement if something were to go wrong with your original.

Rick

August 17, 2015
by edSky
edSky's Avatar

Rick,

If I were to use the ISP programmer instead of the PL2303 how should I wire it up? The same as with programming the bootloader or differently? And what changes, if any, would I need to make to the makefile? Thanks in advance!

Ed

August 18, 2015
by Rick_S
Rick_S's Avatar

The wiring would be the same as for installing the bootloader. The changes to the makefile would be the same changes you made to the bootloader makefile except instead of replacing the dapa line it would be the avr109 line with the line from above.

For example, this line:

AVRDUDEFLAGS=-c avr109 -p m328p -b 115200 -P  com4

would become

AVRDUDEFLAGS=-c usbasp -p m328p

The advantage to using the ISP programming method is that now all available space on the micro-controller can be utilized since you no longer need a bootloader, it's also quicker. Just be sure not to mess around with the fuses on the chip - specifically the fuse for changing the reset to a data pin. Doing this will prevent you from being able to reprogram the chip with ISP and if you have no bootloader, that way as well. The only way to get back from that is with a High Voltage programmer. Noter has built one of those and used it successfully on some of his projects.

Serial through a bootloader is slightly slower, but it is safer for the novice. That's why arduino uses a serial bootloader.

Rick

October 26, 2016
by MikeHI
MikeHI's Avatar

To: edSky, would you be willing to sell me Atmega168 with Nerdkits bootloader on it so I can replace my bad ATmega168? Don't know if I am capable of going through all the above post on building my own bootloader.

October 27, 2016
by jlaskowski
jlaskowski's Avatar

Would you be willing to do a 328 instead of a 168? I'm set up to load on 328 at the moment and I can sell you one for $10. If so, contact me at jim_laskowski@yahoo.com with your address.

October 27, 2016
by scootergarrett
scootergarrett's Avatar

This brings up a good point, in the event of a flood (for example) I could loose all my bootloaded MCUs which I use to bootload fresh chips .Then I would have no way to bootload a fresh chip with the Nerdkits. I'm going to put a bootloader chip and a good raspberry pi in a safe place, in case of the apocalypse that my be 2 weeks away (just kidding lets keep politics as far from the logic of micro controller as we can)

Post a Reply

Please log in to post a reply.

Did you know that first-order systems have a exponentially decaying response to step inputs? Learn more...