Vă aduc în atenție un mic proiect al unui programator Lego universal. Știm cu toții că de la constructorul Lego puteți să colectați orice doriți. În multe privințe, totul depinde doar de imaginația ta.
Uneori în practica electronică există o problemă asociată cu programarea unui fel de cip de memorie flash. Ce ar trebui să fac? Cumpărarea unui programator este costisitoare, da, iar timpul va trece și el nu va înțelege ce este un nou chip. Dă-i pe cineva - dar care are din nou nevoie de bani pentru a plăti. Cred că, în această situație, cel mai bine este să montați singur un programator universal. La urma urmei, de fapt, sarcina programării unui cip de memorie este destul de primitivă. Este necesar să se dea anumite semnale la anumite concluzii ale chip-ului într-o anumită secvență. Adică trebuie să creați o mașină digitală. Dacă aveți experiență minimă cu microcontrolere, cheltuielile nu este un timp deosebit de lungă pentru punerea în aplicare a acestui proiect, a face un dispozitiv care poate fi ușor de utilizat pentru a programa ceva, în timp ce face doar mici și schimbări în design și de program. Este necesar doar să vă uitați la documentația pentru cipul pe care doriți să îl programați. Și pentru a controla programatorul vom folosi un calculator. Ceea ce este necesar pentru acest lucru este pur și simplu mic.
- Un soclu în care puteți introduce un cip pentru programare (cea mai importantă componentă a sistemului nostru).
- Ceea ce ne conectăm la pantof este orice microcontroler care are suficiente conduceri pentru conectare și cu care aveți suficientă experiență.
- Consiliul de dezvoltare, pentru care va fi mai convenabil.
- Câteva detalii.
- Un computer cu un port serial, cu internet conectat pentru a controla programatorul și divertismentul în timp ce procesul de programare este în desfășurare.
- Instalat pe sistemul de programare al computerului.
- Desigur, un set de documentație pentru toate aceste piese, pe care le veți găsi pe Internet.
În cazul meu, a existat o nevoie de programare a cipului SST49LF004B. Acest cip este folosit ca BIOS pe multe placi de baza. Pentru realizarea proiectului au fost selectate:
Un tampon de la vechea placă de bază, lipită cu un uscător de păr. Un pieptene de sârmă preluat de la zgomotul discului dur este lipit cu grijă de pantof. Ca microcontroler, este utilizată o carcasă AVR cu 40 de pini a microcontrolerului ATMEGA16 cu un rezonator cuarț la 11.0592 MHz. Placă de prototipare pentru montare fără lipire. Mai multe componente suspendate, cum ar fi rezistențe, condensatoare, regulatoare de tensiune.
În timpul instalării, trebuie acordată o atenție deosebită calității distribuției de energie și instalării condensatoarelor de blocare. Vă recomandăm cu tărie să îndepărtați un condensator ceramic direct de pe pantof pentru programarea microcircuitului. Da, încă mai aveți nevoie de un adaptor pentru portul de comunicație. Am folosit gata, restul lui Dumnezeu știe ce fel de dispozitiv dezasamblat. Acesta poate fi asamblat pe o pereche de tranzistori sau pe un cip, cum ar fi MAX232. stabilizator de tensiune, asamblat pe cursorul, are o porțiune de nervură care definește o tensiune de ieșire de 3,3 V sau 5,0 V. Microcontrolerul este programat la 5, iar apoi se execută programe SST49LF004B 3.3 V. colecta toate lucrurile colectate de pe placa de circuit și polaritatea corectă, conectați sursa de alimentare. Schema circuit complet nu se citează, pentru aspectul prezentat în fotografie este suficient de clară și se întâmplă de la ceea ce este disponibil. Am să acorde o atenție doar la faptul că conectarea porturilor de comunicație utilizate linia GND, RXD, TXD. și RTS din partea programatorului (CTS din partea laterală a calculatorului). Mai jos sunt fotografiile programatorului finit, nu-i așa?
și faptul că mai trebuie să adăugați la ea.
Programatorul pornește când un octet corespunzător este trimis la portul serial (USART):
1 - citiți identificatorul cipului (pentru SST49LF004B doi octeți)
2 - citiți datele
3 - ștergeți datele
4 - scrieți date
5 - citiți 1k octeți (pentru depanare)
Procedura wait1 () este folosit pentru a face o întârziere suplimentară mică a fost provodochki prea mult timp folosit în programator de circuit. Semnalul audio este folosit ca indicator gata, și este doar distractiv. Toate celelalte sunt comentate în textul programului sau mai degrabă evidente. Mai mult, codul sursă complet care implementează algoritmul de programare SST49LF004B cip. Un astfel de algoritm au multe circuite, de exemplu W39V040A, 49LF040A, firmwsre SST49LF004A hub-ul și altele. Acestea sunt adesea folosite pentru a pune în aplicare BIOS Firmware sau dispozitive diferite. Îmi cer scuze pentru comentariile în limba engleză, am totul aici în engleză.
Programul pentru computer este scris destul de ocazional. Doar forma a fost luată, s-au schițat butoane și ferestre de tip text și eveniment „click pe butonul din stânga“ proceduri scrise.
Deci, se pare că interfața programului după ce a citit ID-ul și 1 KB bloc de date:
Aici voi da doar câteva proceduri importante din program.
Inițializarea portului de comunicație (COM1):
Citirea unui bloc de date (SIZE - numărul de octeți de citit):
Citirea datelor din chip și scrierea în fișierul "flash_r.bin".
Citirea datelor din chip și scrierea în fișierul "flash_r.bin".
Citirea datelor dintr-un fișier și scrierea pe un microcircuit: Comparând două fișiere:
Comparația a două fișiere:
Cel mai important lucru este să configurați corect portul de comunicație. Acordați atenție RTS_CONTROL_HANDSHAKE. precum și cea pentru transmisia și recepția datelor folosind proceduri diferite: TransmitCommChar (hCom, piele de bivol [i]) readfile (hFile, piele de bivol, dimensiune, d, NULL). Calculatorul va transmite un octet către port numai atunci când linia RTS este setată pe partea programatorului. În timpul programării, nu se fac verificări. Am stabilit doar întârzierile corecte. Pentru verificare, citim pur și simplu datele de la microcircuitul programat și verificăm împreună cu originalul. Aici, poate, asta e tot. Microcontrolere cu durată lungă de viață și instrumente de programare vizuală!