Mündəricat:

Bascom AVR ilə Başlama: 5 Adım
Bascom AVR ilə Başlama: 5 Adım

Video: Bascom AVR ilə Başlama: 5 Adım

Video: Bascom AVR ilə Başlama: 5 Adım
Video: Bascom Avr | How to Set Up & Program an LCD 16x2 Using Bascom Avr and Arduino Uno Board 2024, Iyul
Anonim
Bascom AVR ilə Başlama
Bascom AVR ilə Başlama

Bu, AVR mikrokontrollerinizi Bascom AVR ilə proqramlaşdırmağı öyrətmək üçün bir seriyanın başlanğıcıdır.

Bunu niyə edirəm.

Bu seriyadakı proqram nümunələrinin çoxunu Arduino ilə edə bilərsiniz.

Bəziləri daha asan və bəziləri daha çətindir, amma sonunda hər ikisi eyni nəzarətçi üzərində işləyəcək.

Ancaq hər inkişaf mühitində proqramlaşdırma üsulu fərqlidir. Arduino, əsas funksiyalar istisna olmaqla hər şey üçün bir kitabxanaya ehtiyac duyur. Bascom kitabxanalarla da işləyir, amma nadir hallarda birini daxil etməliyəm. Arduino ilə, bütün xüsusi avadanlıq parametrləri kitabxanalar vasitəsi ilə edilir. mikrokontrolörün həqiqi gücünə çox az təsir edirsiniz. Nəzarətçidə olan taymerlərdən başlayaraq. arduino ilə yenidən kitabxanaya ehtiyacınız var. işləyənə qədər taymeriniz varsa, başqa bir kitabxana ayarlarınızla toqquşa bilər. Bascom -da, arduino -nun məşğul olduğu açılış sektoru da daxil olmaqla bütün qurğulara pulsuz giriş əldə edə bilərsiniz. məsələn, bascomdakı bəzi kitabxanalar hansı taymerdən istifadə etmək istədiyinizi soruşur. digər tərəfdən, arduino kitabxananı özünüz yaratmağı çox asanlaşdırdığından, təbii olaraq yeni aparat və sensorların birbaşa kitabxanaya sahib olduğu bir platforma halına gətirir. tez -tez bascom -da bir çox araşdırma ilə əlaqəli olan və kitabxananın normal olaraq üzərinə götürəcəyi funksiyalar daha sonra proqram koduna əzmlə daxil edilməlidir. amma yaxşı xəbərdir ki, bascom icması da çox böyükdür, buna görə də hər bir fikir üçün bir həll var.

Bu, qismən bir inkişaf mühiti üçün istifadə olunan layihədən, qismən də proqramçı şəxsin nou-hausundan asılıdır.

amma bu seriali niye edirem. bir tərəfdən çox qənaət edir. Hər bir layihə üçün arduino lövhəsi almaq məcburiyyətində deyiləm. Məsələn: Noname Arduino uno, təxminən 12 avroya başa gəlir, üzərində olan nəzarətçi sabit bir funksiya üçün lazım olan minimum dövrə ilə cəmi 2,5 avroya başa gəlir, təxminən 4 avroya başa gəlir. Digər tərəfdən, dəstəklənən avr çiplərinin tam seçiminə sahibsiniz. atmegas 8 - 256 və attiny 8 - 2313 və təcrübəm olmayan bir çox xmega növü. Yalnız bir əl tanıya bilən bir servo və ultrasəs sensoru istifadə etmək və sonra zibil qutusunun qapağını açmaq istəyirsinizsə, mümkün olan ən kiçik çipdən istifadə edə bilərsiniz. Beləliklə, ikinci bir dil öyrənməyin bir çox səbəbi var.

Beləliklə, başlayaq

Təchizat

Bu, çipin sabit işləməsi və proqramlaşdırılması üçün tələb olunan minimum hissələrin siyahısıdır.

Test üçün çörək lövhəsi

Atmega 8-16PU (səhvən öldürsəniz 2 və ya 3 alsanız daha yaxşı olar)

7805 5V gərginlik tənzimləyicisi

10 kohm müqavimət

100nF film kondansatörü

10μF elektrolitik kondansatör

100μF elektrolitik kondansatör

çörək taxtası üçün bəzi tellər

Windows PC 7/8/8.1/10

ISP Proqramçısı (burada USBasp istifadə edəcəyəm, Amazon -da az pula ala bilərsiniz)

Bascom AVR (burada DEMO yükləyə bilərsiniz. Bütün funksiyaların kilidi açılır, ancaq çoxlu kod üçün kifayət qədər olan yalnız 4Kb ölçüdə kod yaza bilərsiniz).

İsteğe bağlı hissələr:

Rezistorlu LED -lər

açarları basmaq

layihəyə aid hissələr

Addım 1: Bascom və Quraşdırma

Bascom və Quraşdırma
Bascom və Quraşdırma
Bascom və Quraşdırmanın quraşdırılması
Bascom və Quraşdırmanın quraşdırılması
Bascom və Quraşdırma
Bascom və Quraşdırma

Faylı yükləyin və Bascom AVR quraşdırın. Quraşdırıldıqdan sonra son onay qutusu daxil olmaqla bütün hissələrini quraşdırın.

Bundan sonra kompüteri yenidən başladın, əks halda bascom başlamayacaq.

Yenidən başladıqdan sonra baskoma başlayın.

Seçimlər -> Proqramçıya gedin və siyahıdan USBasp seçin, parametrləri qeyd edin və Bascom'u bağlayın.

Usbasp qurmaq üçün bu proqramı istifadə edin. Bundan sonra kompüterinizi yenidən başladın. İndi USBasp -ı kompüterinizə qoşun və cihaz menecerini işə salın. USBasp libusb cihazlarında görünməlidir.

Yenə Stat Bascom və yeni bir fayl yaradın. Kompüterinizə qeyd edin və klaviaturanızdakı F7 düyməsini basın.

Kompilyator boş proqramı işə salır və tərtib edir. İndi proqramçının funksionallığını yoxlaya bilərsiniz.

Proqramçı pəncərəsini başlatmaq üçün klaviaturanızdakı F4 düyməsini basın. İndi qarşılıqlı əlaqəyə başlamaq üçün çipə keçin -> müəyyən edin. USBasp -dan gələn LEDlər qısa müddətdə yanıb sönməlidir. Cihazı oxuya bilməyən çip Id FFFFFF kimi bir mesaj almalısınız. Proqramçının işlədiyi yaxşı bir əlamətdir, amma heç bir çip tapmadı.

İndi ilk dövrəni qurmağa başlaya bilərik.

Addım 2: Çipə daha yaxından baxaq

Çipə daha yaxından baxaq
Çipə daha yaxından baxaq

Çipin ucuna baxsanız, çipin arduino lövhəsinə bənzəmədiyi görünür. Əlbəttə ki, bir Atmega8 istifadə edirik və Arduino uno üzərində Atmega328 var. Ancaq Pinout təxminən eynidir, ancaq Arduino Uno lövhəsinin çipi daha çox funksiyaya malikdir. Burada sancaqlar adları. VCC və GND enerji təchizatı pinləridir.

AREF və AVCC, analogdan rəqəmsal çeviriciyə istinad gərginliyi və enerji təchizatı üçün pinlərdir.

PB 0-7 PC 0-6 PD 0-7, birdən çox adamı olan ümumi təyinatlı giriş çıxış pinləridir.

sıfırlama pimi, adın yazdığı şeydir. Çipi yenidən başlatmaq üçün. Sıfırlama adının üstündəki xətt inkar deməkdir. Bu o deməkdir ki, çipi sıfırlamaq üçün onu 0V -a endirmək lazımdır.

Aşağıdakı pinlər üçün ayrı -ayrı təlimatlar tezliklə gələcək.

RXD TXD, UART seriyalı ünsiyyət üçün hardware pinləridir.

INT0 INT1, Hardware Interrupt pinləridir

XCK /T0 UART Saat mənbəyi /Taymer /Counter0 Saat mənbəyi

XTAL /TOSC pinləri 16 MHz -ə qədər xarici kristal üçün (20 MHz -ə qədər fərqli modellər) /Daxili RTC üçün Crystal pinləri üçündür.

T1 T0 -a bənzəyir

AIN pinləri analoq müqayisə üçün nəzərdə tutulub

ICP1 T0/T1 -ə bənzəyir

OC1A, pwm timer1 kanal A üçün aparat çıxış pinidir

SS / OC2 çipi SPI / OC1B kimi, lakin kanal B üçün pin seçin

MOSI MISO SCK / OC2, hardware SPI sancaqları və proqramlaşdırma / PWM çıxış taymeri üçün pinlərdir2

ADC0 - ADC5 analoq girişlərdir

SDA SCL, I2C aparatı üçün pinlərdir

Normal çip 4, 5 V -dan 5, 5 V -a qədər işləyə bilər Atmega 8L daha aşağı gərginliklə işləyə bilər.

Hətta bu çipin Arduino Uno -nun edə bilməyəcəyindən daha çox şey edə biləcəyini görürsünüz. Ancaq Arduino da bunu edə bilər, yalnız onu proqramlaşdırmalısınız.

Addım 3: Birinci Dövrə

Birinci Dövrə
Birinci Dövrə
Birinci Dövrə
Birinci Dövrə

İndi ilk dövrə qurmağın vaxtı gəldi.

Ümumiyyətlə, ilk dövrə nədir? Doğru! Bir LED yandıraq.

LED PB0 ilə bağlıdır. Çipin yanındakı rezistor 10k Ohm -a malikdir.

LED -in yanındakı rezistor 470 Ohm -a malikdir.

İndi USBasp -ı şəkildə göstərildiyi kimi Atmega ilə bağlaya bilərsiniz.

Ancaq gücü açmadan əvvəl proqramı yazaq.

Addım 4: İlk Proqramı yazın

İlk proqramı yazın
İlk proqramı yazın

Bascom -da yeni bir fayl yaradın və aşağıdakı mətni yazın.

$ regfile "m8def.dat"

$ Crystal = 1000000 konfiqurasiya portb.0 = çıxış portb.0 = 1 gözləmə 1 portb.0 = 0 gözləmə 1 döngə

Bundan sonra klaviaturanızda F7 düyməsini basaraq tərtib edin.

İndi F4 düyməsini basaraq çipi proqramlaşdıra bilərik. Proqramçı pəncərəsi görünür. İndi çörək taxtasından gücü açmağın vaxtı gəldi. 6 ilə 12 volt arasında bir şey tətbiq etməlisiniz.

İndi chip -> avtomatik proqrama keçin. Proqramçı pəncərəsi avtomatik olaraq bağlanarsa, proqramlaşdırma uğurla başa çatdı.

LED bir saniyədə yanıb -sönməlidir.

İndi sintaksisi başa düşməmək üçün proqrama daha yaxından baxın.

$ regfile "m8def.dat"

$ kristal = 1000000

$ regfile ilə tərtibçiyə Arduino çipinin adının "m328pdef.dat" olacağını söyləyirik.

$ crystal ilə ona CPU sürətini 1MHz haqqında söyləyirik.

config portb.0 = Çıxış

yəni PB0 çıxış kimi çıxış etməlidir.

Yeri gəlmişkən, PB0 qısaltması, B bit 0 portu deməkdir. Çip bir neçə limana bölünür. Hər bir limana aydın identifikasiya üçün bir məktub verilir. və hər bir port 0 -dan 7 -ə qədər bir az. Məsələn, fərdi çıxış pinləri vasitəsi ilə çıxacaq port çıxış reyestrinə tam bir bayt yaza bilərəm.

etmək

döngə

Arduinoda boşluq döngəsi ifadəsinin mənası budur. Bu iki əmr arasındakı hər şey əbədi olaraq təkrarlanacaq. (bəzi istisnalar istisna olmaqla, sonradan bu barədə daha çox)

Portb.0 = 1

1 portb.0 = 0 gözlə 1

Burada ledin yanıb -sönməsini göstəririk.

Portb.0 = 1, çipə PB0 çıxışını 5V -ə dəyişməsini bildirir

wait 1 əmri çipin bir saniyə gözləməsinə imkan verir. Ledi daha sürətli dəyişdirmək istəyirsinizsə, gözləmə əmrini gözləmə vaxtları ilə əvəz etməlisiniz, indi bir müddətə milisaniyələrlə daxil ola bilərsiniz. waitms 500. (waitus nanosaniyələrdə gözləmək deməkdir)

Portb.0 = 0, çipə PB0 çıxışını 0V -ə dəyişməsini bildirir.

Addım 5: Girişlərdən istifadə etmək üçün bir düymə əlavə edin

Girişlərdən istifadə etmək üçün bir düymə əlavə edin
Girişlərdən istifadə etmək üçün bir düymə əlavə edin

İndi düyməyə basıldığı təqdirdə led'i yandırmaq üçün bir düymə əlavə edirik.

Düyməni şəkildə göstərildiyi kimi daxil edin.

İndi aşağıdakı proqramı yazın.

$ regfile "m8def.dat"

$ crystal = 1000000 konfiqurasiya portb.0 = çıxış konfiqurasiyası portd.7 = giriş Portd.7 = 1 pind.7 = 0, sonra portb.0 = 1 başqa portb.0 = 0 döngə

Bu proqramı çipə yükləsəniz, led yalnız düyməyə basıldıqda yanar. Bəs niyə?

Proqram sona qədər eyni şəkildə başlayır

config portd.7 = giriş. Bu o deməkdir ki, düyməyə qoşulan PD7 sancağı giriş rolunu oynayır.

Portd.7 = 1, pimi yüksək vəziyyətə gətirmir, ancaq Atmega -nın daxili çəkmə müqavimətini aktivləşdirir.

Arduino -ya alışmış olsanız if statemend bir az qəribə görünür.

if ifadəsini istifadə edirsinizsə, "sonra" ifadəsini istifadə etməlisiniz. Bu nümunədə if ifadəsi tək əmr əməliyyatları üçün istifadə olunur. Daha çox əmr istifadə etmək istəyirsinizsə, bunu belə yazmalısınız.

pind.7 = 0 olarsa

portb.0 = 1 bəzi kod bəzi kod bəzi kod başqa portb.0 = 0 əgər bitərsə

if ifadəsinin bu istifadəsi üçün sonunda "if if" ifadəsini istifadə etməlisiniz.

hələ nə vacibdir. Bəlkə də artıq görmüsünüz. girişlər portx.x ilə deyil, pinx.x ilə sorğu edilir. Bunu asanlıqla xatırlaya bilərsiniz. Çıxışlarda sözdə "o" (port) və girişlərdə "i" (pin) var.

İndi bir az ətrafında oynamaq növbənizdir.

Növbəti təlimatçım tezliklə gələcək (standart ifadələr while, case, for və dəyişənlər kimi.)

Təlimatlarımı bəyənirsinizsə və daha çoxunu şərhlərdə söyləyin.

Tövsiyə: