Obsah:

Začínáme s Bascom AVR: 5 kroků
Začínáme s Bascom AVR: 5 kroků

Video: Začínáme s Bascom AVR: 5 kroků

Video: Začínáme s Bascom AVR: 5 kroků
Video: Programujte.com 2024, Červenec
Anonim
Začínáme s Bascom AVR
Začínáme s Bascom AVR

Toto je začátek série, která vás naučí programovat mikrokontrolér AVR pomocí Bascom AVR.

Proč to dělám?

Většinu ukázek programu z této série můžete vytvořit pomocí Arduina.

Některé jednodušší a některé obtížnější, ale nakonec oba poběží na stejném ovladači.

Způsob programování je ale v každém vývojovém prostředí jiný. Arduino potřebuje knihovnu pro všechno kromě základních funkcí. Bascom pracuje také s knihovnami, ale jen zřídka musím zahrnout jednu. U Arduina se všechna nastavení hardwaru provádějí prostřednictvím knihoven. máte velmi malý vliv na skutečný výkon mikrokontroléru. Počínaje časovači, které má ovladač. s arduino zase potřebujete knihovnu. pokud máte časovač, dokud to nefunguje, může to být jiná knihovna, která koliduje s vaším nastavením. U bascomu máte volný přístup k kompletnímu hardwaru včetně boot sektoru, který je obsazen arduino. například některé knihovny v bascomu se vás ptají, který časovač chcete použít. na druhou stranu, arduino velmi usnadňuje vytváření knihovny vlastními silami, což z ní přirozeně činí platformu, kde nový hardware a senzory obvykle mají knihovnu přímo. to, co je často spojeno se spoustou výzkumů v bascomu, a funkce, které by knihovna normálně převzala, musí být pak pečlivě začleněno do programového kódu. ale dobrá zpráva, komunita bascomů je také velmi velká, a proto existuje řešení pro každý nápad.

Záleží tedy částečně na projektu, co se používá pro vývojové prostředí, a částečně na know-how programátora.

ale proč dělám tuto sérii. na jedné straně ušetří mnoho peněz. Ke každému projektu nemusím kupovat desku arduino. Například: Noname Arduino uno stojí asi 12 €, ovladač, který je na něm, stojí jen 2,5 € s minimem obvodů potřebných pro stabilní funkci, stojí kolem 4 €. na druhou stranu máte k dispozici kompletní výběr avr čipů, které jsou podporovány. atmegas 8 až 256 a attiny 8 až 2313 a mnoho typů xmega, se kterými nemám žádné zkušenosti. Pokud chcete použít pouze servo a ultrazvukový senzor, který dokáže rozpoznat například ruku, a poté otevřít víko odpadkového koše, můžete použít co nejmenší čip. Existuje tedy mnoho důvodů, proč se naučit druhý jazyk.

Začněme tedy

Zásoby

Toto je seznam minimálních požadovaných součástí pro stabilní provoz čipu a programování.

Breadboard pro testování

Atmega 8-16PU (lepší je koupit 2 nebo 3, pokud je zabijete omylem)

7805 5V regulátor napětí

Rezistor 10Kohm

100nF filmový kondenzátor

10 µF elektrolytický kondenzátor

100 µF elektrolytický kondenzátor

nějaké dráty na prkénko

Windows PC 7/8/8.1/10

ISP Programmer (zde použiji USBasp, který si můžete koupit na Amazonu za málo peněz)

Bascom AVR (zde si můžete stáhnout DEMO. Všechny funkce jsou odemčeny, ale můžete psát kód pouze do velikosti 4Kb, která stačí na spoustu kódu).

Volitelné součásti:

LED diody s rezistory

tlačné spínače

části specifické pro projekt

Krok 1: Instalace Bascomu a instalace

Instalace Bascomu a instalace
Instalace Bascomu a instalace
Instalace Bascomu a instalace
Instalace Bascomu a instalace
Instalace Bascomu a instalace
Instalace Bascomu a instalace

Stáhněte si soubor a nainstalujte Bascom AVR. Nainstalujte všechny jeho části včetně posledního zaškrtávacího políčka po instalaci.

Poté restartujte počítač, jinak se bascom nespustí.

Po restartu spusťte bascom.

Přejděte na Možnosti -> Programátor a ze seznamu vyberte USBasp, uložte nastavení a zavřete Bascom.

Pomocí tohoto programu nainstalujte usbasp. Poté restartujte počítač znovu. Nyní připojte USBasp k počítači a spusťte správce zařízení. Na zařízeních libusb by se měl objevit USBasp.

Stat Bascom znovu a vytvořte nový soubor. Uložte jej do počítače a stiskněte klávesu F7 na klávesnici.

Kompilátor spustí a zkompiluje prázdný program. Nyní můžete vyzkoušet funkčnost programátoru.

Stisknutím klávesy F4 na klávesnici spustíte okno programátoru. Nyní přejděte na čip -> identifikovat a zahájte interakci. LED diody z USBasp by nyní měly krátce blikat. Měli byste obdržet zprávu, jako je čip Id FFFFFF nemohl přečíst zařízení. To je dobré znamení, že programátor pracuje, ale nenašel žádný čip.

Nyní můžeme začít stavět první okruh.

Krok 2: Podívejme se blíže na čip

Podívejme se blíže na čip
Podívejme se blíže na čip

Když se podíváte na pinout čipu, zdá se, že čip nemá podobnost s arduino deskou. Jistě, používáme Atmega8 a na Arduino uno je Atmega328. Ale Pinout je téměř stejný, ale čip desky Arduino Uno má více funkcí. Zde názvy kolíků. VCC a GND jsou kolíky pro napájení.

AREF a AVCC jsou piny pro referenční napětí a napájení analogově digitálního převodníku.

PB 0-7 PC 0-6 PD 0-7 jsou univerzální vstupní výstupní piny s více obsazením.

reset pin je to, co název říká. Chcete -li restartovat čip. Řádek nad názvem resetování znamená negaci. To znamená, že k resetování čipu ho musíte stáhnout na 0V.

Pro následující piny budou brzy k dispozici samostatné pokyny.

RXD TXD jsou hardwarové piny pro sériovou komunikaci UART.

INT0 INT1 jsou kolíky přerušení hardwaru

XCK /T0 UART Zdroj hodin /Časovač /Počitadlo0 Zdroj hodin

Piny XTAL /TOSC jsou pro externí krystal až 16MHz (různé modely až 20MHz) /Krystaly pro vnitřní RTC

T1 je podobný T0

Piny AIN jsou pro analogový komparátor

ICP1 je podobný T0/T1

OC1A je hardwarový výstupní pin pro pwm časovač 1 kanál A

Pin pro výběr čipu SS / OC2 pro SPI / jako OC1B, ale kanál B

MOSI MISO SCK / OC2 jsou hardwarové SPI piny a piny pro programování / časovač výstupu PWM2

Analogové vstupy jsou ADC0 až ADC5

SDA SCL jsou piny pro hardware I2C

Normální čip může pracovat od 4, 5V do 5, 5V, Atmega 8L může pracovat s mnohem nižším napětím.

Vidíte, že i tento čip dokáže víc, než se zdá, že Arduino Uno nedokáže. Ale Arduino to také dokáže, stačí to jen naprogramovat.

Krok 3: První okruh

První okruh
První okruh
První okruh
První okruh

Nyní je čas postavit svůj první okruh.

Jaký je obvykle první okruh? Že jo! Pojďme blikat LED.

LED je připojena k PB0. Rezistor vedle čipu má 10k Ohmů.

Rezistor vedle LED má 470 ohmů.

Nyní můžete připojit USBasp k Atmega, jak je znázorněno na obrázku.

Než ale zapnete napájení, napíšeme program.

Krok 4: Napište první program

Napište první program
Napište první program

Vytvořte nový soubor v Bascomu a zadejte následující text.

$ regfile "m8def.dat"

$ crystal = 1000000 config portb.0 = výstup do portb.0 = 1 čekání 1 portb.0 = 0 čekání 1 smyčka

poté jej zkompilujte stisknutím klávesy F7 na klávesnici.

Nyní můžeme čip naprogramovat stisknutím klávesy F4. Zobrazí se okno programátoru. Nyní je čas zapnout napájení z prkénka. Měli byste použít něco mezi 6 a 12 volty.

Nyní přejděte na čip -> autoprogram. Pokud se okno programátoru automaticky zavře, bylo programování úspěšné.

LED by měla blikat v jedné sekundové frekvenci.

Nyní se blíže podívejte na program, abyste porozuměli syntaxi.

$ regfile "m8def.dat"

$ krystal = 10 000 000

s $ regfile řekneme kompilátoru typ použitého čipu, název čipu Arduino bude „m328pdef.dat“

s $ crystal mu říkáme rychlost procesoru asi 1 MHz.

config portb.0 = Výstup

to znamená, že PB0 by měl fungovat jako výstup.

Mimochodem, zkratka PB0 znamená port B bit 0. Čip je rozdělen do několika portů. Každý port je označen písmenem pro jasnou identifikaci. a každý portpin trochu od 0 do 7. Například mohu zapsat kompletní bajt do výstupního registru portu, který bude vystupovat přes jednotlivé portové piny.

dělat

smyčka

To v Arduinu znamená prohlášení o neplatné smyčce. Všechno mezi těmito dvěma příkazy se bude navždy opakovat. (s několika výjimkami, ale o tom později více)

Portb.0 = 1

počkejte 1 portb.0 = 0 počkejte 1

Zde gernerujeme blikání LED.

Portb.0 = 1 říká čipu, aby přepnul výstup PB0 na 5V

příkaz wait 1 nechá čip jednu sekundu počkat. Pokud chcete LED přepnout rychleji, musíte nahradit příkaz čekání čekáním, nyní můžete zadat nějaký čas v milisekundách, např. waitms 500. (waitus znamená čekat v nanosekundách)

Portb.0 = 0 říká čipu, aby přepnul výstup PB0 na 0V.

Krok 5: Přidejte tlačítko pro použití vstupů

Chcete -li používat vstupy, přidejte tlačítko
Chcete -li používat vstupy, přidejte tlačítko

Nyní přidáme tlačítko pro rozsvícení LED, pokud je tlačítko stisknuto.

Vložte tlačítko podle obrázku.

nyní zadejte následující program.

$ regfile "m8def.dat"

$ krystal = 1000000 konfigurační portb.0 = výstupní konfigurační portd.7 = vstupní portd.7 = 1 udělat, pokud pind.7 = 0, pak portb.0 = 1 jiný portb.0 = 0 smyčka

Pokud tento program nahrajete na čip, LED se rozsvítí pouze po stisknutí tlačítka. Ale proč?

program začíná stejně jako ten poslední do

config portd.7 = vstup. To znamená, že pin PD7, který je připojen k tlačítku, funguje jako vstup.

Portd.7 = 1 nepřepne kolík na vysokou hodnotu, ale aktivuje vnitřní pull up odpor Atmega.

If statemend vypadá trochu divně, pokud jste zvyklí na arduino.

pokud používáte příkaz if, musíte použít příkaz „then“. V této ukázce se příkaz if používá pro operace s jediným příkazem. Pokud chcete použít více příkazů, musíte to napsat takto.

pokud pind.7 = 0 pak

portb.0 = 1 nějaký kód nějaký kód jiný kód jiný portb.0 = 0 konec if

pro toto použití příkazu if musíte na konci použít příkaz „end if“.

co je ještě důležité. Možná jste to už viděli. vstupy nejsou dotazovány portx.x, ale pinx.x. To si můžete snadno zapamatovat. Výstupy mají ve slově „o“(port) a vstupy mají „i“(pin).

Nyní je řada na vás, abyste si trochu pohráli.

Můj další instruktáž bude brzy (standardní příkazy jako while, select case, for a variables.)

Pokud se vám můj návod líbí a chcete více, napište mi do komentářů.

Doporučuje: