Zurück (C) Christof Ermer, Regensburg

25.04.2013
ISP  In System Programmer  
sprung zu : makefile_eintraege
ALLES ändert sich. und leider sind die sehr gut funktionierenden In System Programmer, die auf  LPT und COM Schnittstellen beruhen, veraltet und somit nicht mehr zu empfehlen.
Hier baue ich langsam die neue Beschreibung auf.

Relvant ist jetzt der USB Fischl USB-ISPAdapter
Die USB Treiber sind ebenfalls auf der Fischl Seite.
http://www.fischl.de/usbasp/

diesen beziehe ich auf Ebayfür etwa 3€
http://www.ebay.de/itm/400332124311?ssPageName=STRK:MEWNX:IT&_trksid=p3984.m1439.l2649
hesrstellerseite: http://www.aliexpress.com/store/812021  Diese Seite wäre ien EBay alrernative


Schaltung


This programmer is based on Thomas Fischl's USBasp design and connects to your computer's USB port. Not only is it quite compact, but the design is really elegent. The USB interface is achieved by using an atmega processor and the rest is done in firmware. For those interested, the firmware source code can be downloaded from the USBasp website. http://www.fischl.de/usbasp/

Some of the features include:


Supported microcontrollers include:

Mega Series
ATmega8 ATmega48 ATmega88 ATmega168 ATmega328
ATmega103 ATmega128 ATmega1280 ATmega1281 ATmega16
ATmega161 ATmega162 ATmega163 ATmega164 ATmega169
ATmega2560 ATmega2561 ATmega32 ATmega324 ATmega329
ATmega3290 ATmega64 ATmega640 ATmega644 ATmega649
ATmega6490 ATmega8515 ATmega8535
Tiny Series
ATtiny12 ATtiny13 ATtiny15 ATtiny25 ATtiny26
ATtiny45 ATtiny85 ATtiny2313
Classic Series
AT90S1200 AT90S2313 AT90S2333 AT90S2343 AT90S4414
AT90S4433 AT90S4434 AT90S8515
AT90S8535
CAN Series
AT90CAN128
PWM Series
AT90PWM2 AT90PWM3
 
Including:




 
Alternative
   externe gekaufte ISPs
mehr  dazu auf  http://s-huehn.de/elektronik/avr-prog/avr-prog.htm
USB to ISP
http://www.fischl.de/usbasp/

oder
für 16€
Bezu, Treuber etc.. :  http://shop.myavr.de/Programmer/mySmartUSB%20light.htm?sp=article.sp.php&artID=200006

STK500 Modus !
ACHTUNG Vor Anstecken des ISP an das Zielsystem, mit myAVR ProgTool Stromversorgung  Ausschalten !!! und Deaktivieren!
Sonst kollidieren interne und externe Stromversorgung:


FuseSettings
für Quarz:  LowFuse 0x3F, High Fuse 0xCF, Lockbits0XFF

Interesantes zum Thema im Netz:
http://www.mikrokopter.de/de/isp.php
http://www.mikrocontroller.net/articles/AVR_In_System_Programmer

Und so gehts: Quelle: z.B.     http://www.mikrokopter.de/de/isp.php

Neuer Serieller ( etwas langsamerer ) ISP Dongle:  Arbeitet hervorragend mit Pony-Prog zusammen.
Achtung: Dieser geht nur bei "echten" COM Ports. USB-COM Wandler funktionieren "nicht" !
AVR.-Studio Programmer geht auch nicht!^

MEINE Platine, die ich im Kurs verwendete,. Geht nur mit "ECHTEN" Com Ports und nur unter Windows XP getestet.
EAGEL Files: AVR_Serial_ISP_V2C.sch    AVR_Serial_ISP_V2C.brd
Platinenenansicht:


und die Schaltung:

Orginal: von Pollin-Evalboard geklaut:

R1 33 kOhm
R2,R6 4,7 kOhm
R3,R5 10 kOhm
D1,D2 Z-Diode 5,1 V
D3 1N4936
T1 BC846 bzw. BC546B

Prinzp:
Fehlerdiskussion in http://www.mikrocontroller.net/topic/79793     http://www.ureader.de/msg/144827982.aspx
http://www.mikrocontroller.net/topic/197119


Darin ist enthalten is auch schon ein Superpraktischer Wandler für 10-Polig auf 6-Polig ISP
Hier eine beliebte Verwechslunsgsfehlerquelle, aber korrigiert
MISO heisst, Master in, Slave Out , entprechend MOSI  Master Out, Slave In. SCK = Clock, Reset ist, was es heisst.


?  Wo ist die Com-Schnittstelle ( wie heisst Sie ? )

Es ist ganz einfach, dies ezu finden.!
Drücke mal die FENSTER-Taste und  "Pause" rechts oben gleichzeitig.
Es öffnet sich Systemiegenschaften
Dann weiter:  Hardware, Gerätemanager  dann gucke unter Aschlüsse ( COM und  LPT )
TIP: Es geht weiter mit rechter Maustaste auf die ComSchnittstelle die man bearbeiten möchte
Dann kommen Schnittstellenparameter, unter Erweitert kann man die Zuordnung COM1..2.3..usw ändern!!



makefile Einträge für das Serielle Programmiergerät:
so wirds ausgeschrieben. gemacht,  aber  mit Pseudodefines
avrdude -c ponyser ist der entsprechende Parameter.
avrdude -p atmega16 -c ponyser -P com1 -i 1 -t

So stehts im Makefile:    suche nach->
#---------------- Programming Options (avrdude) ----------------
 Programming hardware
# Type: avrdude -c ?
# to get a full listing.

AVRDUDE_PROGRAMMER = ponyser
AVRDUDE_CLOCK_DELAY = 3   #von mir eingefügt, Hardwarebremse  <µS>
AVRDUDE_PORT = com1    # programmer connected to serial device
AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex


    # -i <µS> ist Bremse
    #AVRDUDE_FLAGS = -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER)
    #AVRDUDE_FLAGS = -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER) -i 2   #direkt reingeschrieben oder mit Alias
AVRDUDE_FLAGS = -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER) - i $(AVRDUDE_CLOCK_DELAY)
AVRDUDE_FLAGS += $(AVRDUDE_NO_VERIFY)
AVRDUDE_FLAGS += $(AVRDUDE_VERBOSE)
AVRDUDE_FLAGS += $(AVRDUDE_ERASE_COUNTER)




so ist der PonyProg einzustellen:  In Setup -->, Interface Setup, dann...mit Probe muss OK kommen. (Vergiss nich,  ist die µC Platine unter Strom ?)


AVR Burn-O-Mat, die Alternative zu Pony-Prog
Googeln, Downloaden, braucht den Java Softwarebackground... oder siehe CD

für das COM Port, aber auch für den USB-AVR Adapter

Fuses:




Alter aber guter paralleler Dongle.  !!
So in etwa ist der ISP  Parallel Dongle aufgebaut.
Leider etwas veraltet, weil Paralelports aussterben.

Die Eagledatei daazu ist hier zu haben:
Eagle Datei des Boards um das Layout zu drucken AtmelPrg_CE.brd

und so simpel ist die Schaltung.. Der IC dient hauptsächlich zum Schutz des PC... es ginge auch nur mit Widerständen...( Aber das sollte man nicht tun)


Um einen Adpater zu haben von 6poligen ISP zum 10 Poligen gibts hier die Eagledatei:
ISP_10To6.sch
ISP_10To6.brd

makefile   für Parallel Programmer
AVRDUDE_PROGRAMMER = pony-stk200

# com1 = serial port. Use lpt1 to connect to parallel port.
AVRDUDE_PORT = lpt1
AVRDUDE_CLOCK_DELAY = 2
AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex


#- i  <µS> ist Clock delay
AVRDUDE_FLAGS = -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER)
- i $(AVRDUDE_CLOCK_DELAY)
AVRDUDE_FLAGS += $(AVRDUDE_NO_VERIFY)
AVRDUDE_FLAGS += $(AVRDUDE_VERBOSE)
AVRDUDE_FLAGS += $(AVRDUDE_ERASE_COUNTER)



AVRDUE vom CMD

Beispiel AVRDUDE zufuß Kommando: im CMD Fenster:

avrdude -p atmega8 -c <programmer> -P <port> -t   //im terminal mode
 avrdude -p atmega8 -c <programmer> -P <port> -i <µs> -t // mit -1 kann man delays einbauen
avrdude -p atmega16 -c ponyser -P com1 -i 1 -t

avrdude -p atmega16 -c ponyser -P com1 -t


avrdude.exe -u -C C:\WinAVR-20100110\bin\avrdude.conf -p m16 -P com1 -c ponyser -D -i 10 -b 57600 -p atmega16 -U flash:w:C:\AVR_Projekte\AA_AVR_PRJ_2011\KURS_2011\AA_AVRDUDE_Makefile Serial\main.hex:i

Seriell
Sinherungejn anzeigen
avrdude -v -p atmega8 -c ponyser -P com1
avrdude -v -p atmega16 -c ponyser -P com1
avrdude -p atmega16 -c ponyser -P com1 -i 1 -t
Parallel
a
vrdude -v -p atmega16 -c stk200 -P lpt1



Anbindung  direkt aus dem Progtrammes#S Notepad .

USB-Serial Adapter gehen nicht als Ponyser Adapter PUNKT

Also Ansteuerung via Makefile
#AVRDUDE_PROGRAMMER = stk500v2
#AVRDUDE_PROGRAMMER = avrisp
AVRDUDE_PROGRAMMER = ponyser

# com1 = serial port. Use lpt1 to connect to parallel port.
AVRDUDE_PORT = com1    # programmer connected to serial device

AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex
#AVRDUDE_WRITE_EEPROM = -U eeprom:w:$(TARGET).eep



Einstellung des makefiles
Kommentar:
# suche mit "Strg + F"  nach "avrdude" zum Einstellen des Programmers
#aktiviere für den Seriellen Programmer ponyser oder pony-stk200
# ponyser
# AVRDUDE_PROGRAMMER = ponyser
# wähle com 1 odercom2
# AVRDUDE_PORT = com1        # programmer connected to serial device
#dies habe ich eingefügt AVRDUDE_CLOCK_DELAY = 2
#Device signature = 0x1e9403  für ATMega16
# stra --> cmd -->  avrdude -c ? listte alle vorhandnen Programmer auf.

So stehts im makefile:
Serieller Adapter
#AVRDUDE_PROGRAMMER = ponyser
#Paralleladapter
AVRDUDE_PROGRAMMER = pony-stk200   # ist LPT

#USB
#USB Selbtbau Programmer.. ! Achtung DLL aus alter Version laden !
#AVRDUDE_PROGRAMMER = USBasp
AVRDUDE_CLOCK_DELAY = 3

# com1 = serial port. Use lpt1 to connect to parallel port.
#AVRDUDE_PORT = com1        # programmer connected to serial device
#AVRDUDE_PORT = usb        # programmer connected to USB port
AVRDUDE_PORT = lpt1        #programmer connected to parallel device


dann kommt noch:
#AVRDUDE_FLAGS = -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER)
AVRDUDE_FLAGS = -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER) -i $(AVRDUDE_CLOCK_DELAY)
#AVRDUDE_FLAGS = -patmega16  -P com2 -c ponyser -i 3
#ohne Devicekennung
#AVRDUDE_FLAGS = -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER) -i $(AVRDUDE_CLOCK_DELAY) -F