Sadržaj:

Početak rada s Bascom AVR -om: 5 koraka
Početak rada s Bascom AVR -om: 5 koraka

Video: Početak rada s Bascom AVR -om: 5 koraka

Video: Početak rada s Bascom AVR -om: 5 koraka
Video: Votre Gestion de l'Univers - Livre Audio - Auteur: Firas Al Moneer - Traductrice: Siham Lafri. 2024, Studeni
Anonim
Početak rada s Bascom AVR -om
Početak rada 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.

Neki lakši, a neki teži, ali na kraju će oba raditi na istom kontroleru.

No, način programiranja različit je u svakom razvojnom okruženju. Arduinu je potrebna knjižnica za sve osim osnovnih funkcija. Bascom također radi s knjižnicama, ali rijetko moram uključiti jednu. S Arduinom se sve postavke specifične za hardver izvode putem knjižnica. imate vrlo mali utjecaj na stvarnu snagu mikrokontrolera. Počevši od mjerača vremena koje ima kontroler. s arduinom vam opet treba knjižnica. ako imate mjerač vremena dok ne radi, možda se neka druga knjižnica kosi s vašim postavkama. Na bascomu imate besplatan pristup kompletnom hardveru, uključujući i boot sektor koji zauzima arduino. na primjer, neke biblioteke na bascomu pitaju vas koji mjerač vremena ž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 izravno imaju knjižnicu. ono što se često povezuje s mnogo istraživanja na bascomu i funkcije koje bi knjižnica inače preuzela moraju se tada mukotrpno uključiti u programski kod. ali dobra je vijest da je bascom zajednica također vrlo velika i zato postoji rješenje za svaku ideju.

Stoga djelomično ovisi o projektu što se koristi za razvojno okruženje, a dijelom o znanju programera.

ali zašto radim ovu seriju. s jedne strane štedi mnogo novca. Ne moram kupiti 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 € s minimalnim krugom potrebnim za stabilnu funkciju, košta oko 4 €. s druge strane, na raspolaganju vam je potpuni izbor podržanih avr čipova. atmegas 8 do 256 i attiny 8 do 2313 i mnoge vrste xmega 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 krenimo

Pribor

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

Oglasna ploča za testiranje

Atmega 8-16PU (bolje je kupiti 2 ili 3 ako ih ubijete greškom)

7805 Regulator napona 5V

10Kohm otpornik

100nF filmski kondenzator

10 μF elektrolitički kondenzator

Elektrolitski kondenzator 100µF

neke žice za ploču

Windows PC 7/8/8.1/10

ISP programer (ovdje ću koristiti USBasp koji ga možete kupiti u amazonu za mali novac)

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

Opcijski dijelovi:

LED diode s otpornicima

potisni 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 ponovno pokrenite računalo, inače se bascom neće pokrenuti.

Nakon ponovnog pokretanja pokrenite bascom.

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

Pomoću ovog programa instalirajte usbasp. Nakon toga ponovno pokrenite računalo. Sada spojite USBasp s računalom i pokrenite upravitelj uređaja. USBasp bi se trebao pojaviti na libusb uređajima.

Ponovno stat Bascom i stvorite novu datoteku. Spremite ga na računalo i pritisnite tipku F7 na tipkovnici.

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

Pritisnite tipku F4 na tipkovnici da biste pokrenuli prozor programatora. Sada idite na čip -> identificirajte za početak interakcije. LED diode s 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 pobliže čip
Pogledajmo pobliže čip

Ako pogledate isječak čipa, čini se da čip nema sličnosti s arduino pločom. Naravno, koristimo Atmega8, a na Arduinu uno je Atmega328. No, ispis je gotovo isti, ali čip Arduino Uno ploče ima više funkcija. Ovdje su 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 za više osoba.

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

Za sljedeće pinove uskoro slijede 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 služe za vanjski kristal do 16 MHz (različiti modeli do 20 MHz) /kristalni pinovi za unutarnji RTC

T1 je sličan T0

AIN pinovi služe za analogni usporednik

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 mjerač2

ADC0 do ADC5 su analogni ulazi

SDA SCL su pinovi za hardverski I2C

Normalni č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 također može učiniti, samo ga morate programirati.

Korak 3: Prvi krug

Prvi krug
Prvi krug
Prvi krug
Prvi krug

Sada je vrijeme za izgradnju vašeg prvog kruga.

Što je obično prvi krug? Pravo! Trepnimo LED.

LED je povezan s 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 u 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 sastavite pritiskom na F7 na tipkovnici.

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 dioda bi trebala treptati u jednoj sekundi.

Sada pobliže pogledajte program kako biste razumjeli sintaksu.

$ regfile "m8def.dat"

kristal $ = 1000000

s $ regfile kažemo prevoditelju vrstu korištenog čipa, naziv Arduino čipa bi bio "m328pdef.dat"

s $ crystal govorimo 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. Svaka luka dobiva 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.

čini

petlja

To u Arduinu znači izjava void loop. Sve će se dvije naredbe ponavljati zauvijek. (uz neke iznimke, ali kasnije više o tome)

Portb.0 = 1

čekati 1 portb.0 = 0 čekati 1

Ovdje generiramo treptanje LED diode.

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

naredba wait 1 neka čip prič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 gumb za korištenje unosa

Dodajte gumb za upotrebu unosa
Dodajte gumb za upotrebu unosa

Sada dodajemo gumb za osvjetljavanje LED diode ako je gumb pritisnut.

Umetnite gumb 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 svijetli samo kad pritisnete gumb. Ali zašto?

program se pokreće identično kao i zadnji 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 unutarnji otpornik za povlačenje Atmege.

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

ako koristite izraz if morate koristiti izraz "then". U ovom uzorku 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 uporabu if izraza morate koristiti izraz "end if" na kraju.

ono što je još važno. Možda ste to već vidjeli. ulazi se ne pitaju s portx.x, već s pinx.x. To se lako možete sjetiti. 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 (standardni izrazi poput while, odabir velikog slova, za i varijable.)

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

Preporučeni: