Cuprins:
- Provizii
- Pasul 1: Instalarea Bascom și Setup
- Pasul 2: Să aruncăm o privire mai atentă asupra cipului
- Pasul 3: Primul circuit
- Pasul 4: Scrieți primul program
- Pasul 5: Adăugați un buton pentru a utiliza intrările
Video: Noțiuni de bază cu AVR Bascom: 5 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:41
Acesta este începutul unei serii care vă va învăța să vă programați microcontrolerul AVR cu Bascom AVR.
De ce fac asta.
Majoritatea eșantioanelor de programe din această serie le puteți face cu Arduino.
Unele mai ușoare și altele mai dificile, dar la final ambele vor rula pe același controler.
Dar modul de programare este diferit în fiecare mediu de dezvoltare. Arduino are nevoie de o bibliotecă pentru orice, cu excepția funcțiilor de bază. Bascom funcționează și cu biblioteci, dar rareori trebuie să includ una. Cu Arduino, toate setările specifice hardware-ului sunt realizate prin intermediul bibliotecilor. aveți foarte puțină influență asupra puterii reale a microcontrolerului. Începând cu temporizatoarele pe care le are controlerul. cu arduino ai nevoie din nou de o bibliotecă. dacă aveți temporizatorul până când acesta funcționează, este posibil ca o altă bibliotecă să se ciocnească cu setările dvs. La bascom aveți acces gratuit la hardware-ul complet, inclusiv la sectorul de boot care este ocupat de arduino. de exemplu, unele biblioteci de la bascom vă întreabă ce temporizator doriți să utilizați. pe de altă parte, deoarece arduino face foarte ușoară crearea dvs. de o bibliotecă, în mod firesc o platformă în care hardware-ul și senzorii noi au de obicei o bibliotecă direct. ceea ce este adesea asociat cu o mulțime de cercetări la bascom și funcțiile pe care o bibliotecă le-ar lua în mod normal trebuie apoi încorporate cu atenție în codul programului. dar vești bune, comunitatea bascom este, de asemenea, foarte mare, motiv pentru care există o soluție pentru fiecare idee.
Deci, depinde parțial de proiect ce este utilizat pentru un mediu de dezvoltare și parțial de know-how-ul persoanei care programează.
dar de ce fac această serie. pe de o parte, economisește mulți bani. Nu trebuie să cumpăr o placă arduino pentru fiecare proiect. De exemplu: Un noname Arduino uno costă aproximativ 12 € controlerul care este pe acesta costă doar 2,5 € cu circuitele minime necesare pentru o funcție stabilă, costă în jur de 4 €. pe de altă parte, aveți la dispoziție o selecție completă de jetoane avr care sunt acceptate. atmegas 8 la 256 și attiny 8 la 2313 și multe tipuri de xmega despre care nu am experiență. Dacă doriți doar să utilizați un servo și un senzor cu ultrasunete care poate recunoaște o mână, de exemplu, și apoi deschideți un capac al unui coș de gunoi, puteți utiliza cel mai mic cip posibil. Deci, există multe motive pentru a învăța a doua limbă.
Deci sa începem
Provizii
Aceasta este o listă cu piesele minime necesare pentru o funcționare stabilă a cipului și programare.
Panou pentru testare
Atmega 8-16PU (mai bine cumperi 2 sau 3 dacă îi ucizi din greșeală)
7805 Regulator de tensiune 5V
Rezistor de 10Kohm
Condensator de film 100nF
Condensator electrolitic 10µF
Condensator electrolitic 100µF
niște fire pentru panou
Windows PC 7/8 / 8.1 / 10
Programator ISP (voi folosi aici USBasp, îl puteți cumpăra de la Amazon pentru bani puțini)
Bascom AVR (puteți descărca aici un DEMO. Toate funcțiile sunt deblocate, dar puteți scrie cod numai până la dimensiunea 4Kb, care este suficient pentru multe coduri).
Piese opționale:
LED-uri cu rezistențe
comutatoare
părți specifice proiectului
Pasul 1: Instalarea Bascom și Setup
Descărcați fișierul și instalați Bascom AVR. Instalați toate părțile acestuia, inclusiv ultima casetă de selectare după instalare.
După aceea reporniți computerul, altfel bascom nu va porni.
După repornire porniți bascom.
Mergeți la Opțiuni -> Programator și alegeți USBasp din listă, salvați setările și închideți Bascom.
Utilizați acest program pentru a instala usbasp. După aceea, reporniți din nou computerul. Acum conectați USBasp la computer și porniți managerul de dispozitive. USBasp ar trebui să apară pe dispozitivele libusb.
Stat Bascom din nou și creați un fișier nou. Salvați-l pe computer și apăsați butonul F7 de pe tastatură.
Compilatorul pornește și compilează programul gol. Acum puteți testa funcționalitatea programatorului.
Apăsați butonul F4 de pe tastatură pentru a porni fereastra programatorului. Acum mergeți la cip -> identificați pentru a începe o interacțiune. LED-urile de pe USBasp ar trebui să clipească acum scurt. Ar trebui să primiți un mesaj de tipul cipului ID FFFFFF nu a putut citi dispozitivul. Este un semn bun că programatorul funcționează, dar nu a găsit nici un cip.
Acum putem începe să construim primul circuit.
Pasul 2: Să aruncăm o privire mai atentă asupra cipului
Dacă vă uitați la pinout-ul cipului, se pare că cipul nu are nicio asemănare cu placa arduino. Sigur, folosim un Atmega8, iar pe Arduino uno este un Atmega328. Dar Pinout este aproape același, dar cipul plăcii Arduino Uno are mai multe funcții. Aici numele pinilor. VCC și GND sunt pinii pentru alimentare.
AREF și AVCC sunt pini pentru tensiunea de referință și sursa de alimentare pentru convertorul analogic digital.
PB 0-7 PC 0-6 PD 0-7 sunt pini de ieșire de intrare de uz general cu ocupare multiplă.
pinul de resetare este ceea ce spune numele. Pentru a reporni cipul. Linia de deasupra numelui de resetare înseamnă negare. Asta înseamnă că pentru a reseta cipul trebuie să îl trageți în jos la 0V.
Pentru următorii pini instructabili separați în curând.
RXD TXD sunt pini hardware pentru comunicații seriale UART.
INT0 INT1 sunt pini de întrerupere hardware
XCK / T0 UART Sursă ceas / Timer / Contor0 Sursă ceas
Pinii XTAL / TOSC sunt pentru un cristal extern de până la 16MHz (diferite modele până la 20MHz) / Pinii de cristal pentru un RTC intern
T1 este similar cu T0
Pinii AIN sunt pentru comparatorul analogic
ICP1 este similar cu T0 / T1
OC1A este pinul de ieșire hardware pentru canalul A pwm timer1
Pinul de selectare a cipului SS / OC2 pentru SPI / ca OC1B, dar canalul B.
MOSI MISO SCK / OC2 sunt pinii SPI hardware și pinii pentru programare / timer de ieșire PWM2
ADC0 la ADC5 sunt intrările analogice
SDA SCL sunt pinii pentru hardware I2C
Cipul normal poate funcționa de la 4, 5V la 5, 5V, Atmega 8L poate funcționa cu o tensiune mult mai mică.
Vedeți chiar că acest cip poate face mai mult decât pare un Arduino Uno că nu poate face. Dar Arduino o poate face, de asemenea, trebuie doar să o programați.
Pasul 3: Primul circuit
Acum este timpul să construiești primul tău circuit.
Care este de obicei primul circuit? Dreapta! Să clipim un LED.
LED-ul este conectat cu PB0. Rezistorul de lângă cip are 10k Ohm.
Rezistorul de lângă LED are 470 Ohmi.
Acum puteți conecta USBasp la Atmega așa cum se arată în imagine.
Dar, înainte de a porni alimentarea, permiteți-ne să scriem programul.
Pasul 4: Scrieți primul program
Creați un fișier nou în Bascom și tastați următorul text.
$ regfile "m8def.dat"
$ cristal = 1000000 config portb.0 = ieșire face portb.0 = 1 așteptare 1 portb.0 = 0 așteptare 1 buclă
după aceea compilați-l apăsând F7 pe tastatură.
Acum putem programa cipul apăsând F4. Apare fereastra programatorului. Acum este timpul să porniți alimentarea de pe panou. Ar trebui să aplicați ceva între 6 și 12 volți.
Acum mergeți la cip -> autoprogram. Dacă fereastra programatorului se închide automat, programarea a avut succes.
LED-ul ar trebui să clipească într-o secundă de frecvență.
Acum aruncați o privire mai atentă asupra programului pentru a înțelege sintaxa.
$ regfile "m8def.dat"
$ cristal = 1000000
cu $ regfile îi spunem compilatorului tipul cipului folosit, numele cipului Arduino ar fi „m328pdef.dat”
cu $ crystal îi spunem viteza cpu aproximativ 1MHz.
config portb.0 = Ieșire
asta înseamnă că PB0 ar trebui să acționeze ca ieșire.
Apropo, abrevierea PB0 înseamnă portul B bit 0. Cipul este împărțit în mai multe porturi. Fiecare port primește o scrisoare pentru o identificare clară. și fiecare portpin un pic de la 0 la 7. De exemplu, pot scrie un octet complet în registrul de ieșire al portului, care va fi trimis prin pinii portului individuali.
do
buclă
Aceasta este ceea ce înseamnă în Arduino declarația buclei voide. Toate cele două comenzi se vor repeta pentru totdeauna. (cu câteva excepții, dar mai târziu mai multe despre asta)
Portb.0 = 1
așteptați 1 portb.0 = 0 așteptați 1
Aici gernerăm clipirea ledului.
Portb.0 = 1 spune cipului să comute ieșirea PB0 la 5V
comanda wait 1 lasă cipul să aștepte o secundă. Dacă doriți să comutați ledul mai repede, trebuie să înlocuiți comanda de așteptare cu waitms acum puteți introduce ceva timp acum în milisecunde, de ex. waitms 500. (waitus înseamnă așteptare în nanosecunde)
Portb.0 = 0 spune cipului să comute ieșirea PB0 la 0V.
Pasul 5: Adăugați un buton pentru a utiliza intrările
Acum adăugăm un buton pentru a aprinde ledul dacă butonul este apăsat.
Introduceți butonul așa cum se arată în imagine.
acum tastați următorul 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
Dacă încărcați acel program pe cip, ledul se aprinde numai atunci când butonul este apăsat. Dar de ce?
programul pornește identic cu ultimul până
config portd.7 = intrare. Asta înseamnă că pinul PD7 care s-a conectat cu butonul acționează ca o intrare.
Portd.7 = 1 nu comută pinul la mare, dar activează rezistența de tragere internă a Atmega.
Dacă statemend pare puțin mai ciudat dacă sunteți obișnuit cu arduino.
dacă folosiți declarația if trebuie să folosiți declarația „atunci”. În acest eșantion, instrucțiunea if este utilizată pentru operații de comandă unică. Dacă doriți să utilizați mai multe comenzi, trebuie să o scrieți astfel.
dacă pind.7 = 0 atunci
portb.0 = 1 unele cod unele cod alt cod altceva portb.0 = 0 sfârșesc dacă
pentru această utilizare a instrucțiunii if trebuie să utilizați instrucțiunea „end if” la sfârșit.
ceea ce este încă important. Poate că l-ai văzut deja. intrările nu sunt interogate cu portx.x, ci cu pinx.x. Vă puteți aminti cu ușurință acest lucru. Ieșirile au „o” (port) în cuvânt, iar intrările au „i” (pin).
Acum este rândul tău să joci puțin.
Următorul meu test instructiv va apărea în curând (declarații standard cum ar fi while, selectați caz, pentru și variabile.)
Dacă îți place instructabilul meu și vrei mai mult, spune-mi în comentarii.
Recomandat:
Tiny H-Bridge Drivers - Noțiuni de bază: 6 pași (cu imagini)
Tiny H-Bridge Drivers | Noțiuni de bază: Bună ziua și bine ați revenit la un alt instructabil! În cea anterioară, v-am arătat cum am creat bobine în KiCad folosind un script python. Apoi am creat și testat câteva variante de bobine pentru a vedea care funcționează cel mai bine. Scopul meu este să înlocuiesc imensul
Introducere Python - Katsuhiko Matsuda și Edwin Cijo - Noțiuni de bază: 7 pași
Introducere Python - Katsuhiko Matsuda și Edwin Cijo - Noțiuni de bază: Bună ziua, suntem 2 studenți în MYP 2. Vrem să vă învățăm elementele de bază despre cum să codificați Python.A fost creat la sfârșitul anilor 1980 de Guido van Rossum în Olanda. A fost realizat ca succesor al limbii ABC. Numele său este „Python” pentru că atunci când
Înapoi la Noțiuni de bază: lipire pentru copii: 6 pași (cu imagini)
Înapoi la elementele de bază: lipirea pentru copii: indiferent dacă construiți un robot sau lucrați cu Arduino, formați „mâinile” electronică la prototiparea unei idei de proiect, știind cum să lipiți va fi util. lipirea este o abilitate esențială care trebuie învățată dacă cineva este cu adevărat interesat de electr
Noțiuni de bază VBScript - Pornirea scripturilor, întârzierilor și mai mult !: 5 pași
Noțiuni de bază despre VBScript - Pornirea scripturilor, întârzierilor și multe altele! Cu fișierele.vbs, puteți crea niște farse amuzante sau viruși mortali. În acest tutorial, vă voi arăta comenzi de bază, cum ar fi pornirea scriptului, deschiderea fișierelor și multe altele. La t
Reckless Racer Arduino OLED Game, AdafruitGFX și Bitmaps Noțiuni de bază: 6 pași
Reckless Racer Arduino OLED Game, AdafruitGFX și Bitmaps Noțiuni de bază: În acest tutorial vom analiza modul de utilizare a bitmap-urilor folosind biblioteca Adafruit_GFX.c ca un fel de sprite într-un joc. Cel mai simplu joc la care ne-am putea gândi este un joc cu mașină care schimbă culoarea cu defilare laterală, în cele din urmă testerul nostru beta și asistentul coder de