Under MacOS X, you can use the Terminal program to pull up a command line interface, its in the Utilities folder
Now in the new terminal window type in avrdude you should get this response, which is basically a simple list of what avrdude can do...
- -p <partno>: This is just to tell it what microcontroller its programming. For example, if you are programming an ATtiny2313, use attiny2313 as the partnumber
- -b <baudrate>: This is for overriding the serial baud rate for programmers like the STK500. Don't use this switch, the default is correct.
- -B <bitrate>: This is for changing the bitrate, which is how fast the programmer talks to the chip. If your chip is being clocked very slowly you'll need to talk slowly to it to let it keep up. It'll be discussed later, for now don't use it.
- -C <config-file>: The config file tells avrdude about all the different ways it can talk to the programmer. Theres a default configuration file, so lets just use that: don't use this command switch
- -c <programmer>: Here is where we specify the programmer type, if you're using an STK500 use stk500, if you're using a DT006 programmer use dt006, etc.
- -D: This disables erasing the chip before programming. We don't want that so don't use this command switch.
- -P <port>: This is the communication port to use to talk to the programmer. It might be COM1 for serial or LPT1 for parallel or USB for, well, USB.
- -F: This overrides the signature check to make sure the chip you think you're programming is. The test is strongly recommended as it tests the connection, so don't use this switch.
- -e: This erases the chip, in general we don't use this because we auto-erase the flash before programming.
- -U <memtype>:r|w|v:<filename>[:format]: OK this one is the important command. Its the one that actually does the programming. The <memtype> is either flash or eeprom (or hfuse, lfuse or efuse for the chip configuration fuses, but we aren't going to mess with those). the r|w|v means you can use r (read) w (write) or v (verify) as the command. The <filename> is, well, the file that you want to write to or read from. and [:format] means theres an optional format flag. We will always be using 'Intel Hex' format, so use i
So, for example. If you wanted to write the file test.hex to the flash memory, you would use -U flash:w:test.hex:i. If you wanted to read the eeprom memory into the file 'eedump.hex' you would use -U eeprom:r:eedump.hex:i - -n: This means you don't actually write anything, its good if you want to make sure you don't send any other commands that could damage the chip, sort of a 'safety lock'.
- -V: This turns off the auto-verify when writing. We want to verify when we write to flash so don't use this.
- -u: If you want to modify the fuse bits, use this switch to tell it you really mean it.
- -t: This is a 'terminal' mode where you can type out commands in a row. Don't use this, it is confusing to beginners.
- -E: This lists some programmer specifications, don't use it.
- -v: This gives you 'verbose' output...in case you want to debug something. If you want you can use it, but in general we won't.
- -q: This is the opposite of the above, makes less output. In general we won't use it but maybe after a while you wold like to.
avrdude: Can't find programmer id 'asdf'
Valid programmers are:
dasa3 = serial port banging, reset=!dtr sck=rts mosi=txd miso=cts [C:WinAVRbinavrdude.conf:763]
dasa = serial port banging, reset=rts sck=dtr mosi=txd miso=cts [C:WinAVRbinavrdude.conf:750]
siprog = Lancos SI-Prog <http://www.lancos.com/siprogsch.html> [C:WinAVRbinavrdude.conf:737]
ponyser = design ponyprog serial, reset=!txd sck=rts mosi=dtr miso=cts [C:WinAVRbinavrdude.conf:724]
frank-stk200 = Frank STK200 [C:WinAVRbinavrdude.conf:689]
blaster = Altera ByteBlaster [C:WinAVRbinavrdude.conf:676]
ere-isp-avr = ERE ISP-AVR <http://www.ere.co.th/download/sch050713.pdf> [C:WinAVRbinavrdude.conf:666]
atisp = AT-ISP V1.1 programming cable for AVR-SDK1 from <http://micro-research.co.th/> [C:WinAVRbinavrdude.conf:656]
dapa = Direct AVR Parallel Access cable [C:WinAVRbinavrdude.conf:645]
xil = Xilinx JTAG cable [C:WinAVRbinavrdude.conf:632]
futurlec = Futurlec.com programming cable. [C:WinAVRbinavrdude.conf:615]
abcmini = ABCmini Board, aka Dick Smith HOTCHIP [C:WinAVRbinavrdude.conf:605]
picoweb = Picoweb Programming Cable, http://www.picoweb.net/ [C:WinAVRbinavrdude.conf:595]
sp12 = Steve Bolt's Programmer [C:WinAVRbinavrdude.conf:584]
alf = Nightshade ALF-PgmAVR, http://nightshade.homeip.net/ [C:WinAVRbinavrdude.conf:568]
bascom = Bascom SAMPLE programming cable [C:WinAVRbinavrdude.conf:558]
dt006 = Dontronics DT006 [C:WinAVRbinavrdude.conf:548]
pony-stk200 = Pony Prog STK200 [C:WinAVRbinavrdude.conf:536]
stk200 = STK200 [C:WinAVRbinavrdude.conf:520]
bsd = Brian Dean's Programmer, http://www.bsdhome.com/avrdude/ [C:WinAVRbinavrdude.conf:509]
pavr = Jason Kyle's pAVR Serial Programmer [C:WinAVRbinavrdude.conf:501]
dragon_dw = Atmel AVR Dragon in debugWire mode [C:WinAVRbinavrdude.conf:494]
dragon_hvsp = Atmel AVR Dragon in HVSP mode [C:WinAVRbinavrdude.conf:486]
dragon_pp = Atmel AVR Dragon in PP mode [C:WinAVRbinavrdude.conf:478]
dragon_isp = Atmel AVR Dragon in ISP mode [C:WinAVRbinavrdude.conf:470]
dragon_jtag = Atmel AVR Dragon in JTAG mode [C:WinAVRbinavrdude.conf:462]
jtag2dw = Atmel JTAG ICE mkII in debugWire mode [C:WinAVRbinavrdude.conf:454]
jtag2isp = Atmel JTAG ICE mkII in ISP mode [C:WinAVRbinavrdude.conf:446]
jtag2 = Atmel JTAG ICE mkII [C:WinAVRbinavrdude.conf:438]
jtag2fast = Atmel JTAG ICE mkII [C:WinAVRbinavrdude.conf:430]
jtag2slow = Atmel JTAG ICE mkII [C:WinAVRbinavrdude.conf:422]
jtagmkII = Atmel JTAG ICE mkII [C:WinAVRbinavrdude.conf:414]
jtag1slow = Atmel JTAG ICE (mkI) [C:WinAVRbinavrdude.conf:407]
jtag1 = Atmel JTAG ICE (mkI) [C:WinAVRbinavrdude.conf:399]
jtagmkI = Atmel JTAG ICE (mkI) [C:WinAVRbinavrdude.conf:391]
avr911 = Atmel AppNote AVR911 AVROSP [C:WinAVRbinavrdude.conf:385]
avr109 = Atmel AppNote AVR109 Boot Loader [C:WinAVRbinavrdude.conf:379]
butterfly = Atmel Butterfly Development Board [C:WinAVRbinavrdude.conf:373]
usbtiny = USBtiny simple USB programmer [C:WinAVRbinavrdude.conf:367]
usbasp = USBasp, http://www.fischl.de/usbasp/ [C:WinAVRbinavrdude.conf:361]
avr910 = Atmel Low Cost Serial Programmer [C:WinAVRbinavrdude.conf:355]
stk500hvsp = Atmel STK500 V2 in high-voltage serial programming mode [C:WinAVRbinavrdude.conf:349]
stk500pp = Atmel STK500 V2 in parallel programming mode [C:WinAVRbinavrdude.conf:343]
stk500v2 = Atmel STK500 Version 2.x firmware [C:WinAVRbinavrdude.conf:337]
stk500v1 = Atmel STK500 Version 1.x firmware [C:WinAVRbinavrdude.conf:331]
stk500 = Atmel STK500 [C:WinAVRbinavrdude.conf:325]
avrisp2 = Atmel AVR ISP mkII [C:WinAVRbinavrdude.conf:315]
avrispmkII = Atmel AVR ISP mkII [C:WinAVRbinavrdude.conf:309]
avrispv2 = Atmel AVR ISP V2 [C:WinAVRbinavrdude.conf:303]
avrisp = Atmel AVR ISP [C:WinAVRbinavrdude.conf:297]
You'll note that the programmers mentioned before are listed here, including the avrisp, avrispv2, stk500, dragon, dasa/dasa3/ponyser (serial port bitbanging programmers), dapa/dt006/stk200 (parallel port bitbanging programmers)
Look up the name of the programmer you're using, and commit it to heart!
avrdude: No AVR part has been specified, use '-p Part'
m6450 = ATMEGA6450 [C:WinAVRbinavrdude.conf:10974]
m3250 = ATMEGA3250 [C:WinAVRbinavrdude.conf:10785]
m645 = ATMEGA645 [C:WinAVRbinavrdude.conf:10596]
m325 = ATMEGA325 [C:WinAVRbinavrdude.conf:10407]
usb1287 = AT90USB1287 [C:WinAVRbinavrdude.conf:10219]
usb1286 = AT90USB1286 [C:WinAVRbinavrdude.conf:10030]
usb647 = AT90USB647 [C:WinAVRbinavrdude.conf:9841]
usb646 = AT90USB646 [C:WinAVRbinavrdude.conf:9651]
t84 = ATtiny84 [C:WinAVRbinavrdude.conf:9468]
t44 = ATtiny44 [C:WinAVRbinavrdude.conf:9286]
t24 = ATtiny24 [C:WinAVRbinavrdude.conf:9104]
m2561 = ATMEGA2561 [C:WinAVRbinavrdude.conf:8911]
m2560 = ATMEGA2560 [C:WinAVRbinavrdude.conf:8718]
m1281 = ATMEGA1281 [C:WinAVRbinavrdude.conf:8530]
m1280 = ATMEGA1280 [C:WinAVRbinavrdude.conf:8341]
m640 = ATMEGA640 [C:WinAVRbinavrdude.conf:8153]
t85 = ATtiny85 [C:WinAVRbinavrdude.conf:7972]
t45 = ATtiny45 [C:WinAVRbinavrdude.conf:7793]
t25 = ATtiny25 [C:WinAVRbinavrdude.conf:7613]
pwm3 = AT90PWM3 [C:WinAVRbinavrdude.conf:7431]
pwm2 = AT90PWM2 [C:WinAVRbinavrdude.conf:7247]
t2313 = ATtiny2313 [C:WinAVRbinavrdude.conf:7060]
m168 = ATMEGA168 [C:WinAVRbinavrdude.conf:6872]
m88 = ATMEGA88 [C:WinAVRbinavrdude.conf:6686]
m48 = ATMEGA48 [C:WinAVRbinavrdude.conf:6499]
t861 = ATTINY861 [C:WinAVRbinavrdude.conf:6311]
t461 = ATTINY461 [C:WinAVRbinavrdude.conf:6122]
t261 = ATTINY261 [C:WinAVRbinavrdude.conf:5933]
t26 = ATTINY26 [C:WinAVRbinavrdude.conf:5776]
m8535 = ATMEGA8535 [C:WinAVRbinavrdude.conf:5618]
m8515 = ATMEGA8515 [C:WinAVRbinavrdude.conf:5460]
m8 = ATMEGA8 [C:WinAVRbinavrdude.conf:5300]
m161 = ATMEGA161 [C:WinAVRbinavrdude.conf:5160]
m32 = ATMEGA32 [C:WinAVRbinavrdude.conf:4985]
m6490 = ATMEGA6490 [C:WinAVRbinavrdude.conf:4792]
m649 = ATMEGA649 [C:WinAVRbinavrdude.conf:4607]
m3290 = ATMEGA3290 [C:WinAVRbinavrdude.conf:4424]
m329 = ATMEGA329 [C:WinAVRbinavrdude.conf:4239]
m169 = ATMEGA169 [C:WinAVRbinavrdude.conf:4059]
m163 = ATMEGA163 [C:WinAVRbinavrdude.conf:3916]
m162 = ATMEGA162 [C:WinAVRbinavrdude.conf:3720]
m644 = ATMEGA644 [C:WinAVRbinavrdude.conf:3530]
m324 = ATMEGA324 [C:WinAVRbinavrdude.conf:3338]
m164 = ATMEGA164 [C:WinAVRbinavrdude.conf:3146]
m16 = ATMEGA16 [C:WinAVRbinavrdude.conf:2968]
c128 = AT90CAN128 [C:WinAVRbinavrdude.conf:2777]
m128 = ATMEGA128 [C:WinAVRbinavrdude.conf:2599]
m64 = ATMEGA64 [C:WinAVRbinavrdude.conf:2418]
m103 = ATMEGA103 [C:WinAVRbinavrdude.conf:2278]
8535 = AT90S8535 [C:WinAVRbinavrdude.conf:2157]
8515 = AT90S8515 [C:WinAVRbinavrdude.conf:2043]
4434 = AT90S4434 [C:WinAVRbinavrdude.conf:1960]
4433 = AT90S4433 [C:WinAVRbinavrdude.conf:1836]
2343 = AT90S2343 [C:WinAVRbinavrdude.conf:1712]
2333 = AT90S2333 [C:WinAVRbinavrdude.conf:1627]
2313 = AT90S2313 [C:WinAVRbinavrdude.conf:1514]
4414 = AT90S4414 [C:WinAVRbinavrdude.conf:1401]
1200 = AT90S1200 [C:WinAVRbinavrdude.conf:1286]
t15 = ATtiny15 [C:WinAVRbinavrdude.conf:1153]
t13 = ATtiny13 [C:WinAVRbinavrdude.conf:980]
t12 = ATtiny12 [C:WinAVRbinavrdude.conf:847]
t11 = ATtiny11 [C:WinAVRbinavrdude.conf:783]
Click on Device Manager, and open up the Ports submenu.
All of the serial and parallel ports are listed. There may be multiple COM ports but there's usually only one parallel (printer) port.
For Mac's, there are no parallel ports. However, if you're using a USB-serial adapter (which lets you use an STK500 or AVRISP v1 with a Mac) then you'll need to specify the serial port. I don't know a foolproof way yet but the way I do it is in the Terminal I type in ls -l /dev/cu.* and it will spit out a bunch of stuff (I screwed up the screen capture, this image has another window in front of it, but just ignore that)