Turinys:

Darbo su „Bascom AVR“pradžia: 5 žingsniai
Darbo su „Bascom AVR“pradžia: 5 žingsniai

Video: Darbo su „Bascom AVR“pradžia: 5 žingsniai

Video: Darbo su „Bascom AVR“pradžia: 5 žingsniai
Video: Dabro - Юность (Official video) 2024, Liepa
Anonim
Pradžia naudojant „Bascom AVR“
Pradžia naudojant „Bascom AVR“

Tai serijos pradžia, mokanti programuoti jūsų AVR mikrovaldiklį naudojant „Bascom AVR“.

Kodėl aš tai darau.

Daugumą šios serijos programų pavyzdžių galite padaryti naudodami „Arduino“.

Kai kurie yra lengvesni, o kiti sunkesni, tačiau galų gale abu veiks tuo pačiu valdikliu.

Tačiau programavimo būdas kiekvienoje kūrimo aplinkoje yra skirtingas. „Arduino“reikalinga biblioteka viskam, išskyrus pagrindines funkcijas. „Bascom“taip pat dirba su bibliotekomis, bet man retai tenka jas įtraukti. Naudojant „Arduino“, visi su aparatūra susiję nustatymai atliekami per bibliotekas. jūs turite labai mažai įtakos faktinei mikrovaldiklio galiai. Pradedant nuo laikmačių, kuriuos turi valdiklis. su arduino jums vėl reikia bibliotekos. jei turite laikmatį, kol jis veiks, gali būti, kad kita biblioteka susiduria su jūsų nustatymais. „Bascom“jūs turite nemokamą prieigą prie visos aparatūros, įskaitant įkrovos sektorių, kurį užima „arduino“. Pavyzdžiui, kai kurios „bascom“bibliotekos klausia, kokį laikmatį norite naudoti. kita vertus, kadangi naudojant „arduino“labai lengva patiems sukurti biblioteką, tai natūraliai tampa platforma, kurioje nauja įranga ir jutikliai paprastai turi biblioteką. tai, kas dažnai siejama su daugybe „bascom“tyrimų ir funkcijų, kurias biblioteka paprastai imtųsi, turi būti kruopščiai įtraukta į programos kodą. bet gera žinia, kad „Bascom“bendruomenė taip pat yra labai didelė, todėl kiekvienai idėjai yra sprendimas.

Taigi tai iš dalies priklauso nuo projekto, kuris naudojamas kūrimo aplinkai, ir iš dalies nuo programuojančio asmens žinių.

bet kodėl aš darau šią seriją. viena vertus, tai sutaupo daug pinigų. Aš neturiu pirkti arduino plokštės kiekvienam projektui. Pavyzdžiui: „Noname Arduino uno“kainuoja apie 12 €, o ant jo esantis valdiklis kainuoja tik 2,5 €, o minimali grandinė, reikalinga stabiliai funkcijai, kainuoja apie 4 €. kita vertus, turite visą palaikomų avr lustų pasirinkimą. atmegas nuo 8 iki 256 ir attiny nuo 8 iki 2313 ir daug xmega tipų, apie kuriuos neturiu patirties. Jei norite naudoti tik servo ir ultragarso jutiklį, galintį atpažinti, pavyzdžiui, ranką, ir tada atidaryti šiukšliadėžės dangtį, galite naudoti mažiausią įmanomą mikroschemą. Taigi yra daug priežasčių mokytis antrosios kalbos.

Taigi pradėkime

Prekės

Tai yra būtinų dalių, būtinų stabiliam lusto veikimui ir programavimui, sąrašas.

Duonos lenta bandymui

„Atmega 8-16PU“(geriau nusipirkite 2 ar 3, jei nužudysite juos per klaidą)

7805 5V įtampos reguliatorius

10Kohm rezistorius

100nF plėvelės kondensatorius

10µF elektrolitinis kondensatorius

100µF elektrolitinis kondensatorius

kai kurie laidai duonai

„Windows PC“7/8/8.1/10

ISP programuotojas (čia naudosiu USB, kurį galite nusipirkti „Amazon“už nedidelius pinigus)

„Bascom AVR“(čia galite atsisiųsti DEMO. Visos funkcijos yra atrakintos, tačiau kodą galite rašyti tik iki 4Kb dydžio, kurio pakanka daugeliui kodų).

Papildomos dalys:

Šviesos diodai su rezistoriais

stumti jungiklius

konkrečių projektų dalys

1 žingsnis: „Bascom“diegimas ir sąranka

„Bascom“diegimas ir sąranka
„Bascom“diegimas ir sąranka
„Bascom“diegimas ir sąranka
„Bascom“diegimas ir sąranka
„Bascom“diegimas ir sąranka
„Bascom“diegimas ir sąranka

Atsisiųskite failą ir įdiekite „Bascom AVR“. Įdiekite visas jo dalis, įskaitant paskutinį žymės langelį po įdiegimo.

Po to iš naujo paleiskite kompiuterį, kitaip „bascom“nebus paleistas.

Po perkrovimo paleiskite „bascom“.

Eikite į Parinktys -> Programuotojas ir iš sąrašo pasirinkite USBasp, išsaugokite nustatymus ir uždarykite „Bascom“.

Norėdami įdiegti usbasp, naudokite šią programą. Po to dar kartą paleiskite kompiuterį iš naujo. Dabar prijunkite USBasp prie kompiuterio ir paleiskite įrenginių tvarkytuvę. „USBasp“turėtų būti rodomas „libusb“įrenginiuose.

Stat Bascom dar kartą ir sukurkite naują failą. Išsaugokite jį savo kompiuteryje ir paspauskite klaviatūros mygtuką F7.

Kompiliatorius paleidžia ir surenka tuščią programą. Dabar galite patikrinti programuotojo funkcionalumą.

Paspauskite F4 klaviatūros mygtuką, kad paleistumėte programuotojo langą. Dabar eikite į lustą -> identifikuoti, kad pradėtumėte sąveiką. „USBasp“šviesos diodas dabar turėtų trumpai mirksėti. Turėtumėte gauti tokį pranešimą kaip lusto ID FFFFFF nepavyko nuskaityti įrenginio. Tai geras ženklas, kad programuotojas dirba, bet nerado lusto.

Dabar galime pradėti kurti pirmąją grandinę.

2 žingsnis: pažvelkime atidžiau į lustą

Pažvelkime atidžiau į lustą
Pažvelkime atidžiau į lustą

Jei pažvelgsite į lusto lizdą, atrodo, kad lustas nėra panašus į arduino plokštę. Žinoma, mes naudojame „Atmega8“, o „Arduino uno“yra „Atmega328“. Tačiau „Pinout“yra beveik tas pats, tačiau „Arduino Uno“plokštės lustas turi daugiau funkcijų. Čia yra kaiščių pavadinimai. VCC ir GND yra maitinimo kaiščiai.

AREF ir AVCC yra kaiščiai, skirti etaloninei įtampai ir maitinimo šaltiniui analoginiam -skaitmeniniam keitikliui.

PB 0-7 PC 0-6 PD 0-7 yra bendrosios paskirties įvesties kaiščiai, kuriuose yra daug žmonių.

pavadinimas nurodo atstatymo kaištį. Norėdami iš naujo paleisti lustą. Eilutė virš atstatymo pavadinimo reiškia neigimą. Tai reiškia, kad norėdami iš naujo nustatyti lustą, turite jį sumažinti iki 0 V.

Šiems kaiščiams netrukus pasirodys atskiros instrukcijos.

RXD TXD yra UART serijinio ryšio aparatūros kaiščiai.

INT0 INT1 yra aparatūros pertraukimo kaiščiai

XCK /T0 UART Laikrodžio šaltinis /Laikmatis /Skaitiklis0 Laikrodžio šaltinis

XTAL /TOSC kaiščiai skirti išoriniam kristalui iki 16MHz (skirtingi modeliai iki 20MHz) /kristaliniai kaiščiai vidiniam RTC

T1 yra panašus į T0

AIN kaiščiai skirti analoginiam lygintuvui

ICP1 yra panašus į T0/T1

OC1A yra pwm timer1 kanalo A aparatinės įrangos išvesties kaištis

SS / OC2 lusto pasirinkimo kaištis SPI / panašiam OC1B, bet kanalui B

„MOSI MISO SCK / OC2“yra aparatinės įrangos SPI kaiščiai ir programavimo / PWM išvesties laikmačio2 kaiščiai

ADC0 į ADC5 yra analoginės įvestys

SDA SCL yra aparatūros I2C kaiščiai

Įprastas lustas gali veikti nuo 4, 5 V iki 5, 5 V, o „Atmega 8L“gali veikti daug mažesne įtampa.

Matote, kad net šis lustas gali padaryti daugiau, nei atrodo, kad „Arduino Uno“negali. Tačiau „Arduino“taip pat gali tai padaryti, jums tereikia jį užprogramuoti.

3 žingsnis: pirmoji grandinė

Pirmoji grandinė
Pirmoji grandinė
Pirmoji grandinė
Pirmoji grandinė

Dabar atėjo laikas sukurti savo pirmąją grandinę.

Kas paprastai yra pirmoji grandinė? Teisingai! Mirksėkime LED.

Šviesos diodas prijungtas prie PB0. Rezistorius šalia lusto turi 10 k omų.

Rezistorius šalia šviesos diodo turi 470 omų.

Dabar galite prijungti „USBasp“prie „Atmega“, kaip parodyta paveikslėlyje.

Bet prieš įjungdami maitinimą, parašykime programą.

4 žingsnis: parašykite pirmąją programą

Parašykite pirmąją programą
Parašykite pirmąją programą

Sukurkite naują failą „Bascom“ir įveskite sekantį tekstą.

$ regfile "m8def.dat"

$ crystal = 1000000 konfigūracijos prievadasb.0 = išvestis prie portb.0 = 1 laukimas 1 prievadas b.0 = 0 laukimas 1 kilpa

po to sukompiliuokite jį paspausdami klaviatūros klavišą F7.

Dabar mes galime užprogramuoti lustą paspausdami F4. Pasirodo programuotojo langas. Dabar atėjo laikas įjungti maitinimą iš duonos lentos. Turėtumėte naudoti kažką nuo 6 iki 12 voltų.

Dabar eikite į lustą -> autoprogramą. Jei programuotojo langas užsidaro automatiškai, programavimas buvo sėkmingas.

Šviesos diodas turėtų mirksėti vieną sekundę.

Dabar atidžiau pažvelkite į programą, kad suprastumėte sintaksę.

$ regfile "m8def.dat"

$ kristalas = 1000000

Naudodami $ regfile, kompiliatoriui nurodome naudojamo lusto tipą, „Arduino“lusto pavadinimas būtų „m328pdef.dat“

su $ crystal mes jam pasakome procesoriaus greitį apie 1MHz.

config portb.0 = Išvestis

tai reiškia, kad PB0 turėtų veikti kaip išvestis.

Beje, santrumpa PB0 reiškia prievadą B bitą 0. Lustas yra padalintas į kelis prievadus. Kiekvienam uostui suteikiama raidė, skirta aiškiai identifikuoti. ir kiekvienas prievadas šiek tiek nuo 0 iki 7. Pavyzdžiui, į uosto išvesties registrą galiu įrašyti visą baitą, kuris bus išvestas per atskirus prievado kaiščius.

daryti

kilpa

Štai ką „Arduino“reiškia tuštumos ciklo teiginys. Viskas tarp šių dviejų komandų kartosis amžinai. (su keliomis išimtimis, bet vėliau apie tai daugiau)

Portb.0 = 1

palaukite 1 prievadą b.0 = 0 palaukite 1

Čia mes dygstame mirksi LED.

Portb.0 = 1 nurodo lustui perjungti išvestį PB0 į 5 V.

komandą palaukti 1 leiskite lustui palaukti vieną sekundę. Jei norite greičiau perjungti šviesos diodą, laukimo komandą turite pakeisti laukimo režimu, dabar galite įvesti tam tikrą laiką milisekundėmis, pvz. waits 500. (waitus reiškia laukti nanosekundėmis)

Portb.0 = 0 nurodo lustui perjungti išvestį PB0 į 0V.

5 veiksmas: pridėkite mygtuką įvestims naudoti

Pridėkite mygtuką įvestims naudoti
Pridėkite mygtuką įvestims naudoti

Dabar mes pridedame mygtuką, kad įsižiebtų LED, jei mygtuką paspausite.

Įdėkite mygtuką, kaip parodyta paveikslėlyje.

dabar įveskite sekančią programą.

$ regfile "m8def.dat"

$ crystal = 1000000 konfigūracijos prievadasb.0 = išvesties konfigūracijos prievadas.7 = įvesties prievadas.7 = 1 darykite, jei pind.7 = 0, tada portb.0 = 1 kitas portb.0 = 0 kilpa

Jei įkeliate tą programą į lustą, šviesos diodas užsidega tik paspaudus mygtuką. Bet kodėl?

programa prasideda taip pat, kaip ir paskutinė

config portd.7 = įvestis. Tai reiškia, kad kaištis PD7, prijungtas prie mygtuko, veikia kaip įvestis.

Portd.7 = 1 nekeičia kaiščio į aukštą, tačiau suaktyvina vidinį „Atmega“traukimo varžą.

„If statemend“atrodo šiek tiek keistai, jei esate įpratę prie arduino.

jei naudojate teiginį if, turite naudoti teiginį „tada“. Šiame pavyzdyje sakinys if naudojamas atskiroms komandoms. Jei norite naudoti daugiau komandų, turite tai parašyti taip.

jei pind.7 = 0 tada

portb.0 = 1 kai kurie kodai kai kurie kodai kiti kodai kiti portb.0 = 0 galas, jei

Norėdami naudoti šį teiginį if, turite naudoti sakinį „end if“pabaigoje.

kas dar svarbu. Galbūt jau matėte. įvesties klausiama ne naudojant portx.x, bet naudojant pinx.x. Tai galite lengvai prisiminti. Išvestys turi „o“(prievadą) žodyje, o įvestys turi „i“(kaištį).

Dabar jūsų eilė šiek tiek pažaisti.

Netrukus pasirodys mano kitas pamokomas dalykas (standartiniai teiginiai, pvz., Kai, pasirinkta didžioji, mažoji ir kintamieji.)

Jei jums patinka mano pamokymai ir norite daugiau, pasakykite man komentaruose.

Rekomenduojamas: