Përmbajtje:

Fillimi me Bascom AVR: 5 hapa
Fillimi me Bascom AVR: 5 hapa

Video: Fillimi me Bascom AVR: 5 hapa

Video: Fillimi me Bascom AVR: 5 hapa
Video: Halsey - Without Me 2024, Korrik
Anonim
Fillimi me Bascom AVR
Fillimi me Bascom AVR

Ky është fillimi i një serie për t'ju mësuar të programoni mikrokontrolluesin tuaj AVR me Bascom AVR.

Pse po e bej kete.

Shumica e mostrave të programit në këtë seri mund t'i bëni me Arduino.

Disa më të lehta dhe disa më të vështira, por në fund të dy do të punojnë në të njëjtin kontrollues.

Por mënyra e programimit është e ndryshme në çdo mjedis zhvillimi. Arduino ka nevojë për një bibliotekë për gjithçka, përveç funksioneve themelore. Bascom gjithashtu punon me biblioteka, por rrallë më duhet të përfshijë një të tillë. Me Arduino, të gjitha cilësimet specifike të harduerit bëhen përmes bibliotekave. keni shumë pak ndikim në fuqinë aktuale të mikrokontrolluesit. Duke filluar me kohëmatësit që ka kontrolluesi. me arduino keni nevojë për një bibliotekë përsëri. nëse keni kohëmatësin derisa të funksionojë, mund të jetë një bibliotekë tjetër që përplaset me cilësimet tuaja. Në bascom ju keni qasje falas në harduerin e plotë duke përfshirë sektorin e nisjes që është i zënë nga arduino. për shembull, disa biblioteka në bascom ju pyesin se cilin kohëmatës dëshironi të përdorni. nga ana tjetër, meqenëse arduino e bën shumë të lehtë krijimin e një biblioteke, natyrisht e bën atë një platformë ku pajisjet e reja dhe sensorët zakonisht kanë një bibliotekë drejtpërdrejt. ajo që shpesh shoqërohet me shumë kërkime në bascom dhe funksionet që një bibliotekë normalisht do të merrte përsipër, atëherë duhet të përfshihen me kujdes në kodin e programit. por lajm i mirë komuniteti bascom është gjithashtu shumë i madh, prandaj ekziston një zgjidhje për çdo ide.

Pra, varet pjesërisht nga projekti se çfarë përdoret për një mjedis zhvillimi dhe pjesërisht nga njohuritë e personit programues.

por pse po e bëj këtë seri. nga njëra anë kursen shumë para. Nuk kam pse të blej një bord arduino për çdo projekt. Për shembull: Një Arduino uno noname kushton rreth 12 € kontrolluesi që është në të kushton vetëm 2.5 € me qarkun minimal të kërkuar për një funksion të qëndrueshëm, kushton rreth 4 €. nga ana tjetër ju keni përzgjedhjen e plotë të çipave avr që mbështeten në dispozicion. atmegas 8 deri në 256 dhe veshje 8 në 2313 dhe shumë lloje xmega për të cilat nuk kam përvojë. Nëse thjesht dëshironi të përdorni një servo dhe një sensor tejzanor që mund të njohë një dorë, për shembull, dhe pastaj të hapni një kapak të një koshi plehrash, mund të përdorni çipin më të vogël të mundshëm. Pra, ka shumë arsye për të mësuar një gjuhë të dytë.

Pra, le të fillojmë

Furnizimet

Kjo është një listë e pjesëve minimale të kërkuara për funksionimin e qëndrueshëm të çipit dhe programimit.

Breadboard për testim

Atmega 8-16PU (më mirë blini 2 ose 3 nëse i vrisni gabimisht)

7805 rregullator i tensionit 5V

Rezistencë 10 Kohm

Kondensator filmi 100nF

Kondensator elektrolitik 10µF

Kondensator elektrolitik 100μF

disa tela për dërrasën e bukës

Windows PC 7/8/8.1/10

Programues ISP (unë do të përdor këtu USBsp që mund ta blini në amazon për pak para)

Bascom AVR (mund të shkarkoni këtu një DEMO. Të gjitha funksionet janë të hapura, por mund të shkruani kod vetëm deri në madhësinë 4Kb që është e mjaftueshme për shumë kode).

Pjesët opsionale:

LED me rezistorë

çelsin e shtytjes

pjesë specifike të projektit

Hapi 1: Instalimi i Bascom dhe Konfigurimi

Instalimi i Bascom dhe Setup
Instalimi i Bascom dhe Setup
Instalimi i Bascom dhe Setup
Instalimi i Bascom dhe Setup
Instalimi i Bascom dhe Setup
Instalimi i Bascom dhe Setup

Shkarkoni skedarin dhe instaloni Bascom AVR. Instaloni të gjitha pjesët e tij duke përfshirë kutinë e fundit të zgjedhjes pas instalimit.

Pas kësaj rindizni kompjuterin tuaj përndryshe bascom nuk do të fillojë.

Pas rindezjes filloni bascom.

Shkoni te Opsionet -> Programues dhe zgjidhni USBasp nga lista, ruani cilësimet dhe mbyllni Bascom.

Përdoreni këtë Program për të instaluar usbasp. Pas kësaj, rindizni përsëri kompjuterin tuaj. Tani lidhni USBasp me kompjuterin tuaj dhe filloni menaxherin e pajisjes. USBasp duhet të shfaqet në pajisjet libusb.

Stat Bascom përsëri dhe krijoni një skedar të ri. Ruani atë në kompjuterin tuaj dhe shtypni butonin F7 në tastierën tuaj.

Përpiluesi fillon dhe përpilon programin bosh. Tani mund të provoni funksionalitetin e programuesit.

Shtypni butonin F4 në tastierën tuaj për të filluar dritaren e programuesit. Tani shkoni te chip -> identifiko për të filluar një ndërveprim. LED -të nga USBasp tani duhet të pulsojnë shkurt. Ju duhet të merrni një mesazh si çipi Id FFFFFF nuk mund ta lexojë pajisjen. Kjo është një shenjë e mirë që Programuesi po punon, por nuk gjeti asnjë çip.

Tani mund të fillojmë të ndërtojmë qarkun e parë.

Hapi 2: Le të hedhim një vështrim më të afërt në çip

Le të hedhim një vështrim më të afërt në çip
Le të hedhim një vështrim më të afërt në çip

Nëse shikoni pinout -in e çipit duket se çipi nuk ka ngjashmëri me tabelën arduino. Sigurisht, ne përdorim një Atmega8 dhe në Arduino uno është një Atmega328. Por Pinout është pothuajse i njëjtë, por çipi i bordit Arduino Uno ka më shumë funksione. Këtu emrat e kunjave. VCC dhe GND janë kunjat për furnizimin me energji.

AREF dhe AVCC janë kunja për tensionin referent dhe furnizimin me energji për konvertorin analog në dixhital.

PB 0-7 PC 0-6 PD 0-7 janë kunja dalëse me qëllim të përgjithshëm me përdorim të shumëfishtë.

reset pin është ajo që thotë emri. Për të rifilluar çipin. Linja mbi emrin e rivendosur do të thotë mohim. Kjo do të thotë, për të rivendosur çipin ju duhet ta tërhiqni atë në 0V.

Për kunjat e mëposhtëm udhëzime të veçanta vijnë së shpejti.

RXD TXD janë kunja harduerike për komunikimin serik UART.

INT0 INT1 janë kunjat e ndërprerjes së harduerit

XCK /T0 UART Burimi i orës /Kohëmatësi /Counter0 Burimi i orës

Kunjat XTAL /TOSC janë për një kristal të jashtëm deri në 16MHz (modele të ndryshme deri në 20MHz) /Kunja kristal për një RTC të brendshëm

T1 është i ngjashëm me T0

Kunjat AIN janë për krahasuesin analog

ICP1 është i ngjashëm me T0/T1

OC1A është kunja e daljes së harduerit për pwm timer1 channel A

Kodi SS / OC2 i zgjedhur për SPI / si OC1B por kanali B

MOSI MISO SCK / OC2 janë kunjat e harduerit SPI dhe kunjat për programimin / kohëmatësin e daljes PWM2

ADC0 në ADC5 janë hyrjet analoge

SDA SCL janë kunjat për harduerin I2C

Çipi normal mund të funksionojë nga 4, 5V në 5, 5V, Atmega 8L mund të punojë me Tension shumë më të ulët.

E shihni që edhe ky çip mund të bëjë më shumë sesa një Arduino Uno që duket se nuk mund të bëjë. Por Arduino gjithashtu mund ta bëjë këtë, ju vetëm duhet ta programoni atë.

Hapi 3: Qarku i Parë

Qarku i Parë
Qarku i Parë
Qarku i Parë
Qarku i Parë

Tani është koha për të ndërtuar qarkun tuaj të parë.

Cili është zakonisht qarku i parë? E drejtë! Le të mbyllim një LED.

LED është i lidhur me PB0. Rezistenca pranë çipit ka 10k Ohms.

Rezistenca pranë LED ka 470 Ohms.

Tani mund ta lidhni USBasp me Atmega siç tregohet në figurë.

Por, para se të ndizni energjinë, na shkruani programin.

Hapi 4: Shkruani Programin e Parë

Shkruani Programin e Parë
Shkruani Programin e Parë

Krijoni një skedar të ri në Bascom dhe shkruani tekstin e mëposhtëm.

$ regfile "m8def.dat"

kristal $ = 1000000 config portb.0 = dalje do portb.0 = 1 pritje 1 portb.0 = 0 pritje 1 lak

pas kësaj përpilojeni atë duke shtypur F7 në tastierën tuaj.

Tani mund ta programojmë çipin duke shtypur F4. Shfaqet dritarja e programuesit. Tani është koha për të ndezur energjinë nga tryeza e bukës. Ju duhet të aplikoni diçka midis 6 dhe 12 volt.

Tani shkoni te chip -> autoprogram. Nëse dritarja e programuesit mbyllet automatikisht programimi ishte i suksesshëm.

LED duhet të ndizet në një frekuencë të dytë.

Tani hidhini një vështrim më të afërt programit për të kuptuar sintaksën.

$ regfile "m8def.dat"

kristal $ = 1000000

me $ regfile i themi përpiluesit llojin e çipit të përdorur emri i çipit Arduino do të ishte "m328pdef.dat"

me kristal $ i themi shpejtësinë e CPU -së rreth 1MHz.

config portb.0 = Dalje

kjo do të thotë që PB0 duhet të veprojë si dalje.

Nga rruga, shkurtesa PB0 do të thotë porti B bit 0. Çipi është i ndarë në disa porte. Secilit port i jepet një letër për identifikim të qartë. dhe secila portpin pak nga 0 në 7. Për shembull, unë mund të shkruaj një bajt të plotë në regjistrin e daljes së portit, i cili do të dalë përmes kunjave të portit individual.

bëj

lak

Kjo është ajo që në Arduino do të thotë deklarata e lakut void. Të gjitha këto dy komanda do të përsëriten përgjithmonë. (me disa përjashtime, por më vonë më shumë për këtë)

Portb.0 = 1

prisni 1 portb.0 = 0 prisni 1

Këtu ne fshijmë ndezjen e led.

Portb.0 = 1 i thotë çipit të kalojë daljen PB0 në 5V

komanda prit 1 lini çipin të presë për një sekondë. Nëse doni të ndërroni led më shpejt ju duhet të zëvendësoni komandën e pritjes me pritje tani mund të futni ca kohë tani në milisekonda p.sh. pret 500. (waitus do të thotë të presësh në nanosekonda)

Portb.0 = 0 i thotë çipit të kalojë daljen PB0 në 0V.

Hapi 5: Shtoni një buton për të përdorur hyrjet

Shtoni një buton për të përdorur hyrjet
Shtoni një buton për të përdorur hyrjet

Tani shtojmë një buton për të ndriçuar led -in nëse shtypet butoni.

Vendosni butonin siç tregohet në figurë.

tani shkruani programin vijues.

$ regfile "m8def.dat"

$ kristal = 1000000 konfigurim portb.0 = konfigurim dalës portd.7 = hyrje Portd.7 = 1 bëni nëse pind.7 = 0 pastaj portb.0 = 1 tjetër portb.0 = 0 lak

Nëse e ngarkoni atë program në çip, led ndizet vetëm kur shtypet butoni. Por pse?

programi fillon njësoj si ai i fundit deri në

config portd.7 = input. Kjo do të thotë, pin PD7 i cili u lidh me butonin vepron si një hyrje.

Portd.7 = 1 nuk e kalon kunjin në lartësi, por aktivizon rezistencën e brendshme tërheqëse të Atmega -s.

Statemendi if duket pak i çuditshëm nëse jeni mësuar me arduino.

nëse përdorni pohimin if duhet të përdorni pohimin "atëherë". Në këtë mostër pohimi if përdoret për operacione të vetme komanduese. Nëse doni të përdorni më shumë komanda, duhet ta shkruani kështu.

nëse pind.7 = 0 atëherë

portb.0 = 1 një kod disa kod disa kod tjetër portb.0 = 0 fund nëse

për këtë përdorim të deklaratës if duhet të përdorni pohimin "fund nëse" në fund.

ajo që është akoma e rëndësishme. Ndoshta e keni parë tashmë. hyrjet nuk pyeten me portx.x, por me pinx.x. Ju lehtë mund ta mbani mend atë. Daljet kanë "o" (port) në fjalë dhe hyrjet kanë "i" (pin).

Tani është radha juaj të luani pak përreth.

Udhëzimi im i ardhshëm do të vijë së shpejti (deklarata standarde si while, case i zgjedhur, for dhe variablat.)

Nëse ju pëlqen udhëzimi im dhe doni më shumë më tregoni në komente.

Recommended: