Innehållsförteckning:
- Tillbehör
- Steg 1: Installation av Bascom och installation
- Steg 2: Låt oss ta en närmare titt på chippet
- Steg 3: Den första kretsen
- Steg 4: Skriv det första programmet
- Steg 5: Lägg till en knapp för att använda ingångar
Video: Komma igång med Bascom AVR: 5 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:37
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
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
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
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
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
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:
Komma igång med skinkradio: 5 steg (med bilder)
Komma igång med skinkradio: Som nyligen präglad skinklicensinnehavare vill jag gå vidare med processen jag tog för att komma in i skinkradio. Jag lockades av hobbyens självförtroendeaspekt, vilket gav människor ett sätt att kommunicera när andra metoder störs. Men det är också givande att
Komma igång med I2C -sensorgränssnitt ?? - Gränssnitt till din MMA8451 med ESP32: 8 steg
Komma igång med I2C Sensor Interface ?? - Gränssnitt till din MMA8451 Användning av ESP32: I denna handledning lär du dig allt om hur du startar, ansluter och får I2C -enhet (Accelerometer) att arbeta med styrenhet (Arduino, ESP32, ESP8266, ESP12 NodeMCU)
Ett extremt enkelt sätt att komma igång med hemautomation med hjälp av DIY -moduler: 6 steg
Ett extremt enkelt sätt att komma igång med hemautomation med hjälp av DIY -moduler: Jag blev positivt överraskad när jag bestämde mig för att försöka lägga till några DIY -sensorer till hemassistenten. Att använda ESPHome är extremt enkelt och i det här inlägget kommer vi att lära oss hur man styr en GPIO -stift och även få temperatur & luftfuktighetsdata från en trådlös n
Komma igång med billiga RPLIDAR med Jetson Nano: 5 steg
Komma igång med lågpris RPLIDAR Använda Jetson Nano: Kort översikt Light Detection and Ranging (LiDAR) fungerar på samma sätt som ultraljudsmätare med laserpuls används istället för ljudvågor. Yandex, Uber, Waymo och etc. investerar stort i LiDAR -teknik för sina autonoma bilpr
Komma igång med AWS IoT Med trådlös temperatursensor med MQTT: 8 steg
Komma igång med AWS IoT med trådlös temperatursensor med MQTT: I tidigare instruktioner har vi gått igenom olika molnplattformar som Azure, Ubidots, ThingSpeak, Losant etc. Vi har använt MQTT -protokollet för att skicka sensordata till molnet i nästan hela molnplattformen. För mer information