Sadržaj:

Za početak sa Bascom AVR -om: 5 koraka
Za početak sa Bascom AVR -om: 5 koraka

Video: Za početak sa Bascom AVR -om: 5 koraka

Video: Za početak sa Bascom AVR -om: 5 koraka
Video: mikroPIC uputstvo 2024, Juli
Anonim
Započnite s Bascom AVR -om
Započnite s Bascom AVR -om

Ovo je početak serije koja će vas naučiti programirati vaš AVR mikrokontroler s Bascom AVR -om.

Zašto ovo radim.

Većinu uzoraka programa u ovoj seriji možete napraviti s Arduinom.

Neke su lakše, a neke teže, ali na kraju će obje raditi na istom kontroleru.

Ali način programiranja je različit u svakom razvojnom okruženju. Arduinu je potrebna biblioteka za sve osim osnovnih funkcija. Bascom takođe radi sa bibliotekama, ali retko moram da ih uključim. S Arduinom se sve postavke specifične za hardver izvode putem biblioteka. imate vrlo mali utjecaj na stvarnu snagu mikrokontrolera. Počevši od mjerača vremena koje ima kontroler. s arduinom vam opet treba biblioteka. ako imate mjerač vremena dok ne radi, možda se neka druga biblioteka kosi s vašim postavkama. U bascom -u imate besplatan pristup kompletnom hardveru, uključujući i boot sektor koji zauzima arduino. na primjer, neke biblioteke na bascom -u pitaju vas koji tajmer želite koristiti. s druge strane, budući da arduino olakšava stvaranje biblioteke, to ga prirodno čini platformom na kojoj novi hardver i senzori obično imaju biblioteku izravno. ono što se često povezuje s mnogo istraživanja na bascomu i funkcije koje bi biblioteka obično preuzela moraju se tada mukotrpno uključiti u programski kod. ali dobra je vijest da je bascom zajednica također velika i zato postoji rješenje za svaku ideju.

Dakle, dijelom od projekta zavisi šta se koristi za razvojno okruženje, a dijelom od znanja programera.

ali zašto radim ovu seriju s jedne strane štedi mnogo novca. Ne moram kupovati arduino ploču za svaki projekt. Na primjer: A noname Arduino uno košta oko 12 €, kontroler koji je na njemu košta samo 2,5 €, a minimalna kola potrebna za stabilnu funkciju, košta oko 4 €. s druge strane, na raspolaganju imate kompletan izbor podržanih AVR čipova. atmegas 8 do 256 i attiny 8 do 2313 i mnogi xmega tipovi o kojima nemam iskustva. Ako samo želite koristiti servo i ultrazvučni senzor koji može prepoznati ruku, na primjer, a zatim otvoriti poklopac kante za smeće, možete upotrijebiti najmanji mogući čip. Dakle, postoji mnogo razloga za učenje drugog jezika.

Pa počnimo

Supplies

Ovo je popis minimalno potrebnih dijelova za stabilan rad čipa i programiranje.

Okvir za testiranje

Atmega 8-16PU (bolje kupite 2 ili 3 ako ste ih greškom ubili)

7805 Regulator napona 5V

10Kohm otpornik

100nF filmski kondenzator

10 μF elektrolitički kondenzator

100 μF elektrolitički kondenzator

neke žice za matičnu ploču

Windows PC 7/8/8.1/10

ISP programer (ovdje ću koristiti USBasp koji možete kupiti u amazonu za malo novca)

Bascom AVR (ovdje možete preuzeti DEMO. Sve funkcije su otključane, ali možete pisati kôd samo do 4Kb veličine koja je dovoljna za mnogo koda).

Opcioni delovi:

LED diode sa otpornicima

pritisni prekidači

dijelovi specifični za projekt

Korak 1: Instalacija Bascoma i postavljanje

Instalacija Bascoma i postavljanje
Instalacija Bascoma i postavljanje
Instalacija Bascoma i postavljanje
Instalacija Bascoma i postavljanje
Instalacija Bascoma i postavljanje
Instalacija Bascoma i postavljanje

Preuzmite datoteku i instalirajte Bascom AVR. Instalirajte sve njegove dijelove, uključujući i zadnji potvrdni okvir nakon instalacije.

Nakon toga ponovo pokrenite računar, u suprotnom bascom se neće pokrenuti.

Nakon ponovnog pokretanja pokrenite bascom.

Idite na Opcije -> Programer i odaberite USBasp s popisa, spremite postavke i zatvorite Bascom.

Koristite ovaj program za instaliranje usbasp -a. Nakon toga ponovo pokrenite računar. Sada povežite USBasp sa računarom i pokrenite upravitelj uređaja. USBasp bi se trebao pojaviti na libusb uređajima.

Stat Bascom ponovo i kreirajte novu datoteku. Sačuvajte ga na računaru i pritisnite taster F7 na tastaturi.

Prevodilac pokreće i kompajlira prazan program. Sada možete testirati funkcionalnost programera.

Pritisnite taster F4 na tastaturi da pokrenete prozor programatora. Sada idite na čip -> identifikujte da biste započeli interakciju. LED diode sa USBaspa sada bi trebale kratko treptati. Trebali biste dobiti poruku kao što je ID čipa FFFFFF ne može pročitati uređaj. To je dobar znak da programer radi, ali nije našao čip.

Sada možemo početi graditi prvi krug.

Korak 2: Pogledajmo pobliže čip

Pogledajmo bliže čip
Pogledajmo bliže čip

Ako pogledate isječak čipa, čini se da čip nema sličnosti sa arduino pločom. Naravno, koristimo Atmega8, a na Arduinu uno je Atmega328. Ali Pinout je gotovo isti, ali čip Arduino Uno ploče ima više funkcija. Ovdje se nalaze nazivi pinova. VCC i GND su pinovi za napajanje.

AREF i AVCC su pinovi za referentni napon i napajanje za analogno -digitalni pretvarač.

PB 0-7 PC 0-6 PD 0-7 su ulazni izlazi opće namjene sa višestrukim popunjenjem.

reset pin je ono što naziv kaže. Za ponovno pokretanje čipa. Red iznad imena resetiranja znači negaciju. To znači da za resetiranje čipa morate ga povući na 0V.

Za sljedeće pinove uskoro dolaze zasebne upute.

RXD TXD su hardverski pinovi za serijsku komunikaciju UART.

INT0 INT1 su hardverski prekidači

XCK /T0 UART izvor sata /mjerač vremena /brojač0 Izvor sata

XTAL /TOSC pinovi su za vanjski kristal do 16MHz (različiti modeli do 20MHz) /kristalni pinovi za unutrašnji RTC

T1 je sličan T0

AIN pinovi su za analogno poređenje

ICP1 je sličan T0/T1

OC1A je hardverski izlazni pin za pwm timer1 kanal A

SS / OC2 čip za odabir čipa za SPI / poput OC1B, ali kanala B

MOSI MISO SCK / OC2 su hardverski SPI pinovi i pinovi za programiranje / PWM izlazni tajmer2

ADC0 do ADC5 su analogni ulazi

SDA SCL su pinovi za hardverski I2C

Uobičajeni čip može raditi od 4, 5V do 5, 5V, Atmega 8L može raditi s mnogo nižim naponom.

Vidite da čak i ovaj čip može učiniti više nego što Arduino Uno izgleda ne može. Ali Arduino to može i učiniti, samo ga morate programirati.

Korak 3: Prvi krug

Prvi krug
Prvi krug
Prvi krug
Prvi krug

Sada je vrijeme da izgradite svoj prvi krug.

Šta je obično prvi krug? Tačno! Trepnimo LED.

LED je povezan sa PB0. Otpornici pored čipa imaju 10k Ohma.

Otpornik pored LED ima 470 Ohma.

Sada možete spojiti USBasp s Atmegom kao što je prikazano na slici.

Prije nego uključite napajanje, dopustite nam da napišemo program.

Korak 4: Napišite prvi program

Napišite prvi program
Napišite prvi program

Napravite novu datoteku na Bascomu i upišite sljedeći tekst.

$ regfile "m8def.dat"

$ crystal = 1000000 config portb.0 = izlaz do portb.0 = 1 čekanje 1 portb.0 = 0 čekanje 1 petlja

nakon toga ga kompajlirajte pritiskom na F7 na tastaturi.

Sada možemo programirati čip pritiskom na F4. Pojavljuje se prozor programatora. Sada je vrijeme da uključite napajanje s matične ploče. Trebali biste primijeniti nešto između 6 i 12 volti.

Sada idite na čip -> autoprogram. Ako se prozor programatora automatski zatvori, programiranje je bilo uspješno.

LED bi trebao treptati u jednoj sekundi.

Sada pogledajte program bliže kako biste razumjeli sintaksu.

$ regfile "m8def.dat"

$ kristal = 1000000

sa $ regfile kažemo kompajleru tip korišćenog čipa ime Arduino čipa bi bilo "m328pdef.dat"

sa $ crystal kažemo mu brzinu procesora oko 1MHz.

config portb.0 = Izlaz

to znači da bi PB0 trebao djelovati kao izlaz.

Usput, kratica PB0 znači port B bit 0. Čip je podijeljen na nekoliko portova. Svaki port dobija slovo radi jasne identifikacije. i svaki portpin malo od 0 do 7. Na primjer, mogu upisati cijeli bajt u izlazni registar porta, koji će se izlaziti putem pojedinačnih priključaka porta.

do

petlja

Ovo u Arduinu znači izjava void loop. Sve između te dvije naredbe ponavljat će se zauvijek. (uz neke izuzetke, ali kasnije više o tome)

Portb.0 = 1

čekanje 1 portb.0 = 0 čekanje 1

Ovdje započinjemo treptanje LED diode.

Portb.0 = 1 govori čipu da prebaci izlaz PB0 na 5V

naredba wait 1 neka čip sačeka jednu sekundu. Ako želite brže prebaciti LED diodu, naredbu wait morate zamijeniti waitms -om. Sada možete unijeti neko vrijeme u milisekundama, npr. waitms 500. (waitus znači čekanje u nanosekundama)

Portb.0 = 0 govori čipu da prebaci izlaz PB0 na 0V.

Korak 5: Dodajte dugme za upotrebu unosa

Dodajte dugme za upotrebu unosa
Dodajte dugme za upotrebu unosa

Sada dodajemo dugme za osvjetljavanje LED diode ako je dugme pritisnuto.

Umetnite dugme kao što je prikazano na slici.

sada upišite slijedeći program.

$ regfile "m8def.dat"

$ crystal = 1000000 config portb.0 = output config portd.7 = input Portd.7 = 1 do if pind.7 = 0 then portb.0 = 1 else portb.0 = 0 loop

Ako učitate taj program na čip, LED dioda zasvijetli samo kad pritisnete tipku. Ali zašto?

program počinje identično kao i prethodni do

config portd.7 = ulaz. To znači da pin PD7 koji je povezan s gumbom djeluje kao ulaz.

Portd.7 = 1 ne prebacuje pin na visoko, ali aktivira unutrašnji otpornik za podizanje Atmege.

Ako Statemend izgleda pomalo čudno ako ste navikli na arduino.

ako koristite if naredbu morate koristiti "then" naredbu. U ovom primjeru if naredba se koristi za operacije jedne naredbe. Ako želite koristiti više naredbi, morate to napisati ovako.

ako je pind.7 = 0 tada

portb.0 = 1 neki kôd neki kôd neki kôd drugi portb.0 = 0 kraj if

za ovu upotrebu if naredbe morate koristiti "end if" izraz na kraju.

šta je još važno. Možda ste to već vidjeli. ulazi se ne pitaju s portx.x, već s pinx.x. Lahko se toga sjećate. Izlazi imaju "o" (port) u riječi, a ulazi imaju "i" (pin).

Sada je vaš red da se malo poigrate.

Moja sljedeća instrukcija stiže uskoro (standardne izjave poput while, odabir velikog slova, za i varijable.)

Ako vam se sviđa moja instrukcija i želite više, recite mi u komentarima.

Preporučuje se: