Cuprins:

Tutorial AVR Assembler 8: 4 Pași
Tutorial AVR Assembler 8: 4 Pași

Video: Tutorial AVR Assembler 8: 4 Pași

Video: Tutorial AVR Assembler 8: 4 Pași
Video: Программирование AVR на языке Ассемблер, часть 4. "Зажигаем светодиод" 2024, Noiembrie
Anonim
Tutorial AVR Assembler 8
Tutorial AVR Assembler 8

Bine ați venit la Tutorialul 8!

În acest scurt tutorial vom face un pic de diversiune de la introducerea de noi aspecte ale programării limbajului de asamblare pentru a arăta cum să mutăm componentele noastre de prototipare pe o placă de circuite "tipărită" separată. Motivul este că, în acest moment, placa noastră principală de prototipare este înghesuit cu atât de multe jetoane, fire, butoane și LED-uri încât devine dificil să testăm lucruri noi și întrucât în cele din urmă trebuie să mutăm componentele pe propriile lor plăci oricum., am putea la fel de bine să începem acum. Mulți dintre voi probabil că sunteți deja pricepuți la lucrurile pe care le vom aborda în acest tutorial și astfel puteți privi acest tutorial ca doar o pauză relaxantă de la codare.

Așadar, astăzi vom muta rolele noastre de zaruri ATmega328P și perechea de zaruri însoțitoare pe o placă externă cu conexiuni la placa noastră principală pentru comunicarea cu aceasta și pentru alimentarea acesteia. În afară de aceasta, cablarea și funcționarea zarurilor vor fi autonome în acea componentă.

Puteți prezice probabil din acest lucru că obiectivul nostru final este să facem acest lucru cu fiecare dintre componentele pe care le construim pe parcurs, astfel încât, atunci când am terminat, să le putem ascunde într-un pachet frumos care va funcționa prin apăsarea butoanelor fără a vedea toate a firelor și a funcționării interne.

Vom petrece cea mai mare parte a acestui tutorial făcând sarcini fizice, cum ar fi proiectarea unui circuit, cartarea unei plăci de prototipare și lipirea lucrurilor împreună, dar trebuie să facem un pic de programare la sfârșit după ce mutăm lucrurile. Motivul este că vom folosi în cele din urmă interfața serială cu 2 fire pentru a comunica între controlerul nostru principal „master” și toate controlerele „slave” care alcătuiesc componentele proiectului nostru general în această serie de tutoriale și, după cum vă amintiți, în Tutorialul 6 am inventat un fel de metodă de tip Morse pentru a comunica aruncările noastre de zaruri de la rolele de zaruri (Tutorialul 4) către Registrul Analizator (Tutorialul 5) care afișa rezultatul aruncării zarurilor în binar pe 8 LED-uri. Ei bine, aceasta a fost doar o metodă de comunicare „rulează-ți propriul” pe care am decis să o folosesc pentru că, în acel moment, era prea devreme pentru a intra în comunicații seriale cu 2 fire. Acum suntem aproape pregătiți să ne aruncăm în capătul profund al comunicării seriale și o vom face în Tutorialul 10, dar deocamdată trebuie să anticipăm această dezvoltare viitoare și să re-conectăm LED-urile cu role de zaruri pentru a le elibera pe cele două. pinii de care avem nevoie pentru comunicarea serială.

Acestea sunt pinii SCL și SDA de pe ATmega328P. Puteți vedea după diagrama pinout că acestea sunt numite și ADC5 și ADC4 atunci când sunt utilizate în conversii analog-digitale, sunt numite PCINT13 și PCINT12 când sunt utilizate ca pini „Pin Change Interrupt” și, în final, le numim în general PC5 și PC4 atunci când este pur și simplu considerat ca pin pe PortC. Deoarece am folosit acești doi pini ca parte a rolei noastre de zaruri din diverse motive (principalele fiind că a făcut codificarea mai ușoară și cablarea la LED-urile de pe placă) va trebui acum să ne modificăm codul și să-l reconectăm ușor la eliberați ace ace pentru comunicarea viitoare.

Deci, vom începe prin a face proiectarea, tăierea, cablarea și lipirea. Apoi, vom rescrie rolul de zaruri pentru a lucra cu noua noastră configurație și, în cele din urmă, îl vom testa pentru a ne asigura că funcționează în continuare.

Pentru a finaliza acest tutorial, veți avea nevoie de următoarele elemente:

  1. Lucrurile standard de care aveți nevoie întotdeauna și nu voi mai repeta tot timpul: placa dvs. de prototipare, copia fișei tehnice și a setului de instrucțiuni și creierul dvs.
  2. O placă PCB pentru prototipuri de circuite wireless ca aceasta: https://www.ebay.com/itm/191416297627 Voi folosi versiunea Measure Explorer 103RAWD a acestei plăci: https://www.ebay.com/itm/103RAT -circuit-proto-proto … deoarece am o grămadă de ele la îndemână, dar versiunea 103RAW-0 la care am legat mai sus va funcționa la fel de bine.
  3. Tăietoare, fire, lipit, lipitor, „mâini ajutătoare” sau orice altceva pentru a ține lucruri etc. etc. etc. etc. Dacă ați ajuns până aici în aceste tutoriale, probabil că aveți deja toate aceste lucruri.

Iată un link către colecția completă a tutorialelor mele de asamblare AVR:

Pasul 1: Proiectați o diagramă de cablare

Proiectați o diagramă de cablare
Proiectați o diagramă de cablare
Proiectați o diagramă de cablare
Proiectați o diagramă de cablare
Proiectați o diagramă de cablare
Proiectați o diagramă de cablare

Lucrul interesant al plăcilor Measure Explorer este că, dacă îți iei ceva timp și cartografiezi lucrurile la început, îți poți salva o groază de cabluri la sfârșit. Deci, vom începe prin a ne lăsa ceva timp să ne proiectăm aspectul înainte de a începe să lipim ceva. Cu acest tip de placă, trebuie să tăiați o grămadă de fire de conectare, ceea ce nu este atât de ușor, dar rezultatul este o placă compactă foarte frumoasă, cu o mizerie minimă de fire încurcate. Primul lucru pe care trebuie să-l facem este să proiectăm circuit astfel încât să se potrivească pe tablă. O modalitate frumoasă de a face acest lucru este să descărcați harta plăcii și apoi să o folosiți pentru a vă juca cu diferite modele până când găsiți una care funcționează. Iată aspectul pentru ME-PB-103RAWD https://www.bluemelon.com/photo/3483513-T800600-j.webp

Pasul 2: Decupați circuitul de pe placă

Decupați circuitul de pe placă
Decupați circuitul de pe placă
Decupați circuitul de pe placă
Decupați circuitul de pe placă
Decupați circuitul de pe placă
Decupați circuitul de pe placă

Mai întâi, luați un sharpie și, folosind aspectul pe care l-ați trasat în pasul anterior, trageți circuitul pe tablă. Adică trasați linii pentru a reprezenta firele. Nu desenați nimic în ceea ce privește componentele, ci doar firele de conectare așa cum se arată în prima imagine. Observați că atunci când vă înșelați (și dacă sunteți ceva ca mine, veți înșela lucrurile de multe ori în acești pași) puteți utiliza o radieră și ștergeți linia. Faceți acest lucru pentru ambele părți ale plăcii.

Apoi trebuie să tăiați conexiunile din jurul liniilor. Dacă vă uitați atent la tablă, veți vedea că fiecare gaură a pinului este conectată la cele 4 adiacente de pe ambele părți ale plăcii, astfel încât toate găurile de pe placă să fie conectate între ele când începeți. Deci, trebuie să tăiați de-a lungul ambelor părți ale fiecărui fir pentru a le izola. Cel mai comun mod de a face această tăiere este cu un cuțit Exacto. Dar supt cuțitele Exacto și probabil m-aș tăia. Așa că folosesc un Dremel cu un instrument subțire de tăiere. Mi-aș dori să am un fel de atașament de măcinat care a ajuns la un punct ascuțit, deoarece ar funcționa cel mai bine - dar nu am așa ceva, așa că am folosit atașamentul pentru ferăstrău de tăiere. (Notă adăugată: După ce am terminat acest proiect, am constatat că capetele mai mici pentru "roți de tăiere grele" pentru Dremels funcționează cel mai bine, arată ca niște cercuri mici de șmirghel și funcționează ca instrumentul de tăiere prezentat aici, cu excepția faptului că au un diametru mai mic și așa este mult mai ușor să vedeți și să controlați unde tăiați)

Pe parcurs este util să țineți placa până la lumină și să vă asigurați că firele sunt efectiv tăiate. S-ar putea să vă enervați faptul că există conexiuni pe ambele părți ale plăcii, astfel încât trebuie să repetați procesul de tăiere din nou cu cealaltă parte, dar cred că veți vedea punctul de lucru până când veți termina. Am făcut o mulțime de greșeli tăind fire care nu ar fi trebuit să fie tăiate și având cealaltă parte încă conectată se dovedește a fi frumos.

Va dura destul de mult timp și răbdare pentru a tăia circuitul în placă, dar este oarecum distractiv odată ce te pricepi.

Pasul 3: lipiți componentele și testați

Lipiți componentele și testați
Lipiți componentele și testați
Lipiți componentele și testați
Lipiți componentele și testați
Lipiți componentele și testați
Lipiți componentele și testați

Acum că ați izolat toate firele din placa dvs. de circuit, puteți începe să lipiți pe componentele individuale.

Mai întâi am lipit LED-urile pentru unul dintre zaruri, apoi am luat cabluri pozitive și negative de pe panoul meu de testare și am testat conexiunile pentru fiecare LED pentru a mă asigura că sunt izolate unele de altele și că funcționează.

În mod similar cu celălalt mor.

Apoi conectați rezistorul la fiecare matriță și rezistența de 10K de pe partea din spate a plăcii.

Apoi atașați oscilatorul de cristal, capacele 22pf, butoanele și ATmega328P. Poate doriți să lipiți o priză pentru cip și apoi să încorporați ATmega328P în aceasta, astfel încât să o puteți elimina dacă doriți și să o refolosiți în altceva. Tocmai mi-am lipit cipul pe tablă, deoarece știu ce construim în cele din urmă cu toate aceste tutoriale și știu că îmi va plăcea suficient încât să nu vreau să scot cipul.

Observați, privind în partea din spate a tabloului, modul în care am atașat antetele. Am folosit anteturi lungi cu pini și le-am îndoit orizontal, astfel încât să nu se ridice din tablă. Asta pentru ca în cele din urmă să pot acoperi placa până la nivelul butoanelor și a LED-urilor cu un container și să nu mi se împiedice anteturile. Avem un antet pentru Tx, Rx, astfel încât să putem programa cipul, avem un antet pentru SDA, SCL, astfel încât să putem utiliza comunicarea cu 2 fire mai târziu. și avem un antet cu 3 pini pentru AVCC, AREF, GND pe cealaltă parte a plăcii. Am toți pinii de masă și pinii VCC conectați împreună pe cip, așa că avem nevoie doar de o singură intrare de alimentare.

În cele din urmă, odată ce totul este conectat, vom sârma 1 la 2 la fel cum am făcut-o pe panou, astfel încât să putem controla ambele zaruri cu doar 9 pini.

Acum trebuie să ne modificăm codul, astfel încât acesta să controleze această nouă configurație.

Pasul 4: Cod asamblare și videoclip

Am atașat codul de asamblare și videoclipul ruloului de zaruri în funcțiune. Tot ce am făcut a fost să iau codul pentru ruloul nostru de zaruri din Tutorialul 6, să modific pinii pentru a se potrivi cu noul aspect și să îndepărtez subrutina de comunicații, deoarece vom scrie una nouă în Tutorialul 10. Data viitoare vom sparge din nou tastatura noastră și vom învăța cum să controlăm afișajele pe 7 segmente. Ne vedem atunci!

Recomandat: