Tartalomjegyzék:

Kezdeti lépések a Bascom AVR használatával: 5 lépés
Kezdeti lépések a Bascom AVR használatával: 5 lépés

Videó: Kezdeti lépések a Bascom AVR használatával: 5 lépés

Videó: Kezdeti lépések a Bascom AVR használatával: 5 lépés
Videó: 14ch servo vezérlő tesztelése 6lábú, 2dof robottal (hexabot) 2024, Július
Anonim
Kezdeti lépések a Bascom AVR -rel
Kezdeti lépések a Bascom AVR -rel

Ez egy sorozat kezdete, amely megtanítja az AVR mikrovezérlő programozását a Bascom AVR segítségével.

Miért csinálom ezt.

A sorozat legtöbb programmintáját az Arduino segítségével készítheti el.

Néhány könnyebb és néhány nehezebb, de végül mindkettő ugyanazon a vezérlőn fog futni.

De a programozás módja minden fejlesztési környezetben más. Az Arduino mindenhez könyvtárra van szüksége, kivéve az alapvető funkciókat. A Bascom könyvtárakkal is dolgozik, de ritkán kell egyet felvennem. Az Arduino segítségével minden hardver-specifikus beállítás a könyvtárakon keresztül történik. nagyon kevés befolyása van a mikrokontroller tényleges teljesítményére. Kezdve a vezérlő által biztosított időzítőkkel. az arduino -val megint könyvtár kell. ha megvan az időzítő, amíg nem működik, akkor lehet, hogy egy másik könyvtár ütközik a beállításaival. A bascom -nál szabadon hozzáférhet a teljes hardverhez, beleértve az arduino által elfoglalt rendszerindítási szektort. a bascom egyes könyvtárai például megkérdezik, hogy melyik időzítőt szeretné használni. másrészt, mivel az arduino nagyon megkönnyíti a saját könyvtár létrehozását, természetesen olyan platformmá teszi, ahol az új hardverek és érzékelők általában közvetlenül rendelkeznek könyvtárral. amit gyakran társítanak a bascom sok kutatásához, és azokat a funkciókat, amelyeket egy könyvtár normál esetben elvállalna, akkor gondosan be kell építeni a programkódba. de jó hír, hogy a bascom közösség is nagyon nagy, ezért van megoldás minden ötletre.

Tehát részben a projekttől függ, hogy mit használnak a fejlesztési környezethez, részben pedig a programozó személy tudásától.

de miért csinálom ezt a sorozatot. egyrészt sok pénzt takarít meg. Nem kell minden projekthez arduino táblát vásárolnom. Például: Egy noname Arduino uno ára körülbelül 12 euró, a rajta lévő vezérlő mindössze 2,5 euróba kerül a stabil működéshez szükséges minimális áramkörrel, körülbelül 4 euróba kerül. másrészt a támogatott avr chipek teljes választéka elérhető. atmegas 8 -tól 256 -ig és attiny -tól 8 -ig 2313 -ig és sok olyan xmega -típustól, amelyekről nincs tapasztalatom. Ha csak egy szervót és egy ultrahangos érzékelőt szeretne használni, amely felismeri például a kezet, majd kinyitja a szemetes fedelét, akkor a lehető legkisebb chipet használhatja. Tehát sok oka van egy második nyelv tanulásának.

Tehát kezdjük

Kellékek

Ez a chip szükséges működéséhez és programozásához szükséges minimális alkatrészek listája.

Breadboard teszteléshez

Atmega 8-16PU (jobb, ha 2 vagy 3-at veszel, ha véletlenül megöli őket)

7805 5V feszültségszabályozó

10Kohm ellenállás

100nF film kondenzátor

10µF elektrolit kondenzátor

100µF elektrolit kondenzátor

néhány vezeték a kenyértáblához

Windows PC 7/8/8.1/10

ISP programozó (itt fogom használni az USB -s asp -t, amelyet Amazonon vásárolhat meg kevés pénzért)

Bascom AVR (itt letölthet egy DEMO -t. Minden funkció fel van oldva, de csak 4Kb méretű kódot írhat, ami sok kódhoz elegendő).

Opcionális alkatrészek:

LED -ek ellenállással

nyomókapcsolók

projekt-specifikus részek

1. lépés: A Bascom telepítése és beállítása

A Bascom telepítése és telepítése
A Bascom telepítése és telepítése
A Bascom telepítése és telepítése
A Bascom telepítése és telepítése
A Bascom telepítése és telepítése
A Bascom telepítése és telepítése

Töltse le a fájlt, és telepítse a Bascom AVR -t. Telepítse annak minden részét, beleértve a telepítés utáni utolsó jelölőnégyzetet is.

Ezután indítsa újra a számítógépet, különben a bascom nem indul el.

Az újraindítás után indítsa el a bascom -ot.

Lépjen az Opciók -> Programozó menüpontra, és válassza az USBasp lehetőséget a listából, mentse el a beállításokat, és zárja be a Bascom -ot.

Használja ezt a programot az usbasp telepítéséhez. Ezt követően indítsa újra a számítógépet. Most csatlakoztassa az USBasp -ot a számítógéphez, és indítsa el az eszközkezelőt. Az USBasp -nek meg kell jelennie a libusb eszközökön.

Stat Bascom újra, és hozzon létre egy új fájlt. Mentse el a számítógépére, és nyomja meg az F7 gombot a billentyűzeten.

A fordító elindítja és lefordítja az üres programot. Most tesztelheti a programozó működését.

Nyomja meg az F4 gombot a billentyűzeten a programozó ablak elindításához. Most lépjen a chip -> azonosításhoz az interakció elindításához. Az USBasp LED -jeinek rövid ideig villogniuk kell. Olyan üzenetet kell kapnia, mint a chip Id FFFFFF nem tudta olvasni az eszközt. Ez jó jel, hogy a Programozó dolgozik, de nem talált chipet.

Most elkezdhetjük az első áramkör építését.

2. lépés: Nézzük meg közelebbről a chipet

Nézzük meg közelebbről a chipet
Nézzük meg közelebbről a chipet

Ha megnézzük a chip pinoutját, úgy tűnik, hogy a chip nem hasonlít az arduino táblához. Persze, Atmega8 -at használunk, az Arduino uno -n pedig Atmega328 -at. De a Pinout majdnem ugyanaz, de az Arduino Uno kártya chipje több funkcióval rendelkezik. Itt vannak a csapok nevei. A VCC és a GND a tápellátás csapjai.

Az AREF és az AVCC az analóg -digitális átalakító referenciafeszültségének és tápellátásának csapjai.

A PB 0-7 PC 0-6 PD 0-7 általános célú bemeneti kimeneti tüskék többféle foglaltsággal.

a reset pin azt mondja a név. A chip újraindításához. A visszaállítás neve fölötti sor tagadást jelent. Ez azt jelenti, hogy a chip visszaállításához le kell húznia 0V -ra.

A következő csapokhoz külön utasításokat kell készíteni hamarosan.

Az RXD TXD az UART soros kommunikáció hardvercsapjai.

Az INT0 INT1 hardver megszakító csapok

XCK /T0 UART Óraforrás /Időzítő /Számláló0 Óraforrás

Az XTAL /TOSC érintkezők akár 16 MHz -es külső kristályokhoz (különböző modellek 20 MHz -ig) /Kristálytűk belső RTC -hez

A T1 hasonló a T0 -hoz

Az AIN csapok az analóg összehasonlítóhoz vannak

Az ICP1 hasonló a T0/T1 -hez

Az OC1A a pwm timer1 A csatorna hardver kimeneti csapja

SS / OC2 chip kiválasztó csap SPI / hasonló OC1B -hez, de B csatorna

A MOSI MISO SCK / OC2 a hardveres SPI és a programozási / PWM kimeneti időzítő2 csapjai

Az ADC0 – ADC5 analóg bemenetek

Az SDA SCL a hardver I2C csapjai

A normál chip 4, 5 V és 5, 5 V között működhet, az Atmega 8L sokkal alacsonyabb feszültséggel.

Látod, még ez a chip is többet tud, mint egy Arduino Uno, úgy tűnik, nem. De az Arduino is képes rá, csak programoznia kell.

3. lépés: Az első kör

Az első kör
Az első kör
Az első kör
Az első kör

Itt az ideje, hogy felépítse az első áramkört.

Általában mi az első áramkör? Jobb! Villogjunk egy LED -et.

A LED a PB0 -hoz van csatlakoztatva. A chip melletti ellenállás 10 k ohm.

A LED melletti ellenállás 470 Ohm.

Most csatlakoztathatja az USBasp -ot az Atmega -hoz, a képen látható módon.

De mielőtt bekapcsolná a készüléket, írjuk meg a programot.

4. lépés: Írja be az első programot

Írja meg az első programot
Írja meg az első programot

Hozzon létre egy új fájlt a Bascomban, és írja be a következő szöveget.

$ regfile "m8def.dat"

$ crystal = 1000000 konfigurációs portb.0 = kimenet portb.0 = 1 várakozás 1 portb.0 = 0 várakozás 1 hurok

ezt követően fordítsa le az F7 billentyű lenyomásával.

Most programozhatjuk a chipet az F4 megnyomásával. Megjelenik a programozó ablak. Itt az ideje, hogy bekapcsolja a tápellátást a kenyérpultról. 6 és 12 volt közötti feszültséget kell alkalmazni.

Most menjen a chiphez -> autoprogram. Ha a programozó ablak automatikusan bezárul, a programozás sikeres volt.

A LED -nek egy másodperc frekvencián kell villognia.

Most nézze meg közelebbről a programot a szintaxis megértéséhez.

$ regfile "m8def.dat"

$ kristály = 1000000

$ regfile segítségével megmondjuk a fordítónak a használt chip típusát, az Arduino chip neve "m328pdef.dat"

$ kristály segítségével megmondjuk neki a processzor sebességét 1MHz körül.

config portb.0 = Kimenet

ez azt jelenti, hogy a PB0 -nak kimenetként kell működnie.

Egyébként a PB0 rövidítés a B port 0. bitjét jelenti. A chip több portra van osztva. Minden port kap egy betűt az egyértelmű azonosítás érdekében. és mindegyik portpin egy kicsit 0 -tól 7 -ig. Például egy teljes bájtot írhatok a port kimeneti regiszterébe, amely az egyes porttűkön keresztül kerül ki.

tedd

hurok

Az Arduino -ban ezt jelenti a void loop utasítás. A két parancs között mindörökké megismétlődik. (néhány kivételtől eltekintve, de erről később)

Portb.0 = 1

várj 1 portb.0 = 0 várj 1

Itt csíráztatjuk a led villogását.

A Portb.0 = 1 utasítja a chipet, hogy kapcsolja ki a PB0 kimenetet 5 V -ra

a wait 1 parancs hagyja a chipet várni egy másodpercet. Ha gyorsabban szeretné váltani a ledet, akkor a wait parancsot wams -okra kell cserélnie, most megadhat egy kis időt ezredmásodpercben, pl. Waitms 500. (A waitus azt jelenti, hogy várakozni kell nanoszekundumokban)

A Portb.0 = 0 jelzi a chipnek, hogy kapcsolja ki a PB0 kimenetet 0V -ra.

5. lépés: Adjon hozzá egy gombot a bemenetek használatához

Adjon hozzá egy gombot a bemenetek használatához
Adjon hozzá egy gombot a bemenetek használatához

Most hozzáadunk egy gombot, hogy világítson a led, ha megnyomja a gombot.

Helyezze be a gombot a képen látható módon.

most írja be a következő programot.

$ regfile "m8def.dat"

$ crystal = 1000000 konfigurációs portb.0 = kimeneti konfigurációs port.7 = bemeneti port.7 = 1 tegye meg, ha pind.7 = 0, majd portb.0 = 1 más portb.0 = 0 hurok

Ha feltölti ezt a programot a chipre, a LED csak a gomb megnyomásakor világít. De miért?

a program ugyanúgy indul, mint az utolsó

config portd.7 = bemenet. Ez azt jelenti, hogy a gombhoz csatlakozó PD7 érintkező bemenetként működik.

Portd.7 = 1 nem kapcsolja a tűt magasra, de aktiválja az Atmega belső felhúzó ellenállását.

Az if statemend kicsit furcsának tűnik, ha megszokta az arduino -t.

ha az if utasítást használja, akkor az "akkor" utasítást kell használnia. Ebben a mintában az if utasítást egyetlen parancsműveletekhez használják. Ha több parancsot szeretne használni, akkor ezt így kell megírnia.

ha pind.7 = 0 akkor

portb.0 = 1 néhány kód valamilyen kód valamilyen kód más portb.0 = 0 vége, ha

ehhez az if utasítás használatához a végén lévő "end if" utasítást kell használnia.

ami még fontos. Talán már látta. a bemeneteket nem a portx.x, hanem a pinx.x lekérdezi. Erre könnyen emlékezhet. A kimenetek szóban "o" (port), a bemenetek "i" (pin).

Most rajtad a sor, hogy játssz egy kicsit.

Hamarosan megérkezik a következő utasításom (szabványos állítások, mint a while, kis- és nagybetűk, és változók.)

Ha tetszik az utasításom, és többet szeretnél, szólj hozzászólásban.

Ajánlott: