Indholdsfortegnelse:

AVR Assembler Tutorial 8: 4 trin
AVR Assembler Tutorial 8: 4 trin

Video: AVR Assembler Tutorial 8: 4 trin

Video: AVR Assembler Tutorial 8: 4 trin
Video: AVR Assembly Tutorial: Part 1 (Basic Commands) 2024, Juli
Anonim
Vejledning til AVR -samler 8
Vejledning til AVR -samler 8

Velkommen til selvstudie 8!

I denne korte tutorial vil vi tage lidt af en afvigelse fra at introducere nye aspekter af samlingssprogsprogrammering for at vise, hvordan vi flytter vores prototypekomponenter til et separat "trykt" kredsløb. Årsagen er, at på dette tidspunkt bliver vores vigtigste prototypebroder fyldt med så mange chips, ledninger, knapper og lysdioder, at det bliver svært at teste nye ting, og da vi til sidst alligevel skal flytte komponenterne til deres egne brædder, vi kan lige så godt starte nu. Mange af jer er sikkert allerede dygtige til de ting, vi vil dække i denne vejledning, og så kan du se på denne vejledning som blot en afslappende pause fra kodning.

Så i dag flytter vi vores terningrulle ATmega328P og det medfølgende terningepar til et eksternt bord med forbindelser til vores hovedkort til kommunikation til det og til strømforsyning. Bortset fra det vil ledningerne og funktionen af terningerne være selvstændige i denne komponent.

Du kan sikkert forudsige ud fra dette, at vores endelige mål er at gøre dette med hver af de komponenter, vi konstruerer undervejs, så når vi er færdige, kan vi skjule dem alle sammen til en flot pakke, der fungerer via knappetryk uden at se alle af ledningerne og det interne arbejde.

Vi vil bruge det meste af denne vejledning til at lave fysiske opgaver som at designe et kredsløb, kortlægge et prototypebord og lodde ting sammen, men der er lidt programmering, vi skal lave i slutningen, efter at vi har flyttet ting. Årsagen er, at vi i sidste ende kommer til at bruge det 2-leder serielle interface til at kommunikere mellem vores vigtigste "master" controller og alle "slave" controllere, der udgør komponenterne i vores overordnede projekt i denne serie af tutorials og, som du husker, i Tutorial 6 opfandt vi en slags Morse Code -metode til at kommunikere vores terningekast fra terningrullen (Tutorial 4) til Register Analyzer (Tutorial 5), der viste resultatet af terningkastet i binært på 8 lysdioder. Nå, det var bare en "rul din egen" kommunikationsmetode, som jeg besluttede at bruge, fordi det på det tidspunkt var for tidligt at komme i 2-leder seriel kommunikation. Vi er nu næsten parate til at dykke ned i den dybe ende af seriel kommunikation, og det vil vi gøre i Tutorial 10, men nu skal vi forudse den fremtidige udvikling og omslutte vores terningevals-LED'er for at frigøre de to pins, som vi har brug for til den serielle kommunikation.

Disse er SCL- og SDA -benene på ATmega328P. Du kan se ved pinout-diagrammet, at de også kaldes ADC5 og ADC4, når de bruges i analoge til digitale konverteringer, de kaldes PCINT13 og PCINT12, når de bruges som "Pin Change Interrupt" -stifter, og endelig kalder vi dem generelt PC5 og PC4 når det blot betragtes som stifter på PortC. Da vi brugte disse to ben som en del af vores terningrulle af forskellige årsager (de vigtigste var, at det gjorde kodning lettere og ledninger til lysdioderne på brættet lettere), bliver vi nu nødt til at ændre vores kode og omforme den lidt til frigør disse pins til fremtidig kommunikation.

Så vi begynder med at designe, klippe, tilslutte og lodde. Derefter vil vi skrive terningevalsen om til arbejde med vores nye opsætning og til sidst teste den for at sikre, at den stadig fungerer.

For at fuldføre denne vejledning skal du bruge følgende elementer:

  1. De standard ting, du altid har brug for, vil jeg stoppe med at gentage hele tiden: dit prototypebord, din kopi af databladet og instruktionssættet og dine hjerner.
  2. Et trådløst kredsløb, der prototyper PCB -kort som dette: https://www.ebay.com/itm/191416297627 Jeg kommer til at bruge Measure Explorer 103RAWD -versionen af dette kort: https://www.ebay.com/itm/103RAT -circuit-proto-proto … da jeg har en masse af dem ved hånden, men 103RAW-0-versionen, som jeg linker til ovenfor, fungerer også fint.
  3. Clippers, ledninger, lodde, loddejern, "hjælpende hænder" eller hvad som helst for at holde ting osv. Osv. Osv. Igen, herfra vil jeg også stoppe med at liste disse ting op. Hvis du faktisk er nået så langt i disse selvstudier, har du sandsynligvis alle disse ting allerede.

Her er et link til den komplette samling af mine AVR-assembler-selvstudier:

Trin 1: Design et ledningsdiagram

Lav et ledningsdiagram
Lav et ledningsdiagram
Lav et ledningsdiagram
Lav et ledningsdiagram
Lav et ledningsdiagram
Lav et ledningsdiagram

Det fede ved Measure Explorer -tavlerne er, at hvis du tager lidt tid og kortlægger tingene i begyndelsen, kan du spare dig selv for en masse ledninger til sidst. Så vi begynder med at tage lidt tid at designe vores layout, før vi begynder at lodde noget. Med denne slags bræt skal du skære en flok forbindelsestråde, hvilket ikke er så let, men resultatet er et meget flot kompakt bord med et minimum rod af sammenfiltrede ledninger. Den første ting, vi skal gøre, er at designe vores kredsløb, så det passer på tavlen. En god måde at gøre dette på er at downloade kortet over brættet og derefter bruge det til at lege med forskellige designs, indtil du finder et, der virker. Her er layoutet til ME-PB-103RAWD https://www.bluemelon.com/photo/3483513-T800600.jpg, og her er layoutet til ME-PB-103RAW-0 https://www.bluemelon. com/photo/57107/2297363-T8006… Jeg har også vedhæftet disse som billeder. Der er en række måder at designe kredsløbet på. Det første er simpelthen at udskrive kortet ovenfor, tage en pen eller blyant og begynde at tegne forbindelser på det. Du vil sandsynligvis gerne montere dine lysdioder og ATmega328P og putte dem på selve tavlen først, så du ved, hvor meget plads de tager, og derefter tegne dem på diagrammet, og derfra kan du prøve forskellige ledningsordninger. Den anden måde du kunne gør det er det samme som det første, undtagen du finder et computerprogram, der kortlægger ledningerne for dig ved hjælp af de nyeste topologiske algoritmer. Endelig måden jeg gjorde det på. Jeg satte komponenterne på tavlen først, så jeg vidste størrelsen på tingene, og hvor jeg ville have tingene. Derefter downloadede jeg en Android -app kaldet "Whiteboard" på min Galaxy Tab4, indlæste tavlekortet på den og gik derefter til den lokale pub og legede med designs over et par halvliter Black Ghost Oatmeal Stout.:) Jeg viser resultatet af dette på de to sidste billeder. Det gode ved at tegne det på denne måde er, at når du ser på det med din billedfremviser, kan du klikke på "flip horozontal", og det vil vende billedet og give dig ledningsdiagrammet til den anden side af tavlen! Meget praktisk til vores næste trin.

Trin 2: Skær kredsløbet ud på tavlen

Skær kredsløbet ud på tavlen
Skær kredsløbet ud på tavlen
Skær kredsløbet ud på tavlen
Skær kredsløbet ud på tavlen
Skær kredsløbet ud på tavlen
Skær kredsløbet ud på tavlen

Tag først en sharpie, og brug dit layout, som du kortlagde i det foregående trin, til at tegne dit kredsløb på tavlen. Dvs. tegne linjer for at repræsentere ledningerne. Tegn ikke noget med hensyn til komponenter, kun forbindelsestråde som vist på det første billede. Bemærk, at når du skruer op (og hvis du ligner mig, vil du ødelægge ting mange gange i disse trin), kan du bruge et viskelæder og slette linjen. Gør dette for begge sider af brættet.

Dernæst skal du afbryde forbindelserne omkring linjerne. Hvis du ser nøje på brættet, vil du se, at hvert stifthul er forbundet med de 4 tilstødende på begge sider af brættet, så alle hullerne på brættet er forbundet med hinanden, når du begynder. Så du skal skære langs begge sider af hver af dine ledninger for at isolere dem. Den mest almindelige måde at gøre denne skæring på er med en Exacto -kniv. Men jeg suger til Exacto -knive og ville nok skære mig selv. Så jeg bruger en Dremel med et tyndt skæreværktøj. Jeg ville ønske, at jeg havde en form for slibefastgørelse, der kom til et skarpt punkt, da det ville fungere bedst - men jeg har ikke sådan en, så jeg brugte skæresavens vedhæftede fil. (Bemærk tilføjet: Efter at have afsluttet dette projekt fandt jeg ud af, at de mindre "kraftige skærehjul" -hoveder til Dremels fungerer bedst, de ligner små cirkler af sandpapir, og de fungerer som skæreværktøjet vist her bortset fra at de har en mindre diameter og så det er meget lettere at se og kontrollere, hvor du skærer)

Undervejs er det nyttigt at holde tavlen op mod lyset og sikre, at ledningerne rent faktisk er skåret. Du kan blive irriteret over, at der er forbindelser på begge sider af brættet, så du skal gentage skæringsprocessen igen med den anden side, men jeg tror, du vil se pointen med dette, når du er færdig. Jeg lavede masser af fejl ved at skære ledninger, der ikke skulle have været klippet og have den anden side stadig tilsluttet, viser sig at være rart.

Det vil tage lidt tid og tålmodighed at skære kredsløbet ind i brættet, men det er lidt sjovt, når du først er god til det.

Trin 3: Lodd komponenterne og test

Lodde komponenterne og test
Lodde komponenterne og test
Lodde komponenterne og test
Lodde komponenterne og test
Lodde komponenterne og test
Lodde komponenterne og test

Nu hvor du har isoleret alle ledningerne i dit printkort, kan du begynde at lodde på de enkelte komponenter.

Jeg lod først på lysdioderne for en af terningerne, derefter tog jeg positive og negative spor fra mit brødbræt og testede forbindelserne for hver LED for at sikre, at de er isoleret fra hinanden, og at de fungerer.

Tilsvarende med den anden dør.

Led derefter modstanden til hver dør, og 10K modstanden på bagsiden af brættet.

Vedhæft derefter krystaloscillatoren, 22pf hætter, trykknapper og ATmega328P. Du vil måske lodde en chipstik og derefter passe din ATmega328P ind i det, så du kan fjerne det, hvis du vil, og genbruge det i noget andet. Jeg lod lige min chip til brættet, da jeg ved, hvad vi til sidst bygger med alle disse tutorials, og jeg ved, at jeg vil kunne lide det nok, at jeg ikke vil tage chippen ud.

Læg mærke til den måde, hvorpå vi fastgjorde overskrifterne ved at se på bagsiden af brættet. Jeg brugte lange nålhoveder og bøjede dem horozontalt, så de ikke stikker op af brættet. Dette er for at jeg til sidst kan dække brættet til niveauet for trykknapper og lysdioder med en beholder og ikke have overskrifter i vejen. Vi har en header til Tx, Rx, så vi kan programmere chippen, vi har en header til SDA, SCL, så vi kan bruge 2-leder kommunikation senere. og vi har en 3 -pins header til AVCC, AREF, GND på den anden side af brættet. Jeg har alle jordstifterne og VCC -stifterne koblet sammen på chippen, så vi har kun brug for en strømindgang.

Endelig når alt er kablet, leder vi dør 1 til dør2 på den måde, vi gjorde på brødbrættet, så vi kan kontrollere begge terninger med kun 9 ben.

Nu skal vi ændre vores kode, så den styrer denne nye opsætning.

Trin 4: Monteringskode og video

Jeg har vedhæftet samlingskoden og videoen af terningevalsen i drift. Alt jeg gjorde var at tage koden til vores terningrulle fra selvstudie 6, ændre stifterne, så de matchede det nye layout, og fjerne kommunikationssubrutinen, da vi skriver en ny i Tutorial 10. Næste gang vil vi bryde vores tastatur ud igen og lære at styre 7-segment displays. Vi ses derefter!

Anbefalede: