Talaan ng mga Nilalaman:

Tutorial sa AVR Assembler 8: 4 Mga Hakbang
Tutorial sa AVR Assembler 8: 4 Mga Hakbang

Video: Tutorial sa AVR Assembler 8: 4 Mga Hakbang

Video: Tutorial sa AVR Assembler 8: 4 Mga Hakbang
Video: LDmicro 22: Arduino Boards with AVRDUDESS (Microcontroller PLC Ladder Programming with LDmicro) 2024, Nobyembre
Anonim
Tutorial sa AVR Assembler 8
Tutorial sa AVR Assembler 8

Maligayang pagdating sa Tutorial 8!

Sa maikling tutorial na ito ay kukuha kami ng kaunting paglilipat mula sa pagpapakilala ng mga bagong aspeto ng programa ng wika ng pagpupulong upang maipakita kung paano ilipat ang aming mga bahagi ng prototype sa isang hiwalay na "naka-print" na circuit board. Ang dahilan dito ay, sa puntong ito, ang aming pangunahing prototyping breadboard ay nasisiksik sa napakaraming mga chips, wire, pindutan, at LEDs na nahihirapan na subukan ang mga bagong bagay at dahil sa kalaunan kailangan nating ilipat ang mga sangkap sa kanilang sariling mga board., maaari na rin tayong magsimula ngayon. Marami sa iyo ay marahil ay may husay sa mga bagay na sasakupin namin sa tutorial na ito at sa gayon maaari mong tingnan ang Tutorial na ito bilang isang nakakarelaks na pahinga mula sa pag-coding.

Kaya't ngayong araw ay ililipat namin ang aming dice roller ATmega328P at ang kasamang pares ng dice sa isang panlabas na board na may mga koneksyon sa aming pangunahing board para sa komunikasyon dito at para sa pagpapatakbo nito. Bukod sa na, ang mga kable at paggana ng dice ay magiging self-nilalaman sa loob ng sangkap na iyon.

Marahil maaari mong hulaan mula dito na ang aming pangwakas na layunin ay gawin ito sa bawat isa sa mga bahagi na itinatayo namin sa daan upang kapag natapos na maaari nating maitago ang lahat sa isang magandang hitsura na pakete na gagana sa pamamagitan ng mga pagpindot sa mga pindutan nang hindi nakikita ang lahat ng mga wire at panloob na pagtatrabaho.

Gugugol namin ang karamihan sa tutorial na ito sa paggawa ng mga pisikal na gawain tulad ng pagdidisenyo ng isang circuit, pagmamapa ng isang prototyping board, at mga bagay na panghinang, ngunit may kaunting programa na kailangan nating gawin sa dulo pagkatapos naming ilipat ang mga bagay. Ang dahilan ay sa kalaunan ay gagamitin namin ang 2-wire Serial Interface upang makipag-usap sa pagitan ng aming pangunahing "master" na kontrolado at lahat ng mga "tagapag-alipin" na taga-kontrol na bumubuo sa mga bahagi ng aming pangkalahatang proyekto sa seryeng ito ng mga tutorial at, tulad ng naalala mo, sa Tutorial 6 inimbento namin ang isang uri ng uri ng uri ng Morse Code upang maiparating ang aming mga dice roll mula sa dice roller (Tutorial 4) sa Register Analyzer (Tutorial 5) na ipinakita ang resulta ng dice roll sa binary sa 8 LEDs. Sa gayon iyon ay isang "gumulong lamang ng iyong sariling" paraan ng pakikipag-usap na napagpasyahan kong gamitin dahil, sa oras na iyon, masyadong maaga upang makapasok sa 2-wire na serial na komunikasyon. Halos handa na kami ngayon na sumisid sa malalim na dulo ng serial komunikasyon, at gagawin namin iyon sa Tutorial 10, ngunit sa ngayon kailangan naming asahan ang pag-unlad sa hinaharap at muling i-wire ang aming dice roller LED's upang mapalaya ang dalawa mga pin na kailangan namin para sa serial na komunikasyon.

Ito ang mga SCL at SDA na pin sa ATmega328P. Maaari mong makita sa pamamagitan ng pinout diagram na ang mga ito ay tinatawag ding ADC5 at ADC4 kapag ginamit sa Analog-to-Digital na mga conversion, tinatawag silang PCINT13 at PCINT12 kapag ginamit bilang "Pin Change Interrupt" na mga pin, at sa wakas ay karaniwang tinatawag nating PC5 at PC4 kapag isinasaalang-alang lamang bilang mga pin sa PortC. Dahil ginamit namin ang dalawang mga pin na ito bilang bahagi ng aming roller ng dadu para sa iba't ibang mga kadahilanan (ang pangunahing mga ito ay ginagawang mas madali ang pag-coding at mas madali ang mga kable sa mga LED sa board) kailangan naming baguhin ang aming code at muling i-wire ito nang kaunti sa palayain ang mga pin na ito para sa pag-communcation sa hinaharap.

Sa gayon ay magsisimula tayo sa pamamagitan ng paggawa ng pagdidisenyo, paggupit, mga kable, at paghihinang. Pagkatapos ay isusulat namin muli ang dice roller upang gumana sa aming bagong set up at sa wakas ay susubukan ito upang matiyak na gagana pa rin ito.

Upang makumpleto ang Tutorial na ito kakailanganin mo ang mga sumusunod na item:

  1. Ang karaniwang mga bagay na palagi mong kailangan na titigil ako sa pag-uulit sa lahat ng oras: ang iyong prototyping board, iyong kopya ng datasheet at hanay ng pagtuturo, at iyong mga talino.
  2. Ang isang wireless circuit prototyping PCB board tulad nito: https://www.ebay.com/itm/191416297627 Gagamitin ko ang bersyon ng Sukat Explorer 103RAWD ng board na ito: https://www.ebay.com/itm/103RAT -circuit-proto-proto … dahil mayroon akong isang pangkat ng mga ito sa kamay, ngunit ang bersyon na 103RAW-0 na na-link ko sa itaas ay gagana rin.
  3. Ang mga clipping, wires, solder, iron na panghinang, "tumutulong sa mga kamay" o kung ano pa man upang hawakan ang mga bagay-bagay, atbp. Atbp atbp muli, mula dito ay ititigil ko na rin ang listahan ng mga bagay na ito. Kung talagang nakuha mo ito sa mga Tutorial na ito malamang na mayroon ka ng lahat ng bagay na ito.

Narito ang isang link sa kumpletong koleksyon ng aking mga tutorial na AVR assembler:

Hakbang 1: Magdisenyo ng isang Diagram ng Mga Kable

Magdisenyo ng isang Diagram ng Mga Kable
Magdisenyo ng isang Diagram ng Mga Kable
Magdisenyo ng isang Diagram ng Mga Kable
Magdisenyo ng isang Diagram ng Mga Kable
Magdisenyo ng isang Diagram ng Mga Kable
Magdisenyo ng isang Diagram ng Mga Kable

Ang cool na bagay tungkol sa mga board ng Sukat Explorer ay kung magtatagal ka at i-mapa ang mga bagay sa simula maaari mong i-save ang iyong sarili ng isang ano ng maraming mga kable sa dulo. Sa gayon ay magsisimula kami sa pamamagitan ng paglalaan ng ilang oras sa pagdidisenyo ng aming layout bago kami magsimulang maghinang ng anumang bagay. Sa ganitong uri ng board, kailangan mong i-cut ang isang bungkos ng mga nag-uugnay na mga wire, na hindi ganoon kadali, ngunit ang resulta ay isang napakagandang compact board na may isang minimum na gulo ng mga gusot na mga wire. Ang unang bagay na kailangan nating gawin ay idisenyo ang aming circuit upang magkasya ito sa pisara. Ang isang magandang paraan upang gawin ito ay upang i-download ang mapa ng board at pagkatapos ay gamitin ito upang maglaro sa paligid ng iba't ibang mga disenyo hanggang sa makita mo ang isa na gumagana. Narito ang layout para sa ME-PB-103RAWD https://www.bluemelon.com/photo/3483513-T800600-j.webp

Hakbang 2: Gupitin ang Circuit sa Lupon

Gupitin ang Lupon sa Lupon
Gupitin ang Lupon sa Lupon
Gupitin ang Lupon sa Lupon
Gupitin ang Lupon sa Lupon
Gupitin ang Lupon sa Lupon
Gupitin ang Lupon sa Lupon

Kumuha muna ng isang matulis at, gamit ang iyong layout na na-map mo sa nakaraang hakbang, iguhit ang iyong circuit sa pisara. I.e. gumuhit ng mga linya upang kumatawan sa mga wire. Huwag gumuhit ng anuman sa mga tuntunin ng mga bahagi, lamang ang mga nag-uugnay na mga wire tulad ng ipinakita sa unang larawan. Pansinin na kapag nag-screw up ka (at kung mayroon kang katulad sa akin ay isasara mo ang mga bagay nang maraming beses sa mga hakbang na ito) maaari kang gumamit ng isang pambura at burahin ang linya. Gawin ito para sa magkabilang panig ng pisara.

Susunod na kailangan mong i-cut ang mga koneksyon sa paligid ng mga linya. Kung titingnan mong mabuti ang board makikita mo na ang bawat butas ng pin ay konektado sa 4 na katabi sa magkabilang panig ng board upang ang lahat ng mga butas sa board ay konektado sa bawat isa kapag nagsimula ka. Kaya kailangan mong i-cut kasama ang magkabilang panig ng bawat isa sa iyong mga wire upang ihiwalay ang mga ito. Ang pinakakaraniwang paraan upang magawa ang paggupit na ito ay gamit ang isang Exacto na kutsilyo. Ngunit sinisipsip ko ang mga kutsilyo ng Exacto at marahil ay puputulin ang aking sarili. Kaya gumagamit ako ng isang Dremel na may isang manipis na attachment ng tool sa paggupit. Nais kong magkaroon ako ng isang uri ng nakakagiling kalakip na dumating sa isang matalim na point dahil iyon ay gagana nang pinakamahusay - ngunit wala akong katulad nito kaya ginamit ko ang nakakabit na lagkit na nakakabit. (Naidagdag ang tala: Matapos ang proyektong ito nalaman ko na ang mas maliit na "mabibigat na tungkulin sa paggulong" na mga ulo para sa Dremels ay pinakamahusay na gumagana, ang hitsura nila ay maliit na mga bilog ng papel de liha at gumagana ang mga ito tulad ng cutting tool na ipinakita dito maliban na ang mga ito ay mas maliit na diameter at iba pa mas madaling makita at makontrol kung saan ka pumuputol)

Sa daan ay kapaki-pakinabang na hawakan ang board hanggang sa ilaw at tiyakin na ang mga wire ay talagang pinutol. Maaari kang maiinis sa katotohanan na may mga koneksyon sa magkabilang panig ng board kaya kailangan mong ulitin muli ang proseso ng paggupit sa kabilang panig, ngunit sa palagay ko makikita mo ang punto nito sa oras na natapos ka. Gumawa ako ng maraming pagkakamali sa paggupit ng mga wire na hindi dapat gupitin at ang pagkakaroon ng kabilang panig ay nakakonekta pa rin na maganda.

Kakailanganin ng kaunting oras at pasensya upang gupitin ang circuit sa board ngunit ito ay uri ng kasiyahan sa sandaling magawa mo ito.

Hakbang 3: Maghinang ng Mga Bahagi at Pagsubok

Maghinang ang Mga Bahagi at Pagsubok
Maghinang ang Mga Bahagi at Pagsubok
Maghinang ang Mga Bahagi at Pagsubok
Maghinang ang Mga Bahagi at Pagsubok
Maghinang ang Mga Bahagi at Pagsubok
Maghinang ang Mga Bahagi at Pagsubok

Ngayon na ihiwalay mo ang lahat ng mga wire sa iyong circuit board maaari mong simulan ang paghihinang sa mga indibidwal na bahagi.

Una akong naghinang sa mga LED para sa isa sa mga dice, pagkatapos ay kumuha ako ng positibo at negatibong mga lead mula sa aking breadboard at sinubukan ang mga koneksyon para sa bawat LED upang matiyak na sila ay nakahiwalay sa bawat isa at gumagana ang mga ito.

Gayundin sa iba pang namamatay.

Pagkatapos wire ang risistor sa bawat mamatay, at ang 10K risistor sa likod ng pisara.

Pagkatapos ay ikabit ang kristal oscillator, 22pf cap, pushbuttons, at ATmega328P. Maaaring gusto mong maghinang ng isang chip socket at pagkatapos ay magkasya sa iyong ATmega328P sa gayon maaari mong alisin ito kung nais mo at muling gamitin ito sa iba pa. Inilagay ko lang ang aking maliit na tilad sa board dahil alam ko kung ano ang huli naming itinatayo sa lahat ng mga tutorial na ito at alam kong magugustuhan ko ito nang sapat na hindi ko gugustuhin na alisin ang maliit na tilad.

Pansinin, sa pamamagitan ng pagtingin sa likod ng board, ang paraan na ikinabit namin ang mga header. Gumamit ako ng mga mahahabang pin na header at yumuko ang mga ito sa pagkahzontal upang hindi sila dumikit sa board. Ito ay upang sa wakas ay masakop ko ang board sa antas ng mga pushbuttons at LED na may lalagyan at walang mga header na makagagambala. Mayroon kaming isang header para sa Tx, Rx kaya maaari naming mai-program ang chip, mayroon kaming isang header para sa SDA, SCL upang maaari naming magamit ang komunikasyon ng 2-wire sa paglaon. at mayroon kaming 3 pin header para sa AVCC, AREF, GND sa kabilang panig ng board. Mayroon akong lahat ng mga ground pin at VCC pin na naka-wire nang magkasama sa maliit na tilad kaya kailangan namin ng isang input ng kuryente.

Sa wakas sa sandaling ang lahat ay naka-wire, wires mamatay tayo 1 upang mamatay2 sa paraang ginawa namin sa breadboard upang makontrol namin ang parehong dice na may 9 na mga pin lamang.

Ngayon kailangan naming baguhin ang aming code upang makontrol nito ang bagong setup.

Hakbang 4: Assembly Code at Video

Inilakip ko ang code ng pagpupulong at ang video ng dice roller na tumatakbo. Ang ginawa ko lang ay kunin ang code para sa aming dice roller mula sa Tutorial 6, baguhin ang mga pin upang tumugma sa bagong layout, at alisin ang subroutine ng komunikasyon dahil magsusulat kami isang bago sa Tutorial 10. Sa susunod na oras ay sisira namin muli ang aming keypad at matutunan kung paano kontrolin ang mga pagpapakita ng 7 segment. Tingnan mo nga!

Inirerekumendang: