Sisukord:

Alustamine Bascom AVR -iga: 5 sammu
Alustamine Bascom AVR -iga: 5 sammu

Video: Alustamine Bascom AVR -iga: 5 sammu

Video: Alustamine Bascom AVR -iga: 5 sammu
Video: Eclipse config 2024, November
Anonim
Alustamine Bascom AVR -iga
Alustamine Bascom AVR -iga

See on sarja algus, mis õpetab teid programmeerima oma AVR -i mikrokontrollerit Bascom AVR -iga.

Miks ma seda teen.

Enamikku selle sarja programminäidetest saate teha Arduino abil.

Mõni lihtsam ja mõni raskem, kuid lõpuks töötavad mõlemad samal kontrolleril.

Kuid programmeerimisviis on igas arenduskeskkonnas erinev. Arduino vajab raamatukogu kõigeks, välja arvatud põhifunktsioonide jaoks. Bascom töötab ka raamatukogudega, kuid ma pean seda harva kaasama. Arduino abil tehakse kõik riistvarapõhised seaded raamatukogude kaudu. teil on väga väike mõju mikrokontrolleri tegelikule võimsusele. Alustades kontrollerite taimeritega. arduinoga vajate uuesti raamatukogu. Kui teil on taimer selle töötamiseni, võib teie seadetega vastuollu minna mõni teine teek. Bascomis on teil tasuta juurdepääs kogu riistvarale, sealhulgas arduino hõivatud alglaadimissektorile. näiteks mõned bascomi teegid küsivad teilt, millist taimerit soovite kasutada. teisest küljest, kuna arduino teeb raamatukogu loomise ise väga lihtsaks, muudab see loomulikult platvormiks, kus uuel riistvaral ja anduritel on tavaliselt raamatukogu otse. see, mis on sageli seotud bascomi paljude uuringutega ja funktsioonidega, mida raamatukogu tavaliselt omaks võtaks, tuleb seejärel programmi koodis hoolikalt sisse lülitada. kuid hea uudis on ka bascomi kogukond väga suur, mistõttu on igale ideele lahendus.

Seega sõltub see osaliselt projektist, mida arenduskeskkonna jaoks kasutatakse, ja osaliselt programmeerija oskusteabest.

aga miks ma seda sarja teen? ühelt poolt säästab see palju raha. Ma ei pea iga projekti jaoks arduino plaati ostma. Näiteks: noname Arduino uno maksab umbes 12 eurot, selle peal olev kontroller maksab vaid 2,5 eurot, minimaalse vooluahelaga, mis on vajalik stabiilseks funktsiooniks, see maksab umbes 4 eurot. teisest küljest on saadaval täielik valik toetatud avr -kiipe. atmegas 8 kuni 256 ja attiny 8 kuni 2313 ja paljud xmega tüübid, mille kohta mul puudub kogemus. Kui soovite lihtsalt kasutada servot ja ultraheliandurit, mis näiteks käe ära tunneb, ja seejärel prügikasti kaane avada, võite kasutada võimalikult väikest kiipi. Seega on teise keele õppimiseks palju põhjuseid.

Nii et alustame

Tarvikud

See on kiibi stabiilseks toimimiseks ja programmeerimiseks vajalike minimaalsete osade loend.

Leivaplaat testimiseks

Atmega 8-16PU (parem osta 2 või 3, kui tapad nad kogemata)

7805 5V pingeregulaator

10Kohm takisti

100nF kilekondensaator

10 µF elektrolüütkondensaator

100µF elektrolüütkondensaator

mõned juhtmed leivalaua jaoks

Windows PC 7/8/8.1/10

ISP programmeerija (ma kasutan siin USBaspi, mille saate Amazonist väikese raha eest osta)

Bascom AVR (siit saate alla laadida demo. Kõik funktsioonid on lukustamata, kuid koodi saate kirjutada ainult kuni 4Kb suurusele, millest piisab paljude koodide jaoks).

Valikulised osad:

LED -id takistitega

vajutage lülitid

projektipõhised osad

Samm: Bascomi installimine ja seadistamine

Bascomi installimine ja seadistamine
Bascomi installimine ja seadistamine
Bascomi installimine ja seadistamine
Bascomi installimine ja seadistamine
Bascomi installimine ja seadistamine
Bascomi installimine ja seadistamine

Laadige fail alla ja installige Bascom AVR. Installige selle kõik osad, sealhulgas viimane märkeruut pärast installimist.

Pärast seda taaskäivitage arvuti, vastasel juhul bascom ei käivitu.

Pärast taaskäivitamist käivitage bascom.

Avage Valikud -> Programmeerija ja valige loendist USBasp, salvestage seaded ja sulgege Bascom.

Kasutage seda programmi usbaspi installimiseks. Pärast seda taaskäivitage arvuti uuesti. Nüüd ühendage USBasp arvutiga ja käivitage seadmehaldur. USBasp peaks ilmuma libusb -seadmetele.

Stat Bascom uuesti ja looge uus fail. Salvestage see oma arvutisse ja vajutage klaviatuuri nuppu F7.

Kompilaator käivitab ja kompileerib tühja programmi. Nüüd saate testida programmeerija funktsionaalsust.

Programmeerija akna käivitamiseks vajutage klaviatuuri nuppu F4. Nüüd minge interaktsiooni alustamiseks kiibile -> identifitseerige. USB -seadme LED -id peaksid nüüd lühidalt vilkuma. Peaksite nägema sellist teadet nagu kiibi ID FFFFFF ei suutnud seadet lugeda. See on hea märk, et programmeerija töötab, kuid ei leidnud kiipi.

Nüüd saame hakata ehitama esimest vooluringi.

2. samm: vaatame kiipi lähemalt

Vaatame kiipi lähemalt
Vaatame kiipi lähemalt

Kui vaatate kiibi pistikut, tundub, et kiibil pole arduino plaadiga sarnasust. Muidugi, me kasutame Atmega8 ja Arduino uno on Atmega328. Kuid Pinout on peaaegu sama, kuid Arduino Uno plaadi kiibil on rohkem funktsioone. Siin on tihvtide nimed. VCC ja GND on toiteplokid.

AREF ja AVCC on analoog -digitaalmuunduri võrdluspinge ja toiteallika tihvtid.

PB 0-7 PC 0-6 PD 0-7 on mitmeotstarbelised üldotstarbelised sisendväljundpoldid.

nööpnõel on see, mida nimi ütleb. Kiibi taaskäivitamiseks. Lähtestamisnime kohal olev rida tähendab eitust. See tähendab, et kiibi lähtestamiseks peate selle alla tõmbama 0 V -ni.

Järgmiste tihvtide jaoks eraldage peagi saabuvad juhendid.

RXD TXD on riistvaralised kontaktid UART jadaühenduseks.

INT0 INT1 on riistvara katkestamise tihvtid

XCK /T0 UART Kellaallikas /Taimer /Loendur0 Kella allikas

XTAL /TOSC tihvtid on välise kristalli jaoks kuni 16MHz (erinevad mudelid kuni 20MHz) /Kristallpoldid sisemise RTC jaoks

T1 on sarnane T0 -ga

AIN -tihvtid on mõeldud analoogvõrdlejale

ICP1 on sarnane T0/T1 -ga

OC1A on pwm taimer1 kanali A riistvara väljundtipp

SSI / OC2 kiibi valimise tihvt SPI / sarnase OC1B jaoks, kuid kanal B

MOSI MISO SCK / OC2 on riistvara SPI -tihvtid ja programmeerimis- / PWM -väljundtaimeri tihvtid2

ADC0 kuni ADC5 on analoogsisendid

SDA SCL on riistvara I2C tihvtid

Tavaline kiip võib töötada vahemikus 4, 5 V kuni 5, 5 V, Atmega 8L võib töötada palju madalama pingega.

Näete, et isegi see kiip suudab teha rohkem, kui Arduino Uno näib olevat võimatu. Kuid Arduino saab seda ka teha, peate selle ainult programmeerima.

3. samm: esimene vooluring

Esimene ring
Esimene ring
Esimene ring
Esimene ring

Nüüd on aeg luua oma esimene ring.

Mis on tavaliselt esimene ahel? Õige! Vilgutame LED -i.

LED on ühendatud PB0 -ga. Kiibi kõrval oleval takistil on 10k oomi.

LED -i kõrval oleval takistil on 470 oomi.

Nüüd saate USBaspi Atmegaga ühendada, nagu pildil näidatud.

Kuid enne toite sisselülitamist kirjutage programm.

Samm: kirjutage esimene programm

Kirjutage esimene programm
Kirjutage esimene programm

Looge Bascomis uus fail ja tippige järgmine tekst.

$ regfile "m8def.dat"

$ crystal = 1000000 konfiguratsiooni portb.0 = väljund porti.0b = 1 oota 1 portb.0 = 0 oota 1 silmus

seejärel kompileerige see, vajutades klaviatuuril klahvi F7.

Nüüd saame kiibi programmeerida, vajutades klahvi F4. Ilmub programmeerija aken. Nüüd on aeg leivaplaadilt toide sisse lülitada. Peaksite rakendama midagi vahemikus 6 kuni 12 volti.

Nüüd minge kiibile -> autoprogramm. Kui programmeerija aken sulgub automaatselt, oli programmeerimine edukas.

LED peaks vilkuma ühe sekundi sagedusel.

Nüüd vaadake programmi lähemalt, et lahti saada süntaks.

$ regfile "m8def.dat"

$ kristall = 1000000

$ regfile abil ütleme kompilaatorile kasutatud kiibi tüübi, Arduino kiibi nimi oleks "m328pdef.dat"

$ kristalliga ütleme talle protsessori kiiruseks umbes 1MHz.

config portb.0 = Väljund

see tähendab, et PB0 peaks toimima väljundina.

Muide, lühend PB0 tähendab pordi B bitti 0. Kiip on jagatud mitmeks pordiks. Igale sadamale antakse selge identifitseerimiseks täht. ja iga porti natuke vahemikus 0 kuni 7. Näiteks võin kirjutada pordi väljundregistrisse täieliku baidi, mis väljastatakse üksikute pordi tihvtide kaudu.

teha

silmus

Seda tähendab Arduino keeles tühisilmuse avaldus. Kõik selle kahe käsu vahel kordub igavesti. (välja arvatud mõned erandid, kuid sellest hiljem)

Portb.0 = 1

oota 1 portb.0 = 0 oota 1

Siin idandame ledi vilkumist.

Portb.0 = 1 käsib kiibil lülitada väljund PB0 5V -le

käsk ootab 1 laseb kiibil ühe sekundi oodata. Kui soovite LED -i kiiremini vahetada, peate ootekäsu asendama ootustega, mille saate nüüd sisestada millisekundites, nt. ootab 500. (waitus tähendab ootamist nanosekundites)

Portb.0 = 0 käsib kiibil lülitada väljund PB0 0V -le.

Samm: lisage sisendite kasutamiseks nupp

Sisendite kasutamiseks lisage nupp
Sisendite kasutamiseks lisage nupp

Nüüd lisame nupule LED -i süttimiseks nupu vajutamisel.

Sisestage nupp, nagu pildil näidatud.

sisestage nüüd järgnev programm.

$ regfile "m8def.dat"

$ crystal = 1000000 konfiguratsiooni portb.0 = väljundkonfiguratsiooni port.7 = sisendport.7 = 1 tehke, kui pind.7 = 0, seejärel portb.0 = 1 muu portb.0 = 0 silmus

Kui laadite selle programmi kiibile, süttib LED ainult nupu vajutamisel. Aga miks?

programm käivitub samamoodi nagu eelmine

config portd.7 = sisend. See tähendab, et nupuga ühendatud tihvt PD7 toimib sisendina.

Portd.7 = 1 ei lülita tihvti kõrgele, kuid aktiveerib Atmega sisemise tõmbetakistuse.

Kui statemend näeb arduinoga harjunud välja, tundub see natuke kummaline.

kui kasutate lauset if, peate kasutama lauset "siis". Selles näidises kasutatakse lauset if üksikute käsutoimingute jaoks. Kui soovite kasutada rohkem käske, peate selle nii kirjutama.

kui pind.7 = 0 siis

portb.0 = 1 mõni kood mõni kood mõni kood teine portb.0 = 0 lõpp if

if -lause kasutamiseks peate selle lõpus kasutama lauset "end if".

mis on ikkagi oluline. Võib -olla olete seda juba näinud. sisendeid ei küsita portx.x, vaid pinx.x abil. Seda saate hõlpsalt meeles pidada. Väljunditel on sõnas "o" (port) ja sisenditel "i" (tihvt).

Nüüd on teie kord natuke ringi mängida.

Minu järgmine juhendatav on varsti saadaval (tavalised avaldused, nagu näiteks, valitud, suurtäht, ja muutujad.)

Kui teile meeldib minu juhendatav ja soovite rohkem, rääkige sellest kommentaarides.

Soovitan: