Mundarija:

Bascom AVR -ni ishga tushirish: 5 qadam
Bascom AVR -ni ishga tushirish: 5 qadam

Video: Bascom AVR -ni ishga tushirish: 5 qadam

Video: Bascom AVR -ni ishga tushirish: 5 qadam
Video: Bascom Avr | How to Set Up & Program an LCD 16x2 Using Bascom Avr and Arduino Uno Board 2024, Iyul
Anonim
Bascom AVR yordamida ishga tushish
Bascom AVR yordamida ishga tushish

Bu AVR mikrokontrollerini Bascom AVR bilan dasturlashni o'rgatadigan seriyaning boshlanishi.

Nega men buni qilyapman.

Ushbu ketma -ketlikdagi dastur namunalarining ko'pini Arduino yordamida qilishingiz mumkin.

Ba'zilar osonroq, ba'zilari qiyinroq, lekin oxirida ikkalasi ham bir xil boshqaruvchida ishlaydi.

Ammo har bir rivojlanish muhitida dasturlash usuli boshqacha. Arduino asosiy funktsiyalardan tashqari hamma narsa uchun kutubxonaga muhtoj. Bascom kutubxonalar bilan ham ishlaydi, lekin men kamdan -kam hollarda bittasini kiritishim kerak. Arduino-da, uskunaga tegishli barcha sozlamalar kutubxonalar orqali amalga oshiriladi. Siz mikrokontrollerning haqiqiy kuchiga juda kam ta'sir qilasiz. Boshqaruv moslamasi taymerlardan boshlanadi. arduino bilan sizga yana kutubxona kerak. Agar taymer ishlamaguncha, u boshqa kutubxona sizning sozlamalaringiz bilan to'qnash kelishi mumkin. Bascom -da siz arduino egallagan yuklash sektorini o'z ichiga olgan barcha qo'shimcha qurilmalarga bepul kirishingiz mumkin. Masalan, baskomdagi ba'zi kutubxonalar sizdan qaysi taymerdan foydalanishni so'raydi. Boshqa tomondan, arduino kutubxonani o'zingiz yaratishni juda osonlashtirgani uchun, tabiiyki, uni yangi uskunalar va datchiklar odatda kutubxonaga ega bo'lgan platformaga aylantiradi. Bascom -da ko'plab tadqiqotlar va kutubxonaning odatda bajaradigan funktsiyalari bilan bog'liq bo'lgan narsa, keyin dastur kodiga ehtiyotkorlik bilan kiritilishi kerak. lekin xushxabar baskomlar ham katta, shuning uchun har bir g'oya uchun yechim bor.

Shunday qilib, bu qisman loyihaga, rivojlanish muhitida ishlatiladigan narsaga va qisman dasturchi bilimiga bog'liq.

lekin nega men bu serialni qilyapman. bir tomondan ko'p pulni tejaydi. Men har bir loyiha uchun arduino kartasini sotib olishim shart emas. Masalan: Arduino uno noname narxi 12 evroga teng, uning boshqaruvchisi esa atigi 2,5 evro turadi. Boshqa tomondan, sizda qo'llab -quvvatlanadigan avr chiplarining to'liq tanlovi mavjud. atmegas 8 dan 256 gacha va attiny 8 dan 2313 gacha va menda tajriba bo'lmagan ko'plab xmega turlari. Agar siz shunchaki qo'lni taniy oladigan servo va ultratovushli sensordan foydalanmoqchi bo'lsangiz, keyin axlat qutisining qopqog'ini ochmoqchi bo'lsangiz, mumkin bo'lgan eng kichik chipdan foydalanishingiz mumkin. Shunday qilib, ikkinchi tilni o'rganish uchun ko'p sabablar bor.

Shunday qilib, boshlaylik

Ta'minotlar

Bu chipning barqaror ishlashi va dasturlash uchun zarur bo'lgan minimal qismlar ro'yxati.

Sinov uchun non paneli

Atmega 8-16PU (agar siz ularni xato qilib o'ldirsangiz, 2 yoki 3 ni sotib olganingiz ma'qul)

7805 5V kuchlanish regulyatori

10 kohm qarshilik

100nF plyonkali kondansatör

10 mF elektrolitik kondansatör

100 mF elektrolitik kondansatör

non paneli uchun ba'zi simlar

Windows kompyuter 7/8/8.1/10

ISP dasturchisi (men bu erda USBaspdan foydalanaman, uni Amazonda oz pulga sotib olishingiz mumkin)

Bascom AVR (bu erda DEMO -ni yuklab olishingiz mumkin. Barcha funktsiyalar qulfdan chiqariladi, lekin siz kodni 4Kb hajmgacha yozishingiz mumkin, bu juda ko'p kod uchun etarli).

Ixtiyoriy qismlar:

LEDlar rezistorlar bilan

tugmachalarni bosish

loyihaga tegishli qismlar

1 -qadam: Bascomni o'rnatish va sozlash

Bascom -ni o'rnatish va sozlash
Bascom -ni o'rnatish va sozlash
Bascom -ni o'rnatish va sozlash
Bascom -ni o'rnatish va sozlash
Bascom -ni o'rnatish va sozlash
Bascom -ni o'rnatish va sozlash

Faylni yuklab oling va Bascom AVR -ni o'rnating. O'rnatishdan keyingi oxirgi katakchani o'z ichiga olgan barcha qismlarini o'rnating.

Kompyuterni qayta ishga tushirgandan so'ng, bascom ishga tushmaydi.

Qayta ishga tushirilgandan so'ng baskomni ishga tushiring.

Tanlovlar -> Dasturchi -ga o'ting va ro'yxatdan USBasp -ni tanlang, sozlamalarni saqlang va Bascom -ni yoping.

Usbasp -ni o'rnatish uchun ushbu dasturdan foydalaning. Shundan so'ng, kompyuterni qayta yoqing. Endi USBasp -ni shaxsiy kompyuteringizga ulang va qurilma menejerini ishga tushiring. USBasp libusb qurilmalarida paydo bo'lishi kerak.

Stat Bascom -ni qayta ishga tushiring va yangi fayl yarating. Kompyuteringizga saqlang va klaviaturadagi F7 tugmasini bosing.

Tuzuvchi bo'sh dasturni ishga tushiradi va tuzadi. Endi siz dasturchining ishlashini sinab ko'rishingiz mumkin.

Dasturchi oynasini ishga tushirish uchun klaviaturadagi F4 tugmasini bosing. Endi o'zaro ta'sirni boshlash uchun chip -> identifikatoriga o'ting. USBasp -dagi LEDlar endi qisqa yonib -o'chib turishi kerak. Id FFFFFF qurilmani o'qiy olmaganligi kabi xabarni olishingiz kerak. Bu dasturchi ishlayotganining yaxshi belgisidir, lekin hech qanday chip topilmadi.

Endi biz birinchi sxemani qurishni boshlashimiz mumkin.

2 -qadam: Keling, chipga yaqinroq qaraylik

Keling, chipga yaqinroq qaraylik
Keling, chipga yaqinroq qaraylik

Agar siz chipning pinoutiga qarasangiz, chipning arduino kartasiga o'xshashligi yo'qdek tuyuladi. Albatta, biz Atmega8 -dan foydalanamiz, Arduino -da esa Atmega328. Ammo Pinout deyarli bir xil, lekin Arduino Uno platasining chipi ko'proq funktsiyaga ega. Bu erda pimlarning nomlari. VCC va GND - bu quvvat manbai.

AREF va AVCC - analogdan raqamli konvertorga mos yozuvlar kuchlanish va quvvat manbai.

PB 0-7 PC 0-6 PD 0-7-ko'p maqsadli umumiy maqsadli kirish pinlari.

PIN -kodni tiklash - bu ism. Chipni qayta ishga tushirish uchun. Qayta tiklash nomining ustidagi satr rad etishni bildiradi. Bu shuni anglatadiki, chipni qayta o'rnatish uchun uni 0V ga tushirish kerak.

Quyidagi pinlar uchun alohida ko'rsatmalar tez orada keladi.

RXD TXD - bu UART ketma -ket aloqasi uchun apparat pinlari.

INT0 INT1 - bu uskunani uzish pimi

XCK /T0 UART soat manbai /taymer /taymer0 soat manbai

XTAL /TOSC pinlari 16 MGts gacha bo'lgan tashqi kristal uchun (20 MGts gacha bo'lgan turli modellar) /Ichki RTC uchun kristalli pinlar.

T1 T0 ga o'xshaydi

AIN pinlari analog taqqoslagich uchun

ICP1 T0/T1 ga o'xshaydi

OC1A - pwm taymer1 kanal A uchun apparat chiqish pimi

SS / OC2 chipi SPI / OC1B kabi, lekin B kanali

MOSI MISO SCK / OC2 - bu SPI apparatlari va dasturlash uchun pinlar / PWM chiqish taymeri2

ADC0 - ADC5 analog kirishlardir

SDA SCL - bu I2C uskunalari uchun pinlar

Oddiy chip 4, 5 V dan 5, 5 V gacha ishlashi mumkin, Atmega 8L ancha past kuchlanish bilan ishlashi mumkin.

Ko'ryapsizmi, hatto bu chip Arduino Uno qila olmaydiganidan ko'ra ko'proq narsani qila oladi. Ammo Arduino ham buni qila oladi, siz faqat dasturlashingiz kerak.

3 -qadam: Birinchi davr

Birinchi davr
Birinchi davr
Birinchi davr
Birinchi davr

Endi birinchi davrani yaratish vaqti keldi.

Odatda birinchi davr nima? To'g'ri! LEDni yondiramiz.

LED PB0 ga ulangan. Chip yonidagi qarshilik 10k Ohmga ega.

LED yonidagi qarshilik 470 Ohmga ega.

Endi siz USBasp -ni rasmda ko'rsatilgandek Atmega -ga ulashingiz mumkin.

Ammo quvvatni yoqishdan oldin, dasturni yozaylik.

4 -qadam: Birinchi dasturni yozing

Birinchi dasturni yozing
Birinchi dasturni yozing

Bascom -da yangi fayl yarating va keyingi matnni kiriting.

$ regfile "m8def.dat"

$ crystal = 1000000 config portb.0 = chiqish portb.0 = 1 kutish 1 portb.0 = 0 kutish 1 tsikl

Shundan so'ng, klaviaturada F7 tugmachasini bosib, uni kompilyatsiya qiling.

Endi biz F4 tugmachasini bosib chipni dasturlashimiz mumkin. Dasturchi oynasi paydo bo'ladi. Endi non panelidan quvvatni yoqish vaqti keldi. Siz 6 dan 12 voltgacha biror narsani qo'llashingiz kerak.

Endi chip -> avtomatik dasturga o'ting. Agar dasturchi oynasi avtomatik ravishda yopilsa, dastur muvaffaqiyatli o'tdi.

LED bir soniya tezlikda miltillashi kerak.

Endi sintaksisni tushunmaslik uchun dasturni batafsil ko'rib chiqing.

$ regfile "m8def.dat"

$ billur = 1000000

$ regfile yordamida biz kompilyatorga ishlatilgan chip turini aytamizki, Arduino chipining nomi "m328pdef.dat" bo'ladi.

$ billur bilan biz unga CPU tezligini 1 MGts haqida aytamiz.

config portb.0 = Chiqish

ya'ni PB0 chiqish vazifasini bajarishi kerak.

Aytgancha, PB0 qisqartmasi B bit 0 portini bildiradi, chip bir nechta portlarga bo'linadi. Har bir portga aniq identifikatsiya qilish uchun xat beriladi. va har bir portpin 0 dan 7 gacha. Masalan, men portning chiqish registriga to'liq bayt yozishim mumkin, u alohida port pinlari orqali chiqariladi.

qilmoq

pastadir

Bu Arduinoda void loop bayonotining ma'nosi. Bu ikki buyruq orasidagi hamma narsa abadiy takrorlanadi. (ba'zi istisnolardan tashqari, lekin bu haqda keyinroq)

Portb.0 = 1

kutish 1 portb.0 = 0 kutish 1

Bu erda biz milt -milt yonib -o'chib turishini aniqlaymiz.

Portb.0 = 1 chipga PB0 chiqishini 5V ga almashtirishini aytadi

kutish 1 buyrug'i chipni bir soniya kutishiga imkon beradi. Agar siz yoritgichni tezroq almashtirishni xohlasangiz, kutish buyrug'ini waitms bilan almashtirishingiz kerak bo'ladi, hozircha vaqtni millisekundlarda kiritishingiz mumkin. waitms 500. (waitus nanosaniyalarda kutish demakdir)

Portb.0 = 0 chipga PB0 chiqishini 0V ga almashtirishini aytadi.

5 -qadam: Kirishni ishlatish uchun tugma qo'shing

Kirishni ishlatish uchun tugma qo'shing
Kirishni ishlatish uchun tugma qo'shing

Endi tugma bosilsa, biz chiroqni yoqish uchun tugma qo'shamiz.

Tugmani rasmda ko'rsatilgandek joylashtiring.

Endi quyidagi dasturni kiriting.

$ regfile "m8def.dat"

$ Crystal = 1000000 config portb.0 = chiqish konfiguratsiyasi portd.7 = kirish Portd.7 = 1 bo'lsa pind.7 = 0 bo'lsa portb.0 = 1 boshqa portb.0 = 0 pastadir

Agar siz ushbu dasturni chipga yuklasangiz, LED faqat tugma bosilganda yonadi. Lekin nega?

dastur avvalgisiga o'xshash tarzda boshlanadi

config portd.7 = kirish. Bu shuni anglatadiki, tugma bilan bog'langan PD7 pimi kirish vazifasini bajaradi.

Portd.7 = 1 pinni yuqori holatiga o'tkazmaydi, lekin u Atmega ichki tortish qarshiligini faollashtiradi.

Agar arduino -ga o'rgangan bo'lsangiz, if statemend biroz g'alati ko'rinadi.

agar if iborasini ishlatsangiz, "keyin" iborasini ishlatishingiz kerak. Bu misolda if buyrug'i bitta buyruq operatsiyalari uchun ishlatiladi. Agar siz ko'proq buyruqlardan foydalanmoqchi bo'lsangiz, uni shunday yozishingiz kerak.

agar pind.7 = 0 bo'lsa

portb.0 = 1 ba'zi kod ba'zi kod ba'zi kod boshqa portb.0 = 0 if

if iborasini ishlatish uchun siz oxirida "if if" iborasini ishlatishingiz kerak.

hali nima muhim. Ehtimol, siz allaqachon ko'rgansiz. kirishlar portx.x bilan emas, balki pinx.x bilan so'raladi, buni osongina eslab qolishingiz mumkin. Chiqish so'zda "o" (port) va kirishda "i" (pin) bo'ladi.

Endi navbatda, ozgina o'ynaymiz.

Mening keyingi o'qituvchim tez orada bo'ladi (standart iboralar, while, case, for va o'zgaruvchilar kabi).

Agar sizga mening ko'rsatmalarni yoqtirsangiz va ko'proq narsani xohlasangiz, izohlarda menga ayting.

Tavsiya: