İçindekiler:

Bascom AVR'ye Başlarken: 5 Adım
Bascom AVR'ye Başlarken: 5 Adım

Video: Bascom AVR'ye Başlarken: 5 Adım

Video: Bascom AVR'ye Başlarken: 5 Adım
Video: Şeyma Mestoğlu Filistin yalnız değildir #gazze #kudüs #filistin #doğutürkistan #mescidiaksa 🇹🇷🇦🇿🇵🇸 2024, Temmuz
Anonim
Bascom AVR'ye Başlarken
Bascom AVR'ye Başlarken

Bu, size AVR mikro denetleyicinizi Bascom AVR ile programlamayı öğretecek bir serinin başlangıcıdır.

Bunu neden yapıyorum.

Bu serideki program örneklerinin çoğunu Arduino ile yapabilirsiniz.

Bazıları daha kolay, bazıları daha zor, ancak sonunda her ikisi de aynı denetleyicide çalışacak.

Ancak programlama şekli her geliştirme ortamında farklıdır. Arduino'nun temel fonksiyonlar dışında her şey için bir kütüphaneye ihtiyacı vardır. Bascom ayrıca kütüphanelerle de çalışır, ancak nadiren bir tane eklemem gerekir. Arduino ile donanıma özel tüm ayarlar kütüphaneler üzerinden yapılmaktadır. mikrodenetleyicinin gerçek gücü üzerinde çok az etkiniz var. Kontrolörün sahip olduğu zamanlayıcılarla başlayarak. arduino ile tekrar bir kütüphaneye ihtiyacınız var. Çalışana kadar zamanlayıcınız varsa, ayarlarınızla başka bir kitaplık çakışıyor olabilir. bascom'da, arduino tarafından işgal edilen önyükleme sektörü de dahil olmak üzere tüm donanıma ücretsiz erişiminiz vardır. örneğin, bascom'daki bazı kütüphaneler size hangi zamanlayıcıyı kullanmak istediğinizi sorar. Öte yandan, arduino kendi kendinize bir kütüphane oluşturmayı çok kolaylaştırdığından, doğal olarak onu yeni donanım ve sensörlerin genellikle doğrudan bir kütüphaneye sahip olduğu bir platform haline getiriyor. bascom'daki birçok araştırmayla sıklıkla ilişkilendirilen şey ve bir kütüphanenin normalde üstleneceği işlevler daha sonra özenle program koduna dahil edilmelidir. ama iyi haber bascom topluluğu da çok büyük, bu yüzden her fikir için bir çözüm var.

Bu nedenle, kısmen projeye, bir geliştirme ortamı için neyin kullanıldığına ve kısmen de programlama yapan kişinin teknik bilgisine bağlıdır.

ama neden bu diziyi yapıyorum? bir yandan çok para tasarrufu sağlar. Her proje için bir arduino kartı almak zorunda değilim. Örneğin: İsimsiz bir Arduino uno, üzerinde bulunan denetleyicinin maliyeti yaklaşık 12 €, kararlı bir işlev için gereken minimum devre ile sadece 2,5 €, maliyeti 4 € civarındadır. Öte yandan, desteklenen tüm avr çipleri seçeneklerine sahipsiniz. atmegas 8 ila 256 ve attiny 8 ila 2313 ve hakkında deneyimim olmayan birçok xmega türü. Örneğin bir eli tanıyabilen bir servo ve ultrasonik sensör kullanmak ve ardından bir çöp kutusunun kapağını açmak istiyorsanız, mümkün olan en küçük çipi kullanabilirsiniz. Yani ikinci bir dil öğrenmek için birçok neden var.

o zaman başlayalım

Gereçler

Bu, çipin kararlı çalışması ve programlama için gerekli minimum parçaların bir listesidir.

Test için ekmek tahtası

Atmega 8-16PU (yanlışlıkla öldürürseniz 2 veya 3 almanız daha iyi olur)

7805 5V voltaj regülatörü

10Kohm direnç

100nF film kapasitör

10µF elektrolitik kapasitör

100µF elektrolitik kapasitör

breadboard için bazı teller

Windows PC 7/8/8.1/10

ISP Programcısı (burada az parayla amazon'dan satın alabileceğiniz USBasp'ı kullanacağım)

Bascom AVR (buradan bir DEMO indirebilirsiniz. Tüm işlevlerin kilidi açıktır, ancak bir çok kod için yeterli olan 4Kb boyutuna kadar kod yazabilirsiniz).

İsteğe bağlı parçalar:

Dirençli LED'ler

basmalı anahtarlar

projeye özel parçalar

Adım 1: Bascom Kurulumu ve Kurulum

Bascom Kurulumu ve Kurulum
Bascom Kurulumu ve Kurulum
Bascom Kurulumu ve Kurulum
Bascom Kurulumu ve Kurulum
Bascom Kurulumu ve Kurulum
Bascom Kurulumu ve Kurulum

Dosyayı indirin ve Bascom AVR'yi yükleyin. Kurulumdan sonra son onay kutusu dahil tüm parçalarını yükleyin.

Bundan sonra PC'nizi yeniden başlatın, aksi takdirde bascom başlamaz.

Yeniden başlatmanın ardından bascom'u başlatın.

Seçenekler -> Programlayıcı'ya gidin ve listeden USBasp'ı seçin, ayarları kaydedin ve Bascom'u kapatın.

Usbasp'ı kurmak için bu Programı kullanın. Bundan sonra, PC'nizi yeniden başlatın. Şimdi USBasp'ı PC'nize bağlayın ve cihaz yöneticisini başlatın. USBasp, libusb cihazlarında görünmelidir.

Stat Bascom'u tekrar aratın ve yeni bir dosya oluşturun. Bilgisayarınıza kaydedin ve klavyenizdeki F7 düğmesine basın.

Derleyici boş programı başlatır ve derler. Artık programlayıcının işlevselliğini test edebilirsiniz.

Programlayıcı penceresini başlatmak için klavyenizdeki F4 düğmesine basın. Şimdi çipe gidin -> bir etkileşim başlatmak için tanımlayın. USBasp'den gelen LED'ler şimdi kısa süre yanıp sönmelidir. Chip Id FFFFFF cihazı okuyamadı gibi bir mesaj almalısınız. Bu, Programcının çalıştığına dair iyi bir işaret ama çip bulamadı.

Şimdi ilk devreyi oluşturmaya başlayabiliriz.

Adım 2: Çipe Daha Yakından Bakalım

Chip'e Daha Yakından Bakalım
Chip'e Daha Yakından Bakalım

Çipin pin çıkışına bakarsanız, çipin arduino kartıyla hiçbir benzerliği yok gibi görünüyor. Elbette, bir Atmega8 kullanıyoruz ve Arduino uno'da bir Atmega328 var. Ancak Pinout neredeyse aynı ama Arduino Uno kartının çipinin daha fazla işlevi var. İşte pinlerin isimleri. VCC ve GND, güç kaynağı pinleridir.

AREF ve AVCC, analogdan dijitale dönüştürücü için referans voltajı ve güç kaynağı pinleridir.

PB 0-7 PC 0-6 PD 0-7, çoklu kullanımlı genel amaçlı giriş çıkış pinleridir.

sıfırlama pimi, adın söylediği şeydir. Çipi yeniden başlatmak için. Sıfırlama adının üzerindeki satır, olumsuzlama anlamına gelir. Bu, çipi sıfırlamak için onu 0V'a çekmeniz gerektiği anlamına gelir.

Aşağıdaki pinler için yakında ayrı talimatlar gelecek.

RXD TXD, seri iletişim UART için donanım pinleridir.

INT0 INT1 Donanım Kesintisi pinleridir

XCK /T0 UART Saat kaynağı / Zamanlayıcı/Sayaç0 Saat kaynağı

XTAL / TOSC pinleri, 16 MHz'e kadar harici bir kristal içindir (20 MHz'e kadar farklı modeller) / Dahili bir RTC için Kristal pinler

T1, T0'a benzer

AIN pinleri analog karşılaştırıcı içindir

ICP1, T0/T1'e benzer

OC1A, pwm timer1 kanal A için donanım çıkış pinidir

SPI / OC1B gibi ama kanal B için SS / OC2 çip seçme pini

MOSI MISO SCK/ OC2, donanım SPI pinleri ve programlama /PWM çıkış timer2 pinleridir

ADC0 - ADC5 analog girişlerdir

SDA SCL, donanım I2C için Pinlerdir

Normal çip 4, 5V ile 5, 5V arasında çalışabilir, Atmega 8L çok daha düşük Voltaj ile çalışabilir.

Görüyorsunuz, bu çip bile bir Arduino Uno'nun yapamayacağından daha fazlasını yapabilir. Ama Arduino da yapabilir, sadece programlamanız gerekir.

Adım 3: İlk Devre

İlk Devre
İlk Devre
İlk Devre
İlk Devre

Şimdi ilk devrenizi kurma zamanı.

Tipik olarak ilk devre nedir? Doğru! Bir LED'i yanıp sönelim.

LED, PB0 ile bağlanır. Çipin yanındaki direnç 10k Ohm'a sahiptir.

LED'in yanındaki direnç 470 Ohm'a sahiptir.

Artık USBasp'ı resimde gösterildiği gibi Atmega'ya bağlayabilirsiniz.

Ama gücü açmadan önce programı yazalım.

Adım 4: İlk Programı Yazın

İlk Programı Yazın
İlk Programı Yazın

Bascom'da yeni bir dosya oluşturun ve aşağıdaki metni yazın.

$regfile "m8def.dat"

$kristal = 1000000 yapılandırma portb.0 = çıkış yapmak portb.0 = 1 bekle 1 portb.0 = 0 bekle 1 döngü

bundan sonra klavyenizde F7 tuşuna basarak derleyin.

Şimdi F4'e basarak chipi programlayabiliriz. Programlayıcı penceresi görünür. Şimdi devre tahtasından gücü açma zamanı. 6 ile 12 Volt arasında bir şey uygulamalısınız.

Şimdi çip -> otomatik programa gidin. Programlayıcı penceresi otomatik olarak kapanırsa, programlama başarılı olmuştur.

LED bir saniye frekansta yanıp sönmelidir.

Şimdi sözdizimini anlamak için programa daha yakından bakın.

$regfile "m8def.dat"

$kristal = 1000000

$regfile ile, derleyiciye kullanılan çipin türünü, Arduino çipinin adının "m328pdef.dat" olacağını söyleriz.

$kristal ile ona işlemci hızını yaklaşık 1MHz söylüyoruz.

config portb.0 = Çıkış

bu, PB0'ın çıktı olarak hareket etmesi gerektiği anlamına gelir.

Bu arada, PB0 kısaltması, B bağlantı noktası bit 0 anlamına gelir. Yonga birkaç bağlantı noktasına bölünmüştür. Her bağlantı noktasına net tanımlama için bir mektup verilir. ve her port pini 0'dan 7'ye kadardır. Örneğin, port çıkış yazmacına, ayrı port pinleri aracılığıyla çıkacak olan tam bir bayt yazabilirim.

yapmak

döngü

Arduino'da void loop ifadesinin anlamı budur. Bu iki komut arasındaki her şey sonsuza kadar tekrarlanacak. (bazı istisnalar dışında ancak daha sonra bunun hakkında daha fazlası)

Portb.0 = 1

1 bekle portb.0 = 0 1 bekle

Burada ledin yanıp sönmesini sağlıyoruz.

Portb.0 = 1 çipe PB0 çıkışını 5V olarak değiştirmesini söyler

wait 1 komutu çipin bir saniye beklemesine izin verir. Led'i daha hızlı değiştirmek istiyorsanız, wait komutunu waitms ile değiştirmelisiniz, şimdi şimdi milisaniye cinsinden bir süre girebilirsiniz, örn. waitms 500. (waitus, nanosaniye cinsinden beklemek anlamına gelir)

Portb.0 = 0, çipe PB0 çıkışını 0V olarak değiştirmesini söyler.

Adım 5: Girdileri Kullanmak için Bir Düğme Ekleyin

Girişleri Kullanmak için Bir Düğme Ekle
Girişleri Kullanmak için Bir Düğme Ekle

Şimdi butona basıldığında ledin yanması için bir buton ekliyoruz.

Düğmeyi resimde gösterildiği gibi yerleştirin.

şimdi takip programını yazın.

$regfile "m8def.dat"

$kristal = 1000000 konfigürasyon portb.0 = çıkış konfigürasyonu portd.7 = giriş Portd.7 = 1 yap, eğer pind.7 = 0 ise portb.0 = 1 değilse portb.0 = 0 döngüsü

O programı chipe yüklerseniz led sadece butona basıldığında yanar. Ama neden?

program sonuncusu gibi aynı şekilde başlar

config portd.7 = giriş. Yani buton ile bağlanan PD7 pini giriş görevi görür.

Portd.7 = 1 pini yüksek konuma getirmez ancak Atmega'nın dahili pull up direncini etkinleştirir.

Arduino'ya alışkınsanız, if ifadesi biraz garip görünüyor.

if ifadesini kullanırsanız, "then" ifadesini kullanmanız gerekir. Bu örnekte, tek komut işlemleri için if ifadesi kullanılır. Daha fazla komut kullanmak istiyorsanız, bu şekilde yazmanız gerekir.

pind.7=0 ise

portb.0=1 bazı kodlar bazı kodlar başka portb.0 = 0 ise biter

if ifadesinin bu kullanımı için sonunda "if if" ifadesini kullanmanız gerekir.

ne hala önemli. Belki de zaten görmüşsünüzdür. girişler portx.x ile değil pinx.x ile sorgulanır. Bunu kolayca hatırlayabilirsiniz. Word'de çıkışlarda "o" (port) ve girişlerde "i" (pin) bulunur.

Şimdi biraz oynama sırası sizde.

Bir sonraki talimatım yakında gelecek (while, select case, for ve değişkenler gibi standart ifadeler.)

Eğitilebilirliğimi beğendiyseniz ve daha fazlasını istiyorsanız, yorumlarda bana bildirin.

Önerilen: