Indholdsfortegnelse:

Kom godt i gang med Bascom AVR: 5 trin
Kom godt i gang med Bascom AVR: 5 trin

Video: Kom godt i gang med Bascom AVR: 5 trin

Video: Kom godt i gang med Bascom AVR: 5 trin
Video: Одна в городе_Рассказ_Слушать 2024, Juli
Anonim
Kom godt i gang med Bascom AVR
Kom godt i gang med Bascom AVR

Dette er begyndelsen på en serie for at lære dig at programmere din AVR -mikrokontroller med Bascom AVR.

Hvorfor gør jeg dette.

De fleste programprøver i denne serie kan du lave med Arduino.

Nogle lettere og nogle vanskeligere, men i slutningen kører begge på den samme controller.

Men måden at programmere på er anderledes i alle udviklingsmiljøer. Arduino har brug for et bibliotek til alt undtagen de grundlæggende funktioner. Bascom arbejder også med biblioteker, men jeg skal sjældent inkludere et. Med Arduino foretages alle hardwarespecifikke indstillinger via bibliotekerne. du har meget lille indflydelse på mikrokontrollerens faktiske effekt. Startende med de timere, som controlleren har. med arduino har du brug for et bibliotek igen. hvis du har timeren, indtil den virker, kan det være, at et andet bibliotek kolliderer med dine indstillinger. På bascom har du gratis adgang til den komplette hardware inklusive boot -sektoren, der er besat af arduino. for eksempel spørger nogle biblioteker på bascom dig, hvilken timer du vil bruge. på den anden side, da arduino gør det meget let at oprette et bibliotek selv, gør det det naturligvis til en platform, hvor ny hardware og sensorer normalt har et bibliotek direkte. hvad der ofte er forbundet med meget forskning på bascom og de funktioner, som et bibliotek normalt ville varetage, skal derefter omhyggeligt indarbejdes i programkoden. men gode nyheder bascom -fællesskabet er også meget stort, hvorfor der er en løsning til enhver idé.

Så det afhænger dels af projektet, hvad der bruges til et udviklingsmiljø og dels af programmeringspersonens knowhow.

men hvorfor laver jeg denne serie. på den ene side sparer det mange penge. Jeg behøver ikke købe et arduino -bord til hvert projekt. For eksempel: En noname Arduino uno koster ca. på den anden side har du det komplette udvalg af avr -chips, der understøttes. atmegas 8 til 256 og attiny 8 til 2313 og mange xmega -typer, som jeg ikke har erfaring med. Hvis du bare vil bruge en servo og en ultralydssensor, der f.eks. Kan genkende en hånd og derefter åbne et låg på en skraldespand, kan du bruge den mindst mulige chip. Så der er mange grunde til at lære et andet sprog.

Så lad os komme i gang

Forbrugsvarer

Dette er en liste over minimum krævede dele til stabil drift af chippen og programmering.

Brødbræt til test

Atmega 8-16PU (bedre du køber 2 eller 3, hvis du dræber dem ved en fejl)

7805 5V spændingsregulator

10Kohm modstand

100nF filmkondensator

10µF elektrolytkondensator

100µF elektrolytkondensator

nogle ledninger til brødbræt

Windows PC 7/8/8.1/10

ISP -programmerer (jeg vil her bruge USBasp, du kan købe det på amazon for få penge)

Bascom AVR (du kan downloade en DEMO her. Alle funktioner er låst op, men du kan kun skrive kode til 4Kb -størrelse, der er nok til masser af kode).

Valgfri dele:

LED'er med modstande

skubkontakter

projektspecifikke dele

Trin 1: Installation af Bascom og opsætning

Installation af Bascom og opsætning
Installation af Bascom og opsætning
Installation af Bascom og opsætning
Installation af Bascom og opsætning
Installation af Bascom og opsætning
Installation af Bascom og opsætning

Download filen og installer Bascom AVR. Installer alle dele af det inklusive det sidste afkrydsningsfelt efter installationen.

Efter det genstart din pc ellers starter bascom ikke.

Efter genstart starter bascom.

Gå til Valg -> Programmer og vælg USBasp fra listen, gem indstillingerne og luk Bascom.

Brug dette program til at installere usbasp. Efter det skal du genstarte din pc igen. Tilslut nu USBasp med din pc, og start enhedshåndteringen. USBasp skal vises på libusb -enhederne.

Stat Bascom igen og opret en ny fil. Gem det på din pc, og tryk på F7 -knappen på dit tastatur.

Kompilatoren starter og kompilerer det tomme program. Nu kan du teste programmørens funktionalitet.

Tryk på F4 -knappen på dit tastatur for at starte programmeringsvinduet. Gå nu til chip -> identificer for at starte en interaktion. LED'erne fra USBasp skal nu blinke kort. Du skulle få en besked som chip Id FFFFFF kunne ikke læse enheden. Det er et godt tegn, at programmereren fungerer, men den fandt ingen chip.

Nu kan vi begynde at bygge det første kredsløb.

Trin 2: Lad os se nærmere på chippen

Lad os se nærmere på chippen
Lad os se nærmere på chippen

Hvis du ser på chipoutens pinout, ser det ud til, at chippen ikke har nogen lighed med arduino -kortet. Nok bruger vi en Atmega8, og på Arduino uno er en Atmega328. Men Pinout er næsten den samme, men han -chippen i Arduino Uno -kortet har flere funktioner. Her er benene på stifterne. VCC og GND er stifterne til strømforsyning.

AREF og AVCC er ben til referencespændingen og strømforsyningen til den analoge til digitale omformer.

PB 0-7 PC 0-6 PD 0-7 er generelle input-udgangsstifter med flere belægninger.

reset pin er, hvad navnet siger. For at genstarte chippen. Linjen over nulstillingsnavnet betyder negation. Det betyder, at for at nulstille chippen skal du trække den ned til 0V.

For de følgende pins kommer separate instruktører snart.

RXD TXD er hardware pins til seriel kommunikation UART.

INT0 INT1 er Hardware Interrupt -ben

XCK /T0 UART Urkilde /Timer /Tæller0 Urkilde

XTAL /TOSC ben er til en ekstern krystal op til 16MHz (forskellige modeller op til 20MHz) /Krystal ben til en intern RTC

T1 ligner T0

AIN -ben er til den analoge komparator

ICP1 ligner T0/T1

OC1A er hardware output pin til pwm timer1 kanal A

SS / OC2 chip vælg pin til SPI / lignende OC1B men kanal B

MOSI MISO SCK / OC2 er hardware SPI -benene og benene til programmering / PWM -udgangstimer2

ADC0 til ADC5 er de analoge indgange

SDA SCL er pins til hardware I2C

Den normale chip kan arbejde fra 4, 5V til 5, 5V Atmega 8L kan arbejde med meget lavere spænding.

Du kan se, at selv denne chip kan mere end en Arduino Uno synes ikke kan. Men Arduino kan også gøre det, du skal kun programmere det.

Trin 3: Det første kredsløb

Det første kredsløb
Det første kredsløb
Det første kredsløb
Det første kredsløb

Nu er det tid til at bygge dit første kredsløb.

Hvad er typisk det første kredsløb? Ret! Lad os blinke en LED.

LED'en er forbundet med PB0. Modstanden ved siden af chippen har 10k ohm.

Modstanden ved siden af LED'en har 470 Ohm.

Nu kan du forbinde USBasp med Atmega som vist på billedet.

Men før du tænder for strømmen, lad os skrive programmet.

Trin 4: Skriv det første program

Skriv det første program
Skriv det første program

Opret en ny fil i Bascom, og indtast følgende tekst.

$ regfile "m8def.dat"

$ crystal = 1000000 config portb.0 = output gør portb.0 = 1 vent 1 portb.0 = 0 vent 1 loop

derefter kompilere det ved at trykke på F7 på dit tastatur.

Nu kan vi programmere chippen ved at trykke på F4. Programmeringsvinduet vises. Nu er det tid til at tænde for strømmen fra brødbrættet. Du skal anvende noget mellem 6 og 12 volt.

Gå nu til chip -> autoprogram. Hvis programmeringsvinduet lukker automatisk, var programmeringen vellykket.

LED'en skal blinke med et sekund.

Se nu nærmere på programmet for at forstå syntaksen.

$ regfile "m8def.dat"

$ krystal = 1000000

med $ regfile fortæller vi kompilatoren typen af den brugte chip, navnet på Arduino -chippen ville være "m328pdef.dat"

med $ crystal fortæller vi ham cpu -hastigheden omkring 1MHz.

config portb.0 = Output

det betyder, at PB0 skal fungere som output.

Forresten betyder forkortelsen PB0 port B bit 0. Chippen er opdelt i flere porte. Hver port får et bogstav for tydelig identifikation. og hver portpin lidt fra 0 til 7. For eksempel kan jeg skrive en komplet byte i portoutputregistret, som vil blive udsendt via de enkelte portstifter.

gøre

sløjfe

Dette er, hvad i Arduino betyder void loop -sætningen. Mellem disse to kommandoer vil gentage sig for evigt. (med nogle undtagelser, men senere mere om det)

Portb.0 = 1

vent 1 portb.0 = 0 vent 1

Her kniber vi med at LED'en blinker.

Portb.0 = 1 fortæller chippen at skifte output PB0 til 5V

vent 1 -kommandoen lad chippen vente i et sekund. Hvis du vil skifte LED hurtigere, skal du udskifte ventekommandoen med waitms nu kan du indtaste et stykke tid nu i millisekunder f.eks. waitms 500. (waitus betyder vent i nanosekunder)

Portb.0 = 0 fortæller chippen at skifte output PB0 til 0V.

Trin 5: Tilføj en knap til brug af input

Tilføj en knap til brug af input
Tilføj en knap til brug af input

Nu tilføjer vi en knap for at tænde lysdioden, hvis der trykkes på knappen.

Indsæt knappen som vist på billedet.

indtast nu følgende program.

$ regfile "m8def.dat"

$ crystal = 1000000 config portb.0 = output config portd.7 = input Portd.7 = 1 gør hvis pind.7 = 0 derefter portb.0 = 1 anden portb.0 = 0 loop

Hvis du uploader det program til chippen, lyser LED'en kun, når der trykkes på knappen. Men hvorfor?

programmet starter identisk som den sidste indtil

config portd.7 = input. Det betyder, at stiften PD7, der er forbundet med knappen, fungerer som et input.

Portd.7 = 1 skifter ikke stiften til høj, men den aktiverer den interne pull -up -modstand på Atmega.

Hvis statemend ser lidt mærkeligt ud, hvis du er vant til arduino.

hvis du bruger if -sætningen, skal du bruge "derefter" -udsagnet. I denne prøve bruges if -sætningen til enkeltkommandooperationer. Hvis du vil bruge flere kommandoer, skal du skrive det sådan.

hvis pind.7 = 0 så

portb.0 = 1 nogle kode nogle kode nogle kode andet portb.0 = 0 ende hvis

til denne brug af if -sætningen skal du bruge "slut hvis" -udsætningen i slutningen.

hvad der stadig er vigtigt. Måske har du allerede set det. input er ikke forespurgt med portx.x, men med pinx.x. Det kan du let huske. Outputs har "o" (port) i ordet, og input har "i" (pin).

Nu er det din tur til at lege lidt.

Min næste instruerbare kommer snart (standardudtalelser som while, select case, for og variabler.)

Hvis du kan lide min instruerbare og vil have mere, fortæl mig det i kommentarerne.

Anbefalede: