Innehållsförteckning:

Komma igång med Bascom AVR: 5 steg
Komma igång med Bascom AVR: 5 steg

Video: Komma igång med Bascom AVR: 5 steg

Video: Komma igång med Bascom AVR: 5 steg
Video: Birdie 23 - Atmel 8-bitars AVR föreläsning 2024, November
Anonim
Komma igång med Bascom AVR
Komma igång med Bascom AVR

Detta är början på en serie för att lära dig programmera din AVR -mikrokontroller med Bascom AVR.

Varför gör jag det här.

De flesta programproverna i denna serie kan du göra med Arduino.

Vissa lättare och några svårare, men i slutet kommer båda att köras på samma kontroller.

Men sättet att programmera är annorlunda i varje utvecklingsmiljö. Arduino behöver ett bibliotek för allt utom de grundläggande funktionerna. Bascom arbetar också med bibliotek, men jag behöver sällan inkludera ett. Med Arduino görs alla hårdvaruspecifika inställningar via biblioteken. du har väldigt lite inflytande på mikrokontrollerns faktiska effekt. Börjar med de timers som regulatorn har. med arduino behöver du ett bibliotek igen. om du har timern tills den fungerar kan det vara ett annat bibliotek som krockar med dina inställningar. På bascom har du fri tillgång till hela hårdvaran inklusive boot -sektorn som upptas av arduino. till exempel frågar vissa bibliotek på bascom vilken timer du vill använda. å andra sidan, eftersom arduino gör det väldigt enkelt att skapa ett bibliotek själv, gör det naturligtvis det till en plattform där ny hårdvara och sensorer vanligtvis har ett bibliotek direkt. det som ofta är förknippat med mycket forskning på bascom och de funktioner som ett bibliotek normalt skulle ta måste sedan omsorgsfullt införlivas i programkoden. men goda nyheter bascom -gemenskapen är också mycket stor varför det finns en lösning för varje idé.

Så det beror dels på projektet vad som används för en utvecklingsmiljö och dels på kunskapen hos programmeringspersonen.

men varför gör jag den här serien. å ena sidan sparar det mycket pengar. Jag behöver inte köpa en arduino -bräda för varje projekt. Till exempel: En noname Arduino uno kostar cirka 12 € styrenheten som finns på den kostar bara 2,5 € med den minsta krets som krävs för en stabil funktion, den kostar cirka 4 €. å andra sidan har du ett komplett urval av avr -chips som stöds tillgängliga. atmegas 8 till 256 och attiny 8 till 2313 och många xmega -typer som jag inte har erfarenhet av. Om du bara vill använda en servo och en ultraljudssensor som kan känna igen en hand, till exempel, och sedan öppna ett lock på en papperskorg kan du använda minsta möjliga chip. Så det finns många skäl att lära sig ett andra språk.

Så låt oss komma igång

Tillbehör

Detta är en lista över minimikrav för delar för stabil drift av chipet och programmering.

Brödbräda för testning

Atmega 8-16PU (bättre att du köper 2 eller 3 om du dödar dem av misstag)

7805 5V spänningsregulator

10Kohm motstånd

100nF filmkondensator

10µF elektrolytkondensator

100µF elektrolytkondensator

några trådar för brödbräda

Windows PC 7/8/8.1/10

ISP -programmerare (jag kommer att använda USBasp här, du kan köpa den på Amazon för lite pengar)

Bascom AVR (du kan ladda ner en DEMO här. Alla funktioner är olåsta, men du kan bara skriva kod till 4Kb -storlek som räcker för massor av kod).

Valfria delar:

Lysdioder med motstånd

tryckknappar

projektspecifika delar

Steg 1: Installation av Bascom och installation

Installation av Bascom och installation
Installation av Bascom och installation
Installation av Bascom och installation
Installation av Bascom och installation
Installation av Bascom och installation
Installation av Bascom och installation

Ladda ner filen och installera Bascom AVR. Installera alla delar av den inklusive den sista kryssrutan efter installationen.

Efter det startar du om din dator annars startar inte bascom.

Efter omstart startar bascom.

Gå till Alternativ -> Programmerare och välj USBasp från listan, spara inställningarna och stäng Bascom.

Använd det här programmet för att installera usbasp. Starta sedan om datorn igen. Anslut nu USBasp till din PC och starta enhetshanteraren. USBasp ska visas på libusb -enheterna.

Stat Bascom igen och skapa en ny fil. Spara den på din dator och tryck på F7 -knappen på tangentbordet.

Kompilatorn startar och sammanställer det tomma programmet. Nu kan du testa programmerarens funktionalitet.

Tryck på F4 -knappen på tangentbordet för att starta programmeringsfönstret. Gå nu till chip -> identifiera för att starta en interaktion. Lysdioderna från USBasp bör nu blinka kort. Du bör få ett meddelande som chip Id FFFFFF kunde inte läsa enheten. Det är ett gott tecken på att programmeraren fungerar men det hittade inget chip.

Nu kan vi börja bygga den första kretsen.

Steg 2: Låt oss ta en närmare titt på chippet

Låt oss titta närmare på chipet
Låt oss titta närmare på chipet

Om du tittar på chipsets pinout verkar det som att chipet inte har någon likhet med arduino -kortet. Visst, vi använder en Atmega8 och på Arduino uno finns en Atmega328. Men Pinout är nästan samma men han -chipet på Arduino Uno -kortet har fler funktioner. Här namnen på stiften. VCC och GND är stiften för strömförsörjning.

AREF och AVCC är stift för referensspänning och strömförsörjning för den analoga till digitala omvandlaren.

PB 0-7 PC 0-6 PD 0-7 är ingångar för allmänna ändamål med flera personer.

reset pin är vad namnet säger. För att starta om chippet. Raden ovanför återställningsnamnet betyder negation. Det betyder att för att återställa chipet måste du dra ner det till 0V.

För följande stift kommer separata instruktioner snart.

RXD TXD är hårdvarustift för seriell kommunikation UART.

INT0 INT1 är Hardware Interrupt -stift

XCK /T0 UART Klocka /Timer /Räknare 0 Klocka

XTAL /TOSC -stift är för en extern kristall upp till 16MHz (olika modeller upp till 20MHz) /Crystal -stift för en intern RTC

T1 liknar T0

AIN -stift är för den analoga jämföraren

ICP1 liknar T0/T1

OC1A är maskinvaruutgångsstiftet för pwm timer1 kanal A

SS / OC2 chip välj stift för SPI / liknande OC1B men kanal B

MOSI MISO SCK / OC2 är maskinvarans SPI -stift och stiften för programmering / PWM -utgångstimer2

ADC0 till ADC5 är de analoga ingångarna

SDA SCL är stiften för hårdvara I2C

Det normala chipet kan fungera från 4, 5V till 5, 5V Atmega 8L kan fungera med mycket lägre spänning.

Du ser att även detta chip kan mer än vad en Arduino Uno verkar inte kan göra. Men Arduino kan också göra det, du behöver bara programmera det.

Steg 3: Den första kretsen

Den första kretsen
Den första kretsen
Den första kretsen
Den första kretsen

Nu är det dags att bygga din första krets.

Vad är vanligtvis den första kretsen? Höger! Låt oss blinka en lysdiod.

Lysdioden är ansluten till PB0. Motståndet bredvid chipet har 10k Ohm.

Motståndet bredvid lysdioden har 470 ohm.

Nu kan du ansluta USBasp med Atmega som visas på bilden.

Men låt oss skriva programmet innan du slår på strömmen.

Steg 4: Skriv det första programmet

Skriv det första programmet
Skriv det första programmet

Skapa en ny fil i Bascom och skriv in följande text.

$ regfile "m8def.dat"

$ crystal = 1000000 config portb.0 = output do portb.0 = 1 vänta 1 portb.0 = 0 vänta 1 loop

efter det kompilera det genom att slå F7 på tangentbordet.

Nu kan vi programmera chippet genom att trycka på F4. Programmeringsfönstret visas. Nu är det dags att slå på strömmen från panelen. Du bör applicera något mellan 6 och 12 volt.

Gå nu till chip -> autoprogram. Om programmeringsfönstret stängs automatiskt lyckades programmeringen.

Lysdioden ska blinka med en sekunders frekvens.

Titta nu närmare på programmet för att förstå syntaxen.

$ regfile "m8def.dat"

$ kristall = 1000000

med $ regfile berättar vi för kompilatorn vilken typ av det använda chipet namnet på Arduino -chipet skulle vara "m328pdef.dat"

med $ crystal berättar vi för honom CPU -hastigheten ca 1MHz.

config portb.0 = Utmatning

det betyder att PB0 ska fungera som utdata.

Förresten betyder förkortningen PB0 port B bit 0. Chippet är uppdelat i flera portar. Varje port får ett brev för tydlig identifiering. och varje portpin lite från 0 till 7. Till exempel kan jag skriva en komplett byte i portens utmatningsregister, som kommer att matas ut via de enskilda portstiftarna.

do

slinga

Detta är vad i Arduino betyder void loop -satsen. Mellan dessa två kommandon kommer att upprepas för alltid. (med några undantag men senare mer om det)

Portb.0 = 1

vänta 1 portb.0 = 0 vänta 1

Här förknippar vi blinkande av LED.

Portb.0 = 1 berättar för chippet att växla ut PB0 till 5V

vänta 1 -kommandot låt chipet vänta i en sekund. Om du vill byta led snabbare måste du ersätta väntkommandot med waitms nu kan du ange en tid nu i millisekunder t.ex. waitms 500. (waitus betyder vänta i nanosekunder)

Portb.0 = 0 berättar för chipet att växla ut PB0 till 0V.

Steg 5: Lägg till en knapp för att använda ingångar

Lägg till en knapp för att använda ingångar
Lägg till en knapp för att använda ingångar

Nu lägger vi till en knapp för att tända lysdioden om knappen trycks in.

Sätt i knappen enligt bilden.

skriv nu in följande program.

$ regfile "m8def.dat"

$ crystal = 1000000 config portb.0 = output config portd.7 = input Portd.7 = 1 gör om pind.7 = 0 sedan portb.0 = 1 annan portb.0 = 0 loop

Om du laddar upp det programmet till chipet tänds lysdioden bara när du trycker på knappen. Men varför?

programmet startar på samma sätt som den sista till

config portd.7 = ingång. Det betyder att stiftet PD7 som anslutit med knappen fungerar som en ingång.

Portd.7 = 1 växlar inte stiftet till högt, men det aktiverar det interna uppdragningsmotståndet i Atmega.

If statemend ser lite konstigt ut om du är van vid arduino.

om du använder if -satsen måste du använda "då" -uttalandet. I detta exempel används if -satsen för enstaka kommandofunktioner. Om du vill använda fler kommandon måste du skriva det så här.

om pind.7 = 0 då

portb.0 = 1 någon kod någon kod någon kod annan portb.0 = 0 slut om

För denna användning av if -satsen måste du använda "slutet om" -uttalandet i slutet.

vad som fortfarande är viktigt. Kanske har du redan sett det. ingångarna frågas inte med portx.x, men med pinx.x. Det kan du enkelt komma ihåg. Utgångar har "o" (port) i ordet och ingångar har "i" (stift).

Nu är det din tur att leka lite.

Min nästa instruerbara kommer snart (standard uttalanden som medan, välj fall, för och variabler.)

Om du gillar min instruerbara och vill ha mer, berätta för mig i kommentarerna.

Rekommenderad: