Obsah:

Začíname s Bascom AVR: 5 krokov
Začíname s Bascom AVR: 5 krokov

Video: Začíname s Bascom AVR: 5 krokov

Video: Začíname s Bascom AVR: 5 krokov
Video: Ультразвуковой датчик HC SR04 (1 урок, отладка и запуск) 2024, Júl
Anonim
Začíname s Bascom AVR
Začíname s Bascom AVR

Toto je začiatok série, ktorá vás naučí programovať mikrokontrolér AVR s Bascom AVR.

Prečo to robím.

Väčšinu ukážok programu z tejto série môžete vyrobiť pomocou Arduina.

Niektoré jednoduchšie a niektoré ťažšie, ale nakoniec obe pobežia na rovnakom ovládači.

Ale spôsob programovania je v každom vývojovom prostredí iný. Arduino potrebuje knižnicu pre všetko okrem základných funkcií. Bascom pracuje aj s knižnicami, ale len zriedka musím zahrnúť jednu. V Arduino sa všetky nastavenia špecifické pre hardvér vykonávajú prostredníctvom knižníc. máte veľmi malý vplyv na skutočný výkon mikrokontroléra. Počnúc časovačmi, ktoré má ovládač. s arduino potrebujete opäť knižnicu. ak máte časovač, kým nebude fungovať, môže sa stať, že iná knižnica narazí na vaše nastavenia. V bascomu máte bezplatný prístup k kompletnému hardvéru vrátane boot sektora, ktorý je obsadený arduino. napríklad niektoré knižnice v bascome sa vás pýtajú, ktorý časovač chcete použiť. na druhej strane, pretože arduino veľmi uľahčuje vytváranie knižnice vlastnými silami, robí z nej prirodzene platformu, kde nový hardvér a senzory majú spravidla knižnicu priamo. to, čo je často spojené s veľkým počtom výskumov v systéme Bascom, a funkcie, ktoré by knižnica bežne preberala, musí byť potom starostlivo začlenené do programového kódu. ale dobrá správa, komunita bascom je tiež veľmi veľká, a preto pre každý nápad existuje riešenie.

Čiastočne to teda závisí od projektu, čo sa použije pre vývojové prostredie, a čiastočne od know-how programátora.

ale prečo robím túto sériu. na jednej strane to ušetrí veľa peňazí. Ku každému projektu nemusím kupovať dosku arduino. Napríklad: Noname Arduino uno stojí asi 12 €, ovládač, ktorý je na ňom, stojí iba 2,5 € s minimálnym obvodom potrebným na stabilnú funkciu, stojí asi 4 €. na druhej strane máte k dispozícii kompletný výber podporovaných čipov avr. atmegas 8 až 256 a attiny 8 až 2313 a mnoho typov xmega, s ktorými nemám žiadne skúsenosti. Ak chcete použiť iba servo a ultrazvukový senzor, ktorý dokáže rozpoznať napríklad ruku, a potom otvoriť veko odpadkového koša, môžete použiť čo najmenší čip. Existuje teda veľa dôvodov, prečo sa naučiť druhý jazyk.

Začnime teda

Zásoby

Toto je zoznam minimálnych požadovaných dielov pre stabilnú prevádzku čipu a programovanie.

Breadboard na testovanie

Atmega 8-16PU (radšej si kúpte 2 alebo 3, ak ich zabijete omylom)

7805 regulátor napätia 5V

Rezistor 10Kohm

100nF filmový kondenzátor

10 µF elektrolytický kondenzátor

100 µF elektrolytický kondenzátor

niekoľko drôtov na dosku na chlieb

Windows PC 7/8/8.1/10

Programátor ISP (tu použijem USBasp, ktorý si môžete kúpiť v Amazone za málo peňazí)

Bascom AVR (tu si môžete stiahnuť DEMO. Všetky funkcie sú odblokované, ale kód môžete písať iba do veľkosti 4Kb, ktorá stačí na množstvo kódu).

Voliteľné diely:

LED diódy s odpormi

tlačidlové spínače

časti špecifické pre projekt

Krok 1: Inštalácia Bascomu a nastavenie

Inštalácia Bascomu a Setup
Inštalácia Bascomu a Setup
Inštalácia Bascomu a Setup
Inštalácia Bascomu a Setup
Inštalácia Bascomu a Setup
Inštalácia Bascomu a Setup

Stiahnite si súbor a nainštalujte Bascom AVR. Nainštalujte všetky jeho časti vrátane posledného začiarkavacieho políčka po inštalácii.

Potom reštartujte počítač, inak sa bascom nespustí.

Po reštarte spustite bascom.

Prejdite na Možnosti -> Programátor a zo zoznamu vyberte USBasp, uložte nastavenia a zatvorte Bascom.

Tento program použite na inštaláciu usbasp. Potom reštartujte počítač znova. Teraz pripojte USBasp k počítaču a spustite správcu zariadení. Na zariadeniach libusb by sa mal objaviť USBasp.

Stat Bascom znova a vytvorte nový súbor. Uložte ho do počítača a stlačte kláves F7 na klávesnici.

Kompilátor spustí a skomplikuje prázdny program. Teraz môžete otestovať funkčnosť programátora.

Okno programátora spustíte stlačením klávesu F4 na klávesnici. Teraz prejdite na čip -> identifikovať a začnite interakciu. LED diódy na USBasp by teraz mali krátko blikať. Mala by sa zobraziť správa, že čip ID FFFFFF nemôže čítať zariadenie. Je to dobré znamenie, že programátor funguje, ale nenašiel žiadny čip.

Teraz môžeme začať stavať prvý okruh.

Krok 2: Pozrime sa bližšie na čip

Pozrime sa bližšie na čip
Pozrime sa bližšie na čip

Ak sa pozriete na vývod čipu, zdá sa, že čip nemá podobnosť s doskou arduino. Iste, používame Atmega8 a na Arduino uno je Atmega328. Pinout je však takmer rovnaký, ale čip dosky Arduino Uno má viac funkcií. Tu sú názvy pinov. VCC a GND sú kolíky pre napájanie.

AREF a AVCC sú kolíky pre referenčné napätie a napájanie analógovo -digitálneho prevodníka.

PB 0-7 PC 0-6 PD 0-7 sú vstupné výstupné kolíky na všeobecné použitie s viacnásobným obsadením.

reset pin je to, čo hovorí názov. Reštartujte čip. Riadok nad názvom resetovania znamená negáciu. To znamená, že na resetovanie čipu ho musíte vytiahnuť na 0V.

Pre nasledujúce piny už čoskoro k dispozícii samostatné pokyny.

RXD TXD sú hardvérové piny pre sériovú komunikáciu UART.

INT0 INT1 sú kolíky prerušenia hardvéru

XCK /T0 UART Zdroj hodín /Časovač /Počítadlo0 Zdroj hodín

Piny XTAL /TOSC sú určené pre externý kryštál až do 16 MHz (rôzne modely až do 20 MHz) /Kryštálové kolíky pre interný RTC

T1 je podobný T0

Kolíky AIN sú pre analógový komparátor

ICP1 je podobný T0/T1

OC1A je hardvérový výstupný kolík pre časový spínač pwm1, kanál A

Pin na výber čipu SS / OC2 pre SPI / ako OC1B, ale kanál B

MOSI MISO SCK / OC2 sú hardvérové piny SPI a kolíky na programovanie / časovač výstupu PWM2

ADC0 až ADC5 sú analógové vstupy

SDA SCL sú kolíky pre hardvér I2C

Bežný čip môže pracovať od 4, 5V do 5, 5V, Atmega 8L môže pracovať s oveľa nižším napätím.

Vidíte, že aj tento čip dokáže viac, ako sa zdá, že Arduino Uno nedokáže. Ale Arduino to tiež dokáže, stačí ho len naprogramovať.

Krok 3: Prvý okruh

Prvý okruh
Prvý okruh
Prvý okruh
Prvý okruh

Teraz je načase postaviť svoj prvý okruh.

Aký je zvyčajne prvý okruh? Správny! Poďme blikať LED diódu.

LED dióda je prepojená s PB0. Rezistor vedľa čipu má 10 kOhm.

Rezistor vedľa diódy LED má 470 ohmov.

Teraz môžete pripojiť USBasp k Atmega, ako je znázornené na obrázku.

Než však zapnete napájanie, napíšeme program.

Krok 4: Napíšte prvý program

Napíšte prvý program
Napíšte prvý program

Vytvorte nový súbor v Bascome a zadajte nasledujúci text.

$ regfile "m8def.dat"

$ kryštál = 1000000 konfiguračný portb.0 = výstup do portub.0 = 1 čakanie 1 portb.0 = 0 čakanie 1 slučka

potom ho skompilovajte stlačením klávesu F7 na klávesnici.

Teraz môžeme čip naprogramovať stlačením klávesu F4. Zobrazí sa okno programátora. Teraz je čas zapnúť napájanie z nepájivého poľa. Mali by ste použiť niečo medzi 6 a 12 voltami.

Teraz prejdite na čip -> autoprogram. Ak sa okno programátora automaticky zatvorí, programovanie bolo úspešné.

LED dióda by mala blikať v sekundovej frekvencii.

Teraz sa bližšie pozrite na program, aby ste porozumeli syntaxi.

$ regfile "m8def.dat"

kryštál $ = 10 000 000

pomocou $ regfile kompilátoru oznámime typ použitého čipu a názov čipu Arduino bude „m328pdef.dat“

s $ crystal mu povieme rýchlosť CPU asi 1 MHz.

config portb.0 = Výstup

to znamená, že PB0 by mal fungovať ako výstup.

Mimochodom, skratka PB0 znamená port B bit 0. Čip je rozdelený do niekoľkých portov. Každý port dostane písmeno pre jasnú identifikáciu. a každý portpinuje bit od 0 do 7. Napríklad môžem zapísať celý bajt do výstupného registra portu, ktorý bude vystupovať prostredníctvom jednotlivých pinov portu.

urobiť

slučka

To v Arduine znamená vyhlásenie o neplatnej slučke. Všetko medzi týmito dvoma príkazmi sa bude navždy opakovať. (s niekoľkými výnimkami, ale o tom neskôr)

Portb.0 = 1

čakať 1 portb.0 = 0 čakať 1

Tu gernerujeme blikanie LED diódy.

Portb.0 = 1 hovorí čipu, aby prepol výstup PB0 na 5V

príkaz wait 1 nechá čip jednu sekundu počkať. Ak chcete LED prepnúť rýchlejšie, musíte príkaz čakania nahradiť čakacími hodinami, teraz môžete zadať nejaký čas v milisekundách, napr. waitms 500. (waitus znamená čakať v nanosekundách)

Portb.0 = 0 hovorí čipu, aby prepol výstup PB0 na 0V.

Krok 5: Pridajte tlačidlo na používanie vstupov

Pridajte tlačidlo na používanie vstupov
Pridajte tlačidlo na používanie vstupov

Ak tlačidlo stlačíte, teraz pridáme tlačidlo na rozsvietenie LED diódy.

Vložte tlačidlo podľa obrázku.

teraz zadajte nasledujúci program.

$ regfile "m8def.dat"

$ kryštál = 1000000 konfigurácia portb.0 = konfigurácia výstupu portd.7 = vstup Portd.7 = 1 urobiť, ak pind.7 = 0, potom portb.0 = 1 iný portb.0 = 0 slučka

Ak nahráte tento program na čip, LED dióda sa rozsvieti iba po stlačení tlačidla. Ale prečo?

program sa spustí rovnako ako posledný do

config portd.7 = vstup. To znamená, že pin PD7, ktorý je spojený s tlačidlom, funguje ako vstup.

Portd.7 = 1 neprepne kolík na vysoký, ale aktivuje vnútorný odpínač Atmega.

If statemend vyzerá trochu divne, ak ste zvyknutí na arduino.

ak použijete príkaz if, musíte použiť príkaz „potom“. V tejto ukážke sa príkaz if používa na operácie s jediným príkazom. Ak chcete použiť viac príkazov, musíte to napísať takto.

ak pind.7 = 0 potom

portb.0 = 1 nejaký kód nejaký kód nejaký kód iný portb.0 = 0 koniec ak

na toto použitie príkazu if musíte na konci použiť príkaz „end if“.

čo je stále dôležité. Možno ste to už videli. vstupy nie sú dopytované portx.x, ale pinx.x. To si môžete ľahko zapamätať. Výstupy majú slovo „o“(port) v slove a vstupy majú „i“(kolík).

Teraz ste na rade, aby ste sa trochu pohrali.

Môj ďalší pokyn bude čoskoro (štandardné príkazy ako while, select case, for a variables.)

Ak sa vám páči môj návod a chcete viac, povedzte mi to v komentároch.

Odporúča: