Sari la conținut
ELFORUM - Forumul electronistilor

Programator STK500v2


Postări Recomandate

Salutare tuturor,

stiu ca s-au dezbatut aici pe forum o multitudine de programatoare, fiecare cu avantaje si dezavantaje lui, chiar si asa vreau sa va arat varianta construita de mine :).

Este vorba de un programator compatibil STK500v2 dezvoltat de Guido Socher's de la http://tuxgraphics.org/electronics/200705/article07052.shtml. Eu am proiectat un PCB mai "ingrijit' pentru acest programator, rezultatul l-am publicat pe pagina:

 

http://www.eosystems.ro/index.php/articles/stk500v2-compatible-avr-programmer

 

Pentru cei mai putin familiarizati cu diferentele intre diversele tipuri de programatoare de pe net iata cateva pareri personale:

- programatoarele bazate pe stack-uri USB custom, sunt mai dificil de instalat pe PC, de cele mai multe ori necesita instalarea de drivere, de exemplu USBasp necesita un driver de Windows instalat

- USBasp nu este suportat de Avrstudio: dupa parerea mea aceasta este ce mai mare limitare a acestui tip de programator

- exsista softuri de programare care suporta aproape toate tipurile de programtoare: de exemplu Avrdude

Programatorul propus de mine are ca singur dezavantaj, necesitatea prezentei chip-ului FT232RL, care adauga ceva cost la placa (cred ca e in jur de 20RON in Ro) si cateva rezistente si condensatori suplimentari. Totusi prezenta FTDI-ului rezolva oarecum problema drivere-lor, care exista implicit pe Windows, Linux, etc.

Avantajul major insa este ca acest programator este suportat direct de Avrstudio, tool-ul oficial de la Atmel, astfel sunt suportate cele mai multe microcontrolere publicate de Atmel. Pentru cei mai multi utilizatori asta rezolva setarea fuse-bitilor, care devin mai accesibili din Avrstudio. Personal folosesc programatorul din Linux, cu Avrdude integrat in Eclipse, deci pot sa va confirm ca merge OK si pe Linux.

Dupa cum vedeti pe pagina proiectului, PCB-ul a iesit foarte mic, este mono-layer si are nevoie de doar 2 fire jumper, deci este foarte usor reproductibil in regim de amator. O sa adaug in zilele urmatoare niste poze cu device-ul realizat fizic, ca sa vedeti gabaritul, realizarea, etc.

Sper sa ajute,

Daniel

Link spre comentariu
  • Răspunsuri 12
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

Felicitari pentru efortul depus.Totusi, exista si o alternativa, prezentata pe http://www.ullihome.de si care mai are si alte facilitati.Aceasta varianta o folosesc impreuna cu AVR Studio sub Win7 si/sau BASCOM, fara probleme.

Da, stiu ca exista alternative... cel de pe ullihome are avantajul ca se poate incarca cu mai multe firmware-uri in functie de protocolul dorit. Nu stiu insa daca proiectul ofera codul sursa, in regim open source... in plus cred ca este nevoie de drivere speciale pe Windows. Imi place ca PCB-ul de pe ullihome este foarte mic, dar din cate am vazut este dublu-strat, nu stiu daca se poate face bine in regim de amator...
Link spre comentariu
  • 2 ani mai târziu...

Salut.

 

Am nevoie de un pic de ajutor.

 

Pe scurt: nu stiu cum sa determin fuse biti pentru ATMEGA88P-AU cu un oscilator extern la 14.745600 MHz (parametrii avrdude).

 

Detalii:

 

    Am construit programatorul din pe baza schemei postate de autor (ciocead4) la adresa: http://www.eosystems.ro/index.php/articles/stk500v2-compatible-avr-programmer unde este postat si hex-ul (multumesc).

 

Cu programatorul usbasp pot sa-l accesez: avrdude -m m88p -c usbasp  zice ca totul este ok.

 

Problema apare la setare fuse biti - nu stiu cum sa-i determin.

 

Aplicatiile online de determinare fuse biti: http://www.engbedded.com/fusecalc/ sau http://eleccelerator.com/fusecalc/ nu le inteleg - mi se par extrem de neintuitive. 

 

Pasul 1: selectez device-ul: ATMEGA88P-AU

Pasul 2: configurare low fuse - sa-i pun oscilatorul extern la 14.745600 MHz : apare o lista cu oscilatoare inter / extern si diversi parametrii - sunt convins ca frecventa oscilatorului se mapeaza cumva pe acesti parametrii : CLK/CK + x ms; etc.

 

Recunosc ca nu am citit multe despre acesti fuse biti - si nici nu stiu daca am bagajul de cunostinte necesar ca sa inteleg toti acesti parametrii care pot fi setati in fuse biti - si cum peste tot scrie: "Atentie la fuse biti poti bloca MC-ul" in momentul actual am nevoie :

  - de o comanda  (mura'n gura) avrdude de setare  biti pentru acest programator

  - ceva link-uri (carte?) care sa-mi faca lumina in acesta zona

 

Multumesc mult

 

O zi excelenta

Radu

Link spre comentariu

In calculatorul de fusebits de pe engbedded AVR Fuse calculator selectezi urmatoarele:

La Features (tipul de oscilator): Ext. Crystal Osc; Frequency 8 - MHz; Startup...258k/14k+4.1ms (inseamna oscilator extern - quartz sau chiar oscilator, cu frecventa de peste 8MHz- cum este cazul tau si numarul de impulsuri de tact+o anumita intarziere - aceste valori le alegi dupa cum sursa de tensiune are o crestere rapida sau lenta de la zero la valoarea nominala si valorile efective le gasesti in foaia de catalog a uC. Uzual foloseste ce am selectat eu)

Brown-out level = 2.7V (pentru siguranta, este posibil ca tensiunea de alimentare sa fie la limita de 4.3V si atunci uC se comporta bizar.)

Debifezi "Divide clock by 8 internally" (asta doar daca nu cumva vrei ca de fapt ceasul intern al uC sa fie divizat cu 8 din varii considerente)

Si...cam atat.

Rezultatul:

-U lfuse:w:0xce:m -U hfuse:w:0xdd:m -U efuse:w:0xf9:m

Editat de nico_2010
Link spre comentariu

Pentru majoritatea utilizatorilor acesta nu este un dezavantaj, insa eu am de gand sa fac niste modificari/incercari de a folosi acest programator pentru alte scopuri, de aceea ma ajuta sa am codul sursa...

Apropo de acest topic mai vechi, faptul ca avem acces la codul sursa al programatorului mi-a permis in trecut sa scriu o mica extensie ce transforma programatorul intr-un mic monitor de uz general intr-un montaj cu AVR:

[*]conectorul ISP al unui AVR se mapeaza la unele controllere peste circuit-ul de SPI al microcontroller-ului

[*]pastrand programatorul conectat la ISP, o mica rutina de SPI (cateva linii de cod C) in codul aplicatiei trimite aceste valori la SPI

[*]valorile sunt pasate prin programator si ajung la PC prin USB

[*]orice terminal conectat la virtual COM-ul USB-ului afiseaza aceste valori

[*]comunicatia este bidirectionala

[*]nu este nevoie de nici o functionalitate suplimentara in programator, se folosesc doar functii suportate de protocolul oficial Atmel STK500v2

Codul scris de mine este total neslefuit, dar a mers ok pentru monitorizare de valori de la niste senzori (un fel de logger), daca cineva doreste sa dezvolte ideea sa posteze aici si gasim timpul sa finisam aplicatia.

Principalul avantaj al metodei este ca nu mai este nevoie de alta interfata conectata la microcontroller (UART, I2C, USB) si ca programatorul contine deja circuitele conversiei semnal uC ,<-> PC (pe USB).

Daniel

Link spre comentariu
  • 4 săptămâni mai târziu...

Problema setare fuse biti: avrdude: writing efuse (1 bytes) : .. ***failed.

 

La primul programator construit totul e ok - cu al 2-lea am probleme:

 

avrdude  -c stk500v2 -p m88p -P /dev/cu.usbserial-AH02DK4C -U lfuse:w:0xce:m -U hfuse:w:0xdd:m -U efuse:w:0xf9:m

 
avrdude: AVR device initialized and ready to accept instructions
 
Reading | ################################################## | 100% 0.10s
 
avrdude: Device signature = 0x1e930f
avrdude: reading input file "0xce"
avrdude: writing lfuse (1 bytes):
 
Writing | ################################################## | 100% 0.03s
 
avrdude: 1 bytes of lfuse written
avrdude: verifying lfuse memory against 0xce:
avrdude: load data lfuse data from input file 0xce:
avrdude: input file 0xce contains 1 bytes
avrdude: reading on-chip lfuse data:
 
Reading | ################################################## | 100% 0.03s
 
avrdude: verifying ...
avrdude: 1 bytes of lfuse verified
avrdude: reading input file "0xdd"
avrdude: writing hfuse (1 bytes):
 
Writing | ################################################## | 100% 0.03s
 
avrdude: 1 bytes of hfuse written
avrdude: verifying hfuse memory against 0xdd:
avrdude: load data hfuse data from input file 0xdd:
avrdude: input file 0xdd contains 1 bytes
avrdude: reading on-chip hfuse data:
 
Reading | ################################################## | 100% 0.03s
 
avrdude: verifying ...
avrdude: 1 bytes of hfuse verified
avrdude: reading input file "0xf9"
avrdude: writing efuse (1 bytes):
 
Writing |                                                                                                                      | 0% 0.00s ***failed;  
Writing | ################################################## | 100% 0.26s
 
avrdude: 1 bytes of efuse written
avrdude: verifying efuse memory against 0xf9:
avrdude: load data efuse data from input file 0xf9:
avrdude: input file 0xf9 contains 1 bytes
avrdude: reading on-chip efuse data:
 
Reading | ################################################## | 100% 0.03s
 
avrdude: verifying ...
avrdude: verification error, first mismatch at byte 0x0000
         0x01 != 0xf9
avrdude: verification error; content mismatch

 

 
 
si :

avrdude  -c stk500v2 -p m88p -P /dev/cu.usbserial-AH02DK4C -v                                                    
 
avrdude: Version 6.0.1, compiled on Dec 16 2013 at 17:26:24
         Copyright © 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright © 2007-2009 Joerg Wunsch
 
         System wide configuration file is "/usr/local/CrossPack-AVR-20131216/etc/avrdude.conf"
         User configuration file is "/Users/rlodina/.avrduderc"
         User configuration file does not exist or is not a regular file, skipping
 
         Using Port                    : /dev/cu.usbserial-AH02DK4C
         Using Programmer              : stk500v2
         AVR Part                      : ATmega88P
         Chip Erase delay              : 9000 us
         PAGEL                         : PD7
         BS2                           : PC2
         RESET disposition             : dedicated
         RETRY pulse                   : SCK
         serial program mode           : yes
         parallel program mode         : yes
         Timeout                       : 200
         StabDelay                     : 100
         CmdexeDelay                   : 25
         SyncLoops                     : 32
         ByteDelay                     : 0
         PollIndex                     : 3
         PollValue                     : 0x53
         Memory Detail                 :
 
                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           eeprom        65    20     4    0 no        512    4      0  3600  3600 0xff 0xff
           flash         65     6    64    0 yes      8192   64    128  4500  4500 0xff 0xff
           lfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           hfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           efuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           lock           0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           calibration    0     0     0    0 no          1    0      0     0     0 0x00 0x00
           signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00
 
         Programmer Type : STK500V2
         Description     : Atmel STK500 Version 2.x firmware
         Programmer Model: AVRISP
         Hardware Version: 2
         Firmware Version Master : 2.10
         Vtarget         : 4.1 V
         SCK period      : 0.1 us
 
avrdude: AVR device initialized and ready to accept instructions
 
Reading | ################################################## | 100% 0.10s
 
avrdude: Device signature = 0x1e930f
avrdude: safemode: lfuse reads as CE
avrdude: safemode: hfuse reads as DD
avrdude: safemode: efuse reads as 1
 
avrdude: safemode: lfuse reads as CE
avrdude: safemode: hfuse reads as DD
avrdude: safemode: efuse reads as 1
avrdude: safemode: Fuses OK (H:01, E:DD, L:CE)
 
avrdude done.  Thank you.
 
avrdude: safemode: efuse changed! Was f9, and is now 1
 

 

 

Am reusit sa-l programez cu succes si programatorul functioneaza ok - in momentul actual nu stiu daca si cum influenteaza starea actuala a fuse biti-lor functionarea lui.
 
O fi o problema cu MEGA88P-AU ? Ma gandesc sa mai comand 2 si sa-l inlocuiesc.
 
Vreo idee ?
 
Multumesc mult.
Radu
 
 
Link spre comentariu
  • 2 ani mai târziu...
  • 3 săptămâni mai târziu...

Alătură-te conversației

Poți posta acum și să te înregistrezi mai târziu. Dacă ai un cont, autentifică-te acum pentru a posta cu contul tău.
Notă: Postarea ta va necesita aprobare moderator înainte de a fi vizibilă.

Vizitator
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Răspunde la acest subiect...

×   Alipit ca text avansat.   Restituie formatare

  Doar 75 emoji sunt permise.

×   Linkul tău a fost încorporat automat.   Afișează ca link în schimb

×   Conținutul tău precedent a fost resetat.   Curăță editor

×   Nu poți lipi imagini direct. Încarcă sau inserează imagini din URL.




×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări