INHOUDSOPGAWE:
- Voorrade
- Stap 1: Installering van Bascom en opstelling
- Stap 2: Kom ons kyk noukeuriger na die chip
- Stap 3: Die eerste stroombaan
- Stap 4: Skryf die eerste program
- Stap 5: Voeg 'n knoppie by om insette te gebruik
Video: Begin met Bascom AVR: 5 stappe
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:23
Dit is die begin van 'n reeks om u te leer om u AVR -mikrobeheerder met Bascom AVR te programmeer.
Hoekom doen ek dit.
Die meeste programmonsters in hierdie reeks kan u met Arduino maak.
Sommige makliker en ander moeiliker, maar aan die einde werk albei op dieselfde beheerder.
Maar die manier van programmering is anders in elke ontwikkelingsomgewing. Arduino benodig 'n biblioteek vir alles behalwe die basiese funksies. Bascom werk ook met biblioteke, maar ek hoef selde een op te neem. Met Arduino word alle hardeware-spesifieke instellings via die biblioteke gemaak. jy het baie min invloed op die werklike krag van die mikrobeheerder. Begin met die tydtellers wat die beheerder het. met arduino het u weer 'n biblioteek nodig. as u die timer het totdat dit werk, kan dit wees dat 'n ander biblioteek met u instellings bots. By bascom het u gratis toegang tot die volledige hardeware, insluitend die stewelsektor wat deur arduino beset word. Sommige biblioteke by bascom vra u byvoorbeeld watter timer u wil gebruik. aan die ander kant, aangesien arduino dit baie maklik maak om self 'n biblioteek te skep, maak dit dit natuurlik 'n platform waar nuwe hardeware en sensors gewoonlik direk 'n biblioteek het. wat dikwels verband hou met baie navorsing by bascom en die funksies wat 'n biblioteek normaalweg sou onderneem, moet noukeurig in die programkode opgeneem word. maar goeie nuus, die bascom -gemeenskap is ook baie groot, daarom is daar 'n oplossing vir elke idee.
Dit hang dus deels af van die projek wat vir 'n ontwikkelingsomgewing gebruik word, en deels van die kennis van die programmeerder.
maar hoekom doen ek hierdie reeks? aan die een kant spaar dit baie geld. Ek hoef nie 'n arduino -bord vir elke projek te koop nie. Byvoorbeeld: 'n noname Arduino uno kos ongeveer 12 €, die kontroleerder wat daarop is, kos slegs 2,5 € met die minimum stroombaan wat nodig is vir 'n stabiele funksie, dit kos ongeveer 4 €. aan die ander kant het u die volledige keuse van ondersteunde avr -skyfies. atmegas 8 tot 256 en attiny 8 tot 2313 en baie xmega -tipes waaroor ek geen ervaring het nie. As u net 'n servo en 'n ultrasoniese sensor wil gebruik wat byvoorbeeld 'n hand kan herken en dan 'n deksel van 'n asblik kan oopmaak, kan u die kleinste skyfie gebruik. Daar is dus baie redes om 'n tweede taal aan te leer.
So laat ons begin
Voorrade
Dit is 'n lys van die minimum vereiste onderdele vir die stabiele werking van die chip en programmering.
Broodbord om te toets
Atmega 8-16PU (beter as u 2 of 3 koop as u hulle per ongeluk doodmaak)
7805 5V spanningsreguleerder
10Kohm weerstand
100nF filmkapasitor
10µF elektrolitiese kondensator
100µF elektrolitiese kondensator
'n paar drade vir broodbord
Windows PC 7/8/8.1/10
ISP -programmeerder (ek sal die USBasp hier gebruik, u kan dit vir min geld by Amazon koop)
Bascom AVR (u kan hier 'n DEMO aflaai. Alle funksies is ontsluit, maar u kan slegs kode skryf tot 4Kb -grootte wat genoeg is vir baie kode).
Opsionele onderdele:
LED's met weerstande
druk skakelaars
projekspesifieke dele
Stap 1: Installering van Bascom en opstelling
Laai die lêer af en installeer Bascom AVR. Installeer alle dele daarvan, insluitend die laaste boks na die installering.
Herlaai u rekenaar daarna, anders begin die baskom nie.
Na die herlaai begin bascom.
Gaan na Opsies -> Programmeerder en kies USBasp uit die lys, stoor die instellings en sluit Bascom.
Gebruik hierdie program om usbasp te installeer. Herlaai u rekenaar daarna weer. Koppel nou die USB -asp met u rekenaar en begin die apparaatbestuurder. USBasp moet op die libusb -toestelle verskyn.
Stat Bascom weer en skep 'n nuwe lêer. Stoor dit op u rekenaar en druk op die F7 -knoppie op u sleutelbord.
Die samesteller begin en stel die leë program saam. Nou kan u die funksionaliteit van die programmeerder toets.
Druk die F4 -knoppie op u sleutelbord om die programmeerdervenster te begin. Gaan nou na chip -> identifiseer om 'n interaksie te begin. Die LED's van die USBasp moet nou kort knip. U moet 'n boodskap kry, soos chip ID FFFFFF kon nie die toestel lees nie. Dit is 'n goeie teken dat die programmeerder werk, maar hy het geen chip gevind nie.
Nou kan ons die eerste kring begin bou.
Stap 2: Kom ons kyk noukeuriger na die chip
As u na die pinout van die chip kyk, lyk dit asof die chip geen ooreenkoms het met die arduino -bord nie. Natuurlik gebruik ons 'n Atmega8 en op die Arduino uno is 'n Atmega328. Maar die Pinout is byna dieselfde, maar die chip van die Arduino Uno -bord het meer funksies. Hier is die name van die penne. VCC en GND is die penne vir kragtoevoer.
AREF en AVCC is penne vir die verwysingspanning en kragtoevoer vir die analoog na digitale omskakelaar.
PB 0-7 PC 0-6 PD 0-7 is insette-uitsetpenne vir algemene doeleindes met meer as een persoon.
reset pin is wat die naam sê. Om die chip weer te begin. Die reël bokant die reset naam beteken ontkenning. Dit beteken dat u die chip moet terugstel na 0V om die chip terug te stel.
Vir die volgende penne kom daar binnekort aparte instruksies.
RXD TXD is hardeware penne vir seriële kommunikasie UART.
INT0 INT1 is Hardware Interrupt -penne
XCK /T0 UART Klokbron /Timer /Teller0 Klokbron
XTAL /TOSC -penne is vir 'n eksterne kristal tot 16MHz (verskillende modelle tot 20MHz) /Crystal -penne vir 'n interne RTC
T1 is soortgelyk aan T0
AIN -penne is vir die analoog vergelyker
ICP1 is soortgelyk aan T0/T1
OC1A is die hardeware -uitvoerpen vir pwm timer1 kanaal A
SS / OC2 -chip -kiespen vir SPI / soos OC1B, maar kanaal B
MOSI MISO SCK / OC2 is die SPI -penne van die hardeware en die penne vir programmering / PWM -uitgangstimer2
ADC0 tot ADC5 is die analoog insette
SDA SCL is die penne vir hardeware I2C
Die normale chip kan werk van 4, 5V tot 5, 5V, die Atmega 8L kan met baie laer spanning werk.
U sien dat selfs hierdie chip meer kan doen as wat 'n Arduino Uno blykbaar nie kan doen nie. Maar die Arduino kan dit ook doen; u hoef dit net te programmeer.
Stap 3: Die eerste stroombaan
Dit is nou tyd om u eerste baan te bou.
Wat is tipies die eerste kring? Reg! Kom ons knip 'n LED.
Die LED is verbind met PB0. Die weerstand langs die skyfie het 10k ohm.
Die weerstand langs die LED het 470 Ohm.
Nou kan u die USB -aspek verbind met die Atmega soos op die foto getoon.
Maar laat ons die program skryf voordat u die krag aanskakel.
Stap 4: Skryf die eerste program
Skep 'n nuwe lêer in Bascom en tik die volgende teks in.
$ regfile "m8def.dat"
$ crystal = 1000000 config portb.0 = uitvoer doen portb.0 = 1 wag 1 portb.0 = 0 wag 1 lus
stel dit dan saam deur op F7 op u sleutelbord te druk.
Nou kan ons die chip programmeer deur op F4 te druk. Die programmeerder venster verskyn. Nou is dit tyd om die krag van die broodbord aan te skakel. U moet iets tussen 6 en 12 volt toepas.
Gaan nou na chip -> outoprogram. As die programmeerdervenster outomaties sluit, was die programmering suksesvol.
Die LED moet binne een sekonde frekwensie flikker.
Kyk nou na die program om die sintaksis te verstaan.
$ regfile "m8def.dat"
$ kristal = 1000000
met $ regfile vertel ons die samesteller die tipe gebruikte chip, die naam van die Arduino -chip sou "m328pdef.dat" wees
met $ crystal vertel ons hom die cpu -snelheid van ongeveer 1MHz.
config portb.0 = Uitset
dit beteken dat PB0 as uitset moet optree.
Terloops, die afkorting PB0 beteken poort B bit 0. Die chip is verdeel in verskeie poorte. Elke poort kry 'n brief vir duidelike identifikasie. en elke portpin 'n bietjie van 0 tot 7. Ek kan byvoorbeeld 'n volledige byte in die poortuitvoerregister skryf, wat via die individuele poortpenne uitgevoer sal word.
doen
lus
Dit is wat in Arduino die leemte -lusstelling beteken. Tussen hierdie twee bevele sal vir ewig herhaal word. (met enkele uitsonderings, maar later meer daaroor)
Portb.0 = 1
wag 1 portb.0 = 0 wag 1
Hier kry ons die knipper van die led.
Portb.0 = 1 vertel die chip om die uitset PB0 na 5V oor te skakel
die wag 1 -opdrag laat die chip 'n sekonde wag. As u die LED vinniger wil verander, moet u die wagopdrag met waitms vervang, nou kan u 'n geruime tyd in millisekondes ingaan, bv. waitms 500. (waitus beteken wag in nanosekondes)
Portb.0 = 0 vertel die chip om die uitset PB0 na 0V oor te skakel.
Stap 5: Voeg 'n knoppie by om insette te gebruik
Nou voeg ons 'n knoppie by om die LED te verlig as die knoppie ingedruk word.
Plaas die knoppie soos in die prentjie aangedui.
tik nou die volgprogram in.
$ regfile "m8def.dat"
$ crystal = 1000000 config portb.0 = output config portd.7 = input Portd.7 = 1 doen as pind.7 = 0 dan portb.0 = 1 anders portb.0 = 0 lus
As u die program na die chip laai, brand die LED slegs as u op die knoppie druk. Maar hoekom?
die program begin identies soos die vorige een
config portd.7 = invoer. Dit beteken dat die pen PD7 wat met die knoppie verbind is, as 'n invoer dien.
Portd.7 = 1 skakel die pen nie na hoog nie, maar dit aktiveer die interne optrekweerstand van die Atmega.
Die as statemend lyk 'n bietjie vreemd as jy gewoond is aan arduino.
as u die if -verklaring gebruik, moet u die "dan" -verklaring gebruik. In hierdie voorbeeld word die if -verklaring gebruik vir enkele opdragbewerkings. As u meer opdragte wil gebruik, moet u dit so skryf.
as pind.7 = 0 dan
portb.0 = 1 'n kode, 'n kode, 'n kode, 'n kode, 'n ander kode, portb.0 = 0 eindig as
Vir hierdie gebruik van die if -verklaring, moet u die "end if" -verklaring aan die einde gebruik.
wat nog steeds belangrik is. Miskien het jy dit al gesien. die insette word nie uitgevra met portx.x nie, maar met pinx.x. Dit kan u maklik onthou. Uitsette het die "o" (poort) in die woord en insette het die "i" (pen).
Nou is dit jou beurt om bietjie rond te speel.
My volgende instruksies kom binnekort (standaard stellings soos while, select case, for en variables.)
As u van my instruksies hou en meer wil hê, vertel dit dan in die kommentaar.
Aanbeveel:
Basiese beginsels van VBScript - begin met u skrifte, vertragings en meer !: 5 stappe
VBScript Basics - Begin met u skrifte, vertragings en meer !: Welkom by my eerste tutoriaal oor hoe om VBScripts met notepad te maak. Met.vbs -lêers kan u 'n paar snaakse grappe of dodelike virusse skep. In hierdie tutoriaal gaan ek u basiese opdragte wys, soos om u script te begin, lêers oop te maak en nog baie meer. By t
Begin met Python: 7 stappe (met foto's)
Kom aan die gang met Python: Programmering is wonderlik! Dit is kreatief, pret en dit gee jou brein 'n geestelike oefensessie. Baie van ons wil meer leer oor programmering, maar oortuig onsself dat ons dit nie kan nie. Miskien het dit te veel wiskunde, miskien skrik die jargon wat rondgegooi word
Begin u skyfievertoning met vakansiefoto's met 'n tikkie magie!: 9 stappe (met foto's)
Begin u vakansiefoto's skyfievertoning met 'n tikkie magie!: Deur die jare het ek 'n gewoonte ontwikkel om 'n klein beeldjie saam te neem tydens reis: ek koop gereeld 'n klein, leë artoy (soos die op die foto) en verf dit pas by die vlag en tema van die land wat ek besoek (in hierdie geval, Sicilië). T
Begin met die bou van 'n PM -moniteringstasie: 3 stappe (met foto's)
Begin met die bou van 'n PM -moniteringstasie: ek is veral geïnteresseerd in lugbesoedelingsvlakke, want ek woon in China en hoewel my stad, Shenzhen, waarskynlik een van die skoonste stede in China is, het dit nog steeds sy slegte dae. wou my eie bou om te vergelyk met die halfdosyn lug
Begin met programmering met 'n vloeidiagram: 7 stappe
Begin met programmeer met 'n vloeidiagram: begin u met PIC -mikrobeheerders vir u projekte? dit is baie handig, maar baie frustrerend as u program net nie werk nie. Dit is een manier om u idees uit te sorteer deur 'n vloeidiagram te teken. Dit is die manier waarop professionele programmeerders gereeld