Familia de microcontrolere AVR arhitectura a devenit un standard de facto pentru artizanat amatori. Am început să-l studieze cu controlerele acestei familii, dar acum folosesc adesea modele lor de origine.
Pentru mai mult de un an pentru firmware depanare Eu folosesc AVR dragon.
AVR Dragon - cel mai ieftin debugger pentru AVR microcontrolere Atmel, sprijinirea debugWire.
Ceea ce este diferit de debugger programator?
Programator - este doar un dispozitiv care înregistrează programul la controler. Apoi, programul este executat de la sine, iar dacă ceva nu merge bine, știi că este - este foarte dificil. Debugger vă permite să oprească executarea programului în orice moment și pentru a găsi valorile tuturor variabilelor, registre și memorie, în general, debugger vă permite să rulați pas de program cu pas, pentru a vedea stiva de apeluri de funcții și o grămadă de alte bunătăți. În general, debugger - este cool!
Pentru a înțelege de ce a trebuit să-l cumpere această debugger, și nu se colectează, de exemplu, că o astfel. descrie pe scurt diferitele interfețe de programare și depanare utilizate în controlere AVR.
ISP-ul (în sistemul de programare) - interfață de programare circuit care vă permite să programați controlerul nu vypaivaya de la bord. Prin intermediul controler ISP este programat cu o viteza mica, dar ISP-ul are un mare avantaj pentru incepatori - programator pentru această interfață este format din patru fire. În mare parte din cauza acestei interfețe, Atmel a devenit liderul desenelor amatori. Pentru a programa controlerul, este necesar să se conecteze semnalul de 4 - MISO, MOSI, SCLK, RESET.
HV prog - programare de înaltă tensiune. El știe cum să programeze rapid controlorii utilizate în producția de masă, în practica amatori aproape inutil. (Acesta poate fi folosit pentru a restabili ISP-ul, daca nu deconectat accidental din greșeală). Pentru a controla aveți nevoie pentru a conecta 18 semnale - PD [7 ... 0], PC [7 ... 0], XTAL, RESET.
JTAG - interfața de depanare mai utilizate pe scară largă. Despre el deja scris mult, așa că nu se va repeta. Prezentați în controlere, cu o mulțime de picioare. Conexiunea necesită cinci semnale (TCK, TDO, TMS, TDI, RESET).
debugWire - o interfață de depanare de proprietate Atmel, care vă permite să monitorizeze procesele interne de pe un controler de un singur fir (RESET). Deci, la fel ca în practica de amatori utilizate în mod obișnuit controlere cu un număr mic de picioare, este doar o JTAG'u alternativă minunată.
Din păcate, bitul Atmel stricat toate ideile minunate pe care debugwire pe noul controler este dezactivată în mod implicit, și este activată prin interfața ISP (de exemplu, va trebui să se conecteze mai întâi la controler la fel de mult ca 4 contacte, inclusiv debugwire, și numai atunci puteți dezactiva 3-pini SPI ).
AVR Dragon vă permite să depanare controlere de memorie la 32kBayt, și pot fi programate, în general, toate controlere AVR (cu excepția atxmega).
Desigur, cu prețul de dragon AVR puteți cumpăra o mulțime de controlere mari (33 piese ATMEGA16, de exemplu) și să le utilizeze pentru a clona ICE AVR JTAG. astfel încât dragonul acoperi sau nu - a vă decide. Personal, îmi place să folosesc un instrument bun, asa ca am cumparat.
Aproape toate meșteșugurile am colecta pe controlori: atmega48, atmega88, atmega168 și ATtiny13. Aceasta este o controlere foarte bine echilibrat! Toate au interfață debugWire.
Prima problemă pe care am întâlnit, cumpararea avrDragon - ca la fel să-l conecteze la controler? Faptul că numai blocul afișat pe bord debugger în sine. Pe partea opusă a concluziilor harta desenată, de localizare, dar acestea sunt consecvente - nu este evident! Am făcut o greșeală o dată cu conexiunea, așa că am răspândit aranjament de contacte.
Fiecare semnal trebuie să fie conectat la un astfel de bine pe controlerul. semnal VTG (Target tensiune) servește pentru a regla debugger nivel logic pentru depanare nivelele logice și regulatorul este conectat la tensiunea de alimentare.
A doua problemă - DebugWire nu funcționează în cazul în care operatorul nu are ceasul! Am fost în căutarea în problema dragon și fire, dar sa dovedit doar pentru a urmări cuarț a fost deteriorat.
A treia problemă - stabilirea vitezei în AVR Studio a fost semnificativ mai mare decât în IAR. Deoarece instrumentul meu principal pentru dezvoltarea tuturor IAR, nu mi place deloc. Din fericire, viteza de debugWire a crescut în mod semnificativ în versiunile recente IAR'a.
Pentru a conecta la controlerele de dragon, am sudat două fire. Unele dintre ele sunt lipite direct la piesele, al doilea este introdus în conectorul de pe placa de bază. Din moment ce un conector dragon nu există nici o cheie, am făcut-mi - a scris TOP. Apropo, firul este foarte convenabil pentru a eticheta astfel de tehnologie - scrie marker pe semnal set-căldură și un nume termoretractabil-l - etichetele noastre sunt acum mici, krasivenkie și nu ar slezut cu fire!
Acum, o secvență tipică de operații. Porniți IAR. În proiectul de opțiuni schimba depanator Dragon (Proiect-> Opțiuni-> Debugger, setați Dragon). Conectarea dragon la bord este sub tensiune. Acum, selectați din meniul Dragon-> Siguranță Handler. Set Fyuz cele pe care le place, permitem debugWire (Fyuz DWEN). Oprirea alimentării, dezactivați ISP-ul de la controler (puteți lăsa atunci când SPI nu este utilizat), lăsând RESET, VTG și GND conectat numai. Pornirea alimentării, faceți clic pe butonul „Descărcați și Debug“. Voila:
Dacă doriți să schimbați fyuzy trebuie să vă conectați din nou contactele ISP. În marea majoritate a proiectelor SPI nu este utilizat, astfel încât să puteți conecta o dată, și să nu atingi nimic.
În dragon au mai multe opțiuni (Proiect-> Options-> Debugger-> Dragon):
descărcare suprime - Dacă verificați, vă va cere - pentru a descărca noul program la controler, sau să păstreze pe cel vechi? Folosit pentru (foarte discutabilă) pentru a economisi timp și resurse în memoria flash.
Se lasă la descărcare RAM - uneori în procesul de depanare, pe care doriți să salvați date RAM, și apoi încărcați-l înapoi la controler. Această opțiune vă permite să faceți acest lucru. Nu am folosit-o, așa că nimic nu într-adevăr nu se poate spune.
Vizați verificare a consecvenței - verifică valabilitatea datelor înregistrate.
Aceste opțiuni sunt rareori folosite și nu sunt foarte importante, dar pe al doilea tab-ul are o opțiune foarte importantă:
cronometre în modul oprit Run - Controler cronometrul continuă să curgă, chiar dacă programul este oprit. De exemplu, este foarte important pentru Shimov în cazul în care opresc într-un moment neașteptat care Realitățile poate eșua.
Am întrebat - este posibil de a programa controlerul de debugWire, sau este doar o interfață de depanare? Raspuns - este posibil. Dar, din nou, la fel va trebui să activați mai întâi debugWire prin intermediul ISP.
Recent, am încercat să utilizeze JTAG cu AVR s. impresiile mele sunt pozitive. Inundațiile firmware mult mai rapid decât debugWire. Fyuzy știu cum să program.
câmp Prototyping
Un dragon există câmp breadboard. Se spune că dacă ai lipi la ZIF-socket, acesta va fi foarte ușor de program controlere în masă. Personal, eu nu fac, așa că nu pot spune nimic.
Problema cu stabilizator.
Există o altă problemă. În schema Dragon dezvoltatorii de alimente au făcut o greșeală, iar sursa de alimentare IC unele cazuri arsuri. Atmel face o recomandare vypayat cip ars și de lipire o postare, cu garanția unui dragon nu este pierdut.
Această problemă se manifestă prin simpla atingere a unui deget la cip, stabilizator de tensiune, care excitat și supraîncălzit. În acest caz, placa de bază trebuie să se limiteze curentul pe și în afara dragonul, dar placi de baza ieftine nu arde si dragonul. Fotografiat mai sus, în cazul în care nu este necesar să se atingă.
În alte aspecte, în timp ce IC este ars în jos, modificarea nu este în valoare de a face. Principalul lucru - dragonul oprit atunci când o lungă perioadă de timp departe de ea, astfel încât să nu facă un foc. Dragonul poate fi foc-respirație!
În ceea ce privește răul, imediat după acest articol a fost scris ars stabilizator dragon meu. Am făcut o mizerie, și totul a lucrat (chiar mai bine decât înainte - minus pauze de conectare). Alterarea este foarte simplu. Avem nevoie de vypayat cireasa de stabilizator cip și postări de la conectorul USB la condensator tantal. Chip-stabilizator are termalpad, dezlipit și, prin urmare, destul de dificil.
Se pune întrebarea - de ce Atmel pus în stabilizator de încărcare, în cazul în care acesta poate fi ușor înlocuită prin simpla conectarea? Atmel însuși răspunde la această întrebare pentru că -Cele mai multe componente de pe placa au sursa de alimentare gama de tensiune de 4,5-5,5 volți. Cu toate acestea, USB standard indică faptul că tensiunea de pe magistrala USB, în cel mai rău caz poate merge până la 4,15 volți (atunci când se utilizează un hub USB alimentat de calculator). În scopul de a ridica tensiunea de 4.15-5 este utilizat stabilizator.
Astfel, dacă vă conectați dragonul direct la un computer sau la hub-ul cu o sursă de alimentare externă, după modificarea Dragon va continua să lucreze ca și cum nimic nu sa întâmplat.