Taula de continguts:
- Subministraments
- Pas 1: Instal·lació de Bascom i configuració
- Pas 2: fem una ullada més detallada al xip
- Pas 3: el primer circuit
- Pas 4: escriviu el primer programa
- Pas 5: afegiu un botó per utilitzar les entrades
Vídeo: Introducció a Bascom AVR: 5 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:10
Aquest és el començament d’una sèrie per ensenyar-vos a programar el vostre microcontrolador AVR amb Bascom AVR.
Per què faig això?
La majoria de les mostres de programes d'aquesta sèrie es poden fer amb Arduino.
Alguns més fàcils i d'altres més difícils, però al final tots dos funcionaran amb el mateix controlador.
Però la forma de programar és diferent en tots els entorns de desenvolupament. Arduino necessita una biblioteca per a tot, excepte les funcions bàsiques. Bascom també funciona amb biblioteques, però poques vegades n’he d’incloure cap. Amb Arduino, totes les configuracions específiques del maquinari es fan a través de les biblioteques. teniu molt poca influència sobre la potència real del microcontrolador. Començant pels temporitzadors que té el controlador. amb arduino necessiteu una biblioteca de nou. si teniu el temporitzador fins que funcioni, pot ser que una altra biblioteca xoqui amb la vostra configuració. A bascom teniu accés gratuït al maquinari complet, inclòs el sector d’arrencada que ocupa arduino. per exemple, algunes biblioteques de bascom us pregunten quin temporitzador voleu utilitzar. d'altra banda, atès que arduino facilita la creació d'una biblioteca per vosaltres mateixos, naturalment la converteix en una plataforma on el maquinari i els sensors nous solen tenir una biblioteca directament. el que sovint s’associa amb moltes investigacions a bascom i les funcions que normalment assumiria una biblioteca s’ha d’incorporar minuciosament al codi del programa. però una bona notícia és que la comunitat bascom també és molt gran, per això hi ha una solució per a totes les idees.
Per tant, depèn en part del projecte del que s’utilitzi per a un entorn de desenvolupament i en part del coneixement de la persona que programa.
però per què faig aquesta sèrie? per una banda, estalvia molts diners. No he de comprar una placa arduino per a cada projecte. Per exemple: Un Arameu no oneame costa uns 12 € el controlador que hi ha costa només 2,5 € amb el circuit mínim necessari per a una funció estable, costa al voltant de 4 €. d'altra banda, teniu disponible la selecció completa de xips AVR compatibles. atmegas 8 a 256 i attiny 8 a 2313 i molts tipus xmega sobre els quals no tinc experiència. Si només voleu utilitzar un servo i un sensor d’ultrasons que pugui reconèixer una mà, per exemple, i després obrir una tapa d’una paperera, podeu utilitzar el xip més petit possible. Per tant, hi ha moltes raons per aprendre un segon idioma.
Comencem doncs
Subministraments
Aquesta és una llista de les parts mínimes necessàries per a un funcionament estable del xip i la programació.
Taula de pa per provar
Atmega 8-16PU (millor que en compris 2 o 3 si els mates per error)
Regulador de voltatge 7805 5V
Resistència de 10 Kohm
Condensador de pel·lícula 100nF
Condensador electrolític de 10µF
Condensador electrolític 100µF
alguns cables per a la taula de pa
PC amb Windows 7/8 / 8.1 / 10
Programador ISP (faré servir el USBasp aquí, el podeu comprar a Amazon per pocs diners)
Bascom AVR (podeu descarregar aquí una DEMO. Totes les funcions estan desbloquejades, però només podeu escriure codi fins a una mida 4Kb suficient per a molts codis).
Parts opcionals:
LEDs amb resistències
polsadors
parts específiques del projecte
Pas 1: Instal·lació de Bascom i configuració
Descarregueu el fitxer i instal·leu Bascom AVR. Instal·leu-ne totes les parts, inclosa la darrera casella de selecció després de la instal·lació.
Després d'això, reinicieu el vostre PC, en cas contrari, bascom no s'iniciarà.
Després del reinici, inicieu bascom.
Aneu a Opcions -> Programador i trieu USBasp de la llista, deseu la configuració i tanqueu Bascom.
Utilitzeu aquest programa per instal·lar usbasp. Després, reinicieu el PC de nou. Ara connecteu l'USBasp amb el vostre PC i inicieu el gestor de dispositius. USBasp hauria d'aparèixer als dispositius libusb.
Stat Bascom de nou i creeu un fitxer nou. Deseu-lo al vostre ordinador i premeu el botó F7 del teclat.
El compilador inicia i compila el programa buit. Ara podeu provar la funcionalitat del programador.
Premeu el botó F4 del teclat per iniciar la finestra del programador. Ara aneu a xip -> identifiqueu-vos per iniciar una interacció. Els LEDs de l'USBasp ara haurien de parpellejar breument. Hauríeu de rebre un missatge com l'identificador de xip FFFFFF que no podia llegir el dispositiu. És un bon senyal que el programador funciona però no ha trobat cap xip.
Ara podem començar a construir el primer circuit.
Pas 2: fem una ullada més detallada al xip
Si mireu el pinout del xip, sembla que el xip no té cap semblança amb la placa arduino. Per descomptat, fem servir un Atmega8 i a l’Arduino uno hi ha un Atmega328. Però el Pinout és gairebé el mateix, però el xip de la placa Arduino Uno té més funcions. Aquí els noms dels pins. VCC i GND són els pins per a la font d'alimentació.
AREF i AVCC són pins per a la tensió de referència i la font d'alimentació del convertidor analògic a digital.
PB 0-7 PC 0-6 PD 0-7 són pins d'entrada d'ús general amb ocupació múltiple.
el pin de restabliment és el que diu el nom. Per reiniciar el xip. La línia que hi ha a sobre del nom del restabliment significa negació. Això vol dir que per restablir el xip l’heu de baixar a 0V.
Per als següents pins, els instructius separats properament.
RXD TXD són pins de maquinari per a la comunicació en sèrie UART.
INT0 INT1 són pins d'interrupció de maquinari
XCK / T0 UART Font del rellotge / Temporitzador / Contador0 Font del rellotge
Els pins XTAL / TOSC són per a un vidre extern de fins a 16 MHz (diferents models fins a 20 MHz) / Pins de cristall per a un RTC intern
T1 és similar a T0
Els pins AIN són per al comparador analògic
ICP1 és similar a T0 / T1
OC1A és el pin de sortida de maquinari per al canal A del temporitzador pwm1
Pin de selecció de xip SS / OC2 per SPI / com OC1B però canal B.
MOSI MISO SCK / OC2 són els pins SPI de maquinari i els pins per a la programació / temporitzador de sortida PWM2
ADC0 a ADC5 són les entrades analògiques
SDA SCL són els pins per al maquinari I2C
El xip normal pot funcionar de 4, 5V a 5, 5V, l'Atmega 8L pot funcionar amb un voltatge molt inferior.
Veureu que fins i tot aquest xip pot fer més del que sembla que Arduino Uno no pot fer. Però l’Arduino també ho pot fer, només heu de programar-lo.
Pas 3: el primer circuit
Ara és hora de construir el vostre primer circuit.
Quin és normalment el primer circuit? Dret! Parpelleguem un LED.
El LED està connectat amb PB0. La resistència al costat del xip té 10k Ohms.
La resistència al costat del LED té 470 Ohms.
Ara podeu connectar l'USBasp amb l'Atmega tal com es mostra a la imatge.
Però abans d’engegar-lo, deixeu-nos escriure el programa.
Pas 4: escriviu el primer programa
Creeu un fitxer nou a Bascom i escriviu el text següent.
$ regfile "m8def.dat"
$ crystal = 1000000 config portb.0 = sortida portb.0 = 1 espera 1 portb.0 = 0 espera 1 bucle
després, compileu-lo prement F7 al teclat.
Ara podem programar el xip prement F4. Apareix la finestra del programador. Ara és hora d’engegar l’alimentació de la placa. Hauríeu d'aplicar entre 6 i 12 volts.
Ara aneu a xip -> autoprograma. Si la finestra del programador es tanca automàticament, la programació ha estat correcta.
El LED hauria de parpellejar en una freqüència d’un segon.
Ara mireu de prop el programa per entendre la sintaxi.
$ regfile "m8def.dat"
$ cristall = 1000000
amb $ regfile li diem al compilador el tipus de xip utilitzat, el nom del xip Arduino seria "m328pdef.dat"
amb $ crystal li expliquem la velocitat de la CPU sobre 1 MHz.
config portb.0 = Sortida
això vol dir que PB0 hauria d'actuar com a sortida.
Per cert, l’abreviatura PB0 significa el port B bit 0. El xip es divideix en diversos ports. A cada port se li dóna una carta per a una identificació clara. i cada portpin una mica de 0 a 7. Per exemple, puc escriure un byte complet al registre de sortida del port, que es transmetrà mitjançant els pins de port individuals.
fer
bucle
Això és el que significa a Arduino la declaració de bucle buit. Tot entre aquestes dues ordres es repetirà per sempre. (amb algunes excepcions, però més endavant sobre això)
Portb.0 = 1
espera 1 portb.0 = 0 espera 1
Aquí gernerem el parpelleig del led.
Portb.0 = 1 indica al xip que commuti la sortida PB0 a 5V
l'ordre wait 1 permet que el xip esperi un segon. Si voleu canviar el led més ràpidament, heu de substituir l’ordre wait per waitms ara podeu introduir un temps en mil·lisegons, per exemple. waitms 500. (waitus significa esperar en nanosegons)
Portb.0 = 0 indica al xip que canviï la sortida PB0 a 0V.
Pas 5: afegiu un botó per utilitzar les entrades
Ara afegim un botó per il·luminar el led si es prem el botó.
Inseriu el botó tal com es mostra a la imatge.
ara escriviu el programa següent.
$ regfile "m8def.dat"
$ crystal = 1000000 config portb.0 = sortida config portd.7 = entrada Portd.7 = 1 fer si pind.7 = 0 llavors portb.0 = 1 altre portb.0 = 0 bucle
Si pengeu aquest programa al xip, el led només s’encén quan es prem el botó. Però perquè?
el programa s'inicia de la mateixa manera que l'últim fins
config portd.7 = entrada. Això vol dir que el pin PD7 que es va connectar amb el botó actua com a entrada.
Portd.7 = 1 no canvia el pin a alt, però activa la resistència interna de tracció cap amunt de l'Atmega.
El statemend if es veu una mica més estrany si estàs acostumat a arduino.
si utilitzeu la sentència if heu d'utilitzar la sentència "llavors". En aquest exemple, la sentència if s'utilitza per a operacions de comandament únic. Si voleu utilitzar més ordres, heu d'escriure-la així.
si pind.7 = 0 llavors
portb.0 = 1 algun codi algun codi algun codi altre portb.0 = 0 final si
per a aquest ús de la sentència if, heu d'utilitzar la sentència "end if" al final.
el que encara és important. Potser ja ho heu vist. les entrades no es consulten amb portx.x, sinó amb pinx.x. Ho podeu recordar fàcilment. Les sortides tenen la "o" (port) a la paraula i les entrades tenen la "i" (pin).
Ara és el vostre torn de jugar una mica.
La meva pròxima instrucció es publicarà aviat (enunciats estàndard com mentre que, seleccioneu majúscules, minúscules i variables).
Si us agrada la meva instrucció i voleu més, digueu-me als comentaris.
Recomanat:
Casc de seguretat Covid Part 1: Introducció als circuits de Tinkercad !: 20 passos (amb imatges)
Casc de seguretat Covid Part 1: Introducció als circuits de Tinkercad!: Hola, amic! Una de les millors maneres d’aprendre és fer. Per tant, primer dissenyarem el nostre propi projecte: th
Introducció als sensors de vibració i temperatura sense fils de llarg abast: 7 passos
Introducció als sensors de vibració i temperatura sense fils de llarg abast: de vegades la vibració és la causa de problemes greus en moltes aplicacions. Des dels eixos i els coixinets de la màquina fins al rendiment del disc dur, la vibració provoca danys a la màquina, una substitució primerenca, un rendiment baix i provoca un gran èxit en la precisió. Seguiment
Introducció als circuits IR: 8 passos (amb imatges)
Introducció als circuits IR: l’IR és una tecnologia complexa però molt senzilla de treballar. A diferència dels LED o LASER, l’infraroig no es pot veure amb l’ull humà. En aquest instructiu, demostraré l’ús d’infrarojos a través de 3 circuits diferents. Els circuits no seran
Jocs!!! - Introducció: 5 passos
Jocs!!! - Introducció: Hola! T'ensenyaré a crear tres jocs diferents a code.org. Sota cada tutorial de jocs, publicaré una plantilla que podeu remesclar i utilitzar mentre mireu el meu vídeo. Espero que us ho passeu molt bé !! Si voleu veure els meus jocs en o
Introducció a ADC al microcontrolador AVR - per a principiants: 14 passos
Introducció a ADC al microcontrolador AVR | per a principiants: en aquest tutorial sabreu tot el ADC del microcontrolador avr