‘ARM STM32F4DISCOVERY Programlama…’ Kategorisi için Arşiv

AdsızGelişmiş bilgisayarların çoğunda bulunan bir yapı olan doğrudan bellek erişimi (DMA), CPU’dan bağımsız olarak verileri bir yerden başka bir yere kopyalama işlemi yapılmasına olanak sağlayan bir yapıdır. Mikrodenetleyiciler de aslında komple bir bilgisayar oldukları için, gelişmiş mikrodenetleyicilerin içerisinde de DMA bulunmaktadır.  Özellikle yoğun işlemlerin yapıldığı bir projede CPU’nun bir de bellekteki verileri çevresel birimlere , çevresel birimlerdeki verileri başka çevresel birimlere, çevresel birimlerdeki verileri belleğe veya belleğin bir kısmından başka bir kısmına veri taşıma işlemleri ile uğraşması işlemcinin zaman kaybetmesine yol açacaktır.  Bu zaman kaybını önlemek ve işlemciyi veri kopyalama işlemleri ile uğraştırmamak amacıyla DMA kontrolcüsü kavramı ortaya çıkmıştır. Bu yapı mikrodenetleyiciler içerisinde bulunur ve kullanıcı istekleri doğrultusunda programlanarak verilerin istenilen kaynaktan, istenilen hedefe aktarılması işlemini gerçekleştirir. (daha&helliip;)

9 Bu yazıda hobiciler tarafından çok kullanılan RC servo motorların STM32F103C8 mikrodenetleyici ile kontrol edilmesini inceleyeceğiz. RC servo motorlar piyasada pek çok marka ve model altında bulunmaktadır. RC servo motorun içerisinde bir adet mikrodenetleyici bulunuyor ve bu mikrodenetleyici gelen sinyalleri değerlendirip motoru döndürüyor. Motorun ne kadar döndüğü bilgisini ise mile bağlı bir potansiyometrenin sağladığı geribesleme ile alıyor.  Ben de elime geçen Tower Pro SG90 isimli iki adet servo motoru kontrol etmek istedim. Bu motor 9g ağırlığında 1.8 kgf/cm güce sahip ve 0.1s/60 derece hıza sahip.  4.8~5V besleme ile çalışıyor. (daha&helliip;)

imagesPek çok uygulamada sıcaklık ve nem değerlerinin birlikte ölçülmesi gerekmektedir. Örneğin tarım işletmeleri, mantar üretim çiftlikleri, soğuk hava depoları, tütün, kağıt, hububat, baharat depoları, seralar, çimlendirme odaları, kuluçka makinaları gibi yerlerde sıcaklık ve nemin birlikte ölçülmesi gerekmektedir.

Sıcaklık ve nem ölçen sensörlerden belkide en popüler olanı Sensirion firmasının üretmiş olduğu SHT11 isimli sensördür. Bu sensörün ölçüm hassasiyeti yüksek olmakla birlikte fiyatı yüksektir. Bu sensöre alternatif olarak üretilmiş düşük fiyatlı fakat hassasiyet değerleri SHT11 kadar iyi olmayan çin ürünü DHT11 sensörü de piyasada kendisine oldukça yaygın bir kullanım alanı bulmuştur. (daha&helliip;)

admin-ajax.php Cihazların kendilerine ait benzersiz kimlik numaralarının var olması bazı uygulamalarda olmazsa olmaz bir özelliktir. Bu numaralar tasarımcı tarafından belirlenebileceği gibi, bazı çip üreticileri halihazırda ürünlerine benzersiz kimlik numaraları atamaktadırlar.

STM32 mikrodenetleyicilerin güzel donanım özelliklerinden birisi de 96 bitlik (12 byte) unique id’ye (benzersiz kimlik numarasına) sahip olmalarıdır.  Unique ID, nesnelerin interneti uygulamaları, uzaktan sayaç okuma işlemleri, akıllı ev sistemleri, telemetri sistemleri gibi uygulamalarda oldukça işe yarayacak şekilde kullanılabilirler.

STM32F407 mikrodenetleyicisine ait referans manuelinde Unique ID bilgisinin 0x1FFF7A10 adresinden başladığı ve her biri (daha&helliip;)

AdsızUltrasonik sensörler ilk defa ikinci dünya savaşında İngilizlerin, Alman uçaklarını ve denizaltılarını tesbit edebilmesi amacıyla geliştirilmişler ve günümüze kadar pek çok alanda kullanılagelmişlerdir. Çalışma prensipleri bir ultrasonik (insan kulağının duyamayacağı büyüklükte frekanslara sahip ses dalgaları) hoparlörden çıkan ses sinyalinin, bir cisme çarpıp geri dönmesi ve bu geri dönen sinyalin bir ultrasonik mikrofon tarafından algılanması arasında geçen sürenin ölçülerek mesafenin hesaplanması ilkesine dayanır.  Sesin atmosferdeki hızı 340m/sn’dir.  Yani bir kaynaktan çıkan ses 340 metre uzaklıktaki bir cisme 1 saniye sonra ulaşır ve bu cisimden yansıyıp geri dönmesi de 1 saniye alır. (daha&helliip;)

AdsızStm32f407 mikrodenetleyicisi içerisinde dahili sıcaklık sensörü bulunmaktadır. Bu sensör işlemcinin analog-dijital çevirici biriminin 16. kanalına bağlı bulunmaktadır. Aynı kanal istenilirse işlemcinin Vbat ucuna da yazılımsal olarak bağlanıp, tasarladığımız sistem batarya ile çalıştırılıyorsa, batarya gerilimini ölçmek için de kullanılabilir.  Sıcaklık sensörünün analpg dijital çeviricinin 1. kanalına bağlanabilmesi için ADC_CCR kaydedicisinin TSVREFE isimli bitinin set edilmesi gereklidir.  Bu uygulamada sensörden okunan değer USB Hid kütüphanesi kullanılarak PC’ye gönderilecek ve derleyicinin tools sekmesi altında bulunan hid terminalden gözlemlenebilecektir.

STM32f407 mikrodenetleyicisinin referans manueli incelenirse, sıcaklık sensöründen okunan değerin hesaplanabilmesi için bir formül verildiği görülür. (daha&helliip;)

Bu dersimizde STM32F4DISCOVERY kiti üzerindeki kullanıcı butonunu (mavi renkli olan, diğeri işlemciyi resetliyor) kullanarak, kit üzerindeki ledlerde binary sayma işlemi geçekleştireceğiz. Ayrıca işlemcimizi mümkün olan en yüksek hızında yani 168MHZ’de koşturacağız. Bunun için işlemcimizin datasheetine göz atmakta fayda var. İşlemcinin  dökümanında blok diyagram ile gösterilen ve ismi clock tree olan şemaya göre saat frekasnımızı ayarlayacağız.  Ama isterseniz ilk olarak Kodlarımıza bir göz atalım ve giriş-çıkış işlemlerimizin nasıl yapılacağını öğrenelim. Bu yazımızda giriş çıkış işlemlerini mikroC’nin kütüphaneleri ile değil,  datasheette gösterilen registerlar ile yapacağız.

Kitimizin devre şemasına baktığımızda butonun pull-up şeklinde bağlanmış olduğunu görüyoruz. Yani butona basıldığında PORTA’nın 0. pinini 1’e çekiyor. Buna göre yazdığımız kodlarımıza bir göz atalım: (daha&helliip;)

   STM32F4DISCOVERY kitimizde bulunan mikrodenetleyici olan STM32f407VG’nin ne yazıkki proteusta herhangi bir modeli bulunmuyor. Bu yüzden ISIS ortamında yazdığımız programları simüle etme gibi bir şansımız yok. Bu yüzden ya bu işlemciyi barındıran bir kite sahip olacağız, ya da kendimiz bu işlemciyi bir kart üzerine monte ederek kendimize bir geliştirme boardu tasarlayacağız. Şu anda  benim elimde STM32F4DISCOVERY kiti bulunduğu için örneklerimi bu kit üzerinden vereceğim.

İlk uygulamamız mikrodenetleyici programlamaya başlangıç aşamasında klasikleşmiş olan led blinking uygulaması olacak. Unutmayalım her şey bir ledi yakıp söndürmek ile başlar bu dünyada. . Dersimizde giriş çıkış işlemlerini mikroC’nin bize sunmuş olduğu giriş çıkış kütüphanelerini kullanarak işlem yapacağız. (daha&helliip;)

 ARM aslında işlemci mimarisi tasarlayan bir şirket ve bu şirketin tasarlamış olduğu mimarileri alıp kullanan 200’ün üzerinde farklı şirket var. Bunlardan birisi de ST. ST ARM mimarisine sahip işlemci çekirdeğinin üzerine eklediği çevrebirimleri ile çok ucuz ve çok yetenekli mikrodenetleyiciler üretmekte. Biz de son günlerde piyasada iyice yer edinmeye başlayan ARM tabanlı mikrodenetleyicilere bir yerinden başlamanın vaktinin geldiğini düşündük. Hazır Mikroelektronika da ARM tabanlı mikrodenetleyiciler için bir derleyici çıkarmışken biz de hızlıca bir giriş yapalım.

Öncelikle Mikroelektronikanın üretmiş olduğu ARM derleyicisinden bahsedecek olursak henüz 2.50 versiyonundaki bu derleyicinin emekleme ile yürüme arasında bir yerlerde olduğunu söyleyebiliriz. Aynı derleyici  hem TI-Stellaris, hem de ST’nin Cortex™-M3 and Cortex™-M4 mikrodenetleyicilerini desteklemekte. Bence bu durum kütüphanede bulunan örneklerin öğrenilmesini güçleştiriyor. Derleyicilerin üreticiye göre ayrılması isteğimi belirttiğim, mikroelektronika yetkililerine attığım bir maile cevap olarak, pek çok kişiden aynı isteği duyduklarını ve ileride derleyicileri ayırma yoluna gidebilecekleri bilgisini almış bulunuyorum. Bu derleyicilere Philips-NXP firmasının ürettiği LPC serisi mikrodenetleyiciler de girerse , işlemciye göre derleyici ayırma konusu kesin gibi görülüyor.

Derleyiciyi kısaca incelemeye çalışırsak , şu anda ücretsiz olarak mikroe sayfalarından indirilebilir durumda olduğunu söyleyebiliriz. Bu derleyici ücretsiz versiyonunda 8Kb’a kadar olan programları derleyebiliyor. Bu ilk aşamada derleyiciyi denemek isteyenler için oldukça yeterli bir miktar bence. MikroC’nin önceki derleyicilerine aşina olanlar bu derleyiciye de yabancılık çekmeyecektir. (daha&helliip;)