- Donanım Kurulumu ve Gereksinimi
- N76E003 LED ve Basma Düğmesi Arayüz Devresi
- N76E003 Pin-Out Diyagramı
- N76E003 için Basit GPIO Kontrol Programı
- N76E003'ün Programlanması ve Çıkışın Doğrulanması
Önceki eğitimimizde, N76E003 kılavuzuna başlarken temel bir LED yanıp sönen program kullandık, Keil IDE'yi nasıl yapılandıracağımızı ve nuvoton mikrodenetleyici ünitesi N76E003'ü programlamak için ortamı nasıl kuracağımızı zaten öğrendik. Biraz daha ilerlemenin ve ek donanımı kontrol etmek için temel GPIO arayüzünü kullanmanın zamanı geldi. İlgileniyorsanız, aşağıda listelenen diğer mikro denetleyici GPIO öğreticilerine de bakabilirsiniz.
- CubeMx ve TrueSTUDIO ile STM32 Nucleo64 - LED kontrolü
- Kozmik C GPIO Kontrollü STM8S
- MPLABX LED Blink Eğitimi ile PIC
- Code Composer Studio ile MSP430 - Basit LED Kontrolü
Önceki eğitimimizden bu yana, çıkış olarak bir IO pini kullanarak yanıp sönmek için yalnızca bir LED kullandık. Bu eğitimde, bir giriş olarak başka bir IO pinini nasıl kullanacağımızı ve ek bir LED'i nasıl kontrol edeceğimizi öğreneceğiz. Fazla zaman kaybetmeden ne tür bir donanım kurulumuna ihtiyacımız olduğunu değerlendirelim.
Donanım Kurulumu ve Gereksinimi
Bir anahtarın giriş olarak kullanılması gerektiğinden, ihtiyacımız olan ilk şey bir basma düğmesidir. Ayrıca, bu düğme ile kontrol edilecek ek bir LED'e ihtiyacımız var. Bu ikisinin dışında, LED akımını sınırlamak için bir direnç ve buton boyunca çekme amaçları için ek bir direnç de gerekiyor. Bu, şematik bölümde daha fazla gösterilecektir. İhtiyaç duyduğumuz bileşenler -
- Bir basma düğmesi (özellikle her türlü anlık anahtar - Dokunsal anahtar)
- LED'in herhangi bir rengi
- Aşağı çekme amaçlı 4.7k direnç
- 100R direnç
Yukarıdaki bileşenlerin dışında, N76E003 mikro denetleyici tabanlı geliştirme kartına ve Nu-Link Programlayıcısına ihtiyacımız var. Ek olarak, tüm bileşenleri aşağıda gösterildiği gibi bağlamak için devre tahtası ve bağlantı kabloları da gereklidir.
N76E003 LED ve Basma Düğmesi Arayüz Devresi
Aşağıdaki şemada görebileceğimiz gibi, geliştirme kartının içindeki Test LED'i 1.4 numaralı bağlantı noktasına ve 1.5 numaralı bağlantı noktasına ek bir LED bağlanmıştır. Rezistör R3, LED akımını sınırlamak için kullanılır.
Pin 1.6'da, SW adlı bir düğme bağlanmıştır. Düğmeye her basıldığında, pim yükselecektir. Aksi takdirde, 4.7K aşağı çekme direnci R1 ile düşük olacaktır. Bu konsepte yeniyseniz, yukarı çekme ve aşağı çekme dirençleri hakkında daha fazla bilgi edinebilirsiniz.
Pim ayrıca programcı tarafından erişilen programla ilgili bir pindir. Program verilerini göndermek için kullanılır. Bununla birlikte, bu pinleri seçmenin arkasındaki nedeni göreceğiz ve N76E003'ün pin eşlemesi hakkında adil bilgiler alacağız.
N76E003 Pin-Out Diyagramı
N76E003 pin diyagramı görüntü-aşağıda görüldüğü
Gördüğümüz gibi, her bir pinin birden fazla işlevi vardır ve farklı amaçlar için kullanılabilir. Bir örnek alalım. Pim 1.7, bir kesme veya analog giriş olarak veya genel amaçlı bir giriş-çıkış işlemi olarak kullanılabilir. Bu nedenle, herhangi bir pin I / O pinleri olarak kullanılırsa, ilgili işlevsellik kullanılamayacaktır.
Bundan dolayı LED çıkış pini olarak kullanılan pim 1.5, PWM ve diğer işlevlerini kaybedecektir. Ancak bu bir problem değildir çünkü bu proje için başka bir işlevsellik gerekli değildir. Kolay bağlantı için GND ve VDD pinlerinin en yakın kullanılabilirliği nedeniyle çıkış olarak pin 1.5 ve giriş olarak pin 1.6 seçilmesinin nedeni.
Ancak bu mikrodenetleyicide 20 pimden 18 pim GPIO pini olarak kullanılabilir. Pin 2.0, özel olarak Reset girişi için kullanılır ve çıkış olarak kullanılamaz. Bu pin dışında tüm pinler aşağıda açıklanan modda yapılandırılabilir.
Veri sayfasına göre, PxM1.n ve PxM2.n, G / Ç portunun kontrol çalışmasını belirlemek için kullanılan iki kayıttır. Şimdi, bir GPIO portu yazmaya ve okumaya gelmek tamamen farklı bir şey. Bir bağlantı noktası kontrol yazmacına yazmak bağlantı noktasının mandallama durumunu değiştirdiğinden, bağlantı noktasının okunması mantık durumunun durumunu alır. Ancak bir bağlantı noktasını okumak için bir giriş moduna ayarlanmalıdır.
N76E003 için Basit GPIO Kontrol Programı
Bu eğitimde kullanılan programın tamamı bu sayfanın alt kısmında bulunabilir, kodun açıklaması aşağıdaki gibidir.
Pimi giriş olarak ayarlama
Önce girişle başlayalım. Daha önce tartışıldığı gibi, bir bağlantı noktasının durumunu okumak için giriş olarak ayarlanması gerekir. Bu nedenle, giriş anahtarı pinimiz olarak P1.6'yı seçtiğimiz için, aşağıdaki kod parçacığı satırıyla bunu gösterdik.
#define SW P16
Aynı pinin giriş olarak ayarlanması gerekir. Bu nedenle, kurulum fonksiyonunda, pin aşağıdaki satır kullanılarak giriş olarak ayarlanır.
geçersiz kurulum (void) {P14_Quasi_Mode; P15_Quasi_Mode; P16_Input_Mode; }
Bu satır P16_Input_Mode; pin bitini P1M1- = SET_BIT6 olarak ayarlayan "BSP include kitaplığında" Function_define.h başlık dosyasında tanımlanır ; P1M2 & = ~ SET_BIT6 . SET_BIT6 aynı başlık dosyasında tanımlanır yapıldığı haliyle
#define SET_BIT6 0x40
Pinleri çıktı olarak ayarlama
Giriş pini ile aynı şekilde, yerleşik Test LED'i ve harici LED1 tarafından kullanılan çıkış pini de ilgili PIN'lerle kodun ilk bölümünde tanımlanır.
#define Test_LED P14 #define LED1 P15
Bu pinler, aşağıdaki satırlar kullanılarak kurulum işlevinde bir çıkış olarak ayarlanır.
geçersiz kurulum (void) { P14_Quasi_Mode; // Çıktı P15_Quasi_Mode; // Çıktı P16_Input_Mode; }
Bu satırlar aynı zamanda pim bitini P1M1 & = ~ SET_BIT4 olarak ayarladığı Function_define.h başlık dosyasında da tanımlanır . P1M2 & = ~ SET_BIT4 . SET_BIT6 aynı başlık dosyasında tanımlanır yapıldığı haliyle
#define SET_BIT4 0x10
Sonsuz While döngüsü
Bir Donanım, güce bağlıysa ve sürekli çıktı vermesi gereken mükemmel çalışıyorsa, uygulama asla durmaz. Sonsuz zamanlar için aynı şeyi yapar. İşte sonsuz bir süre döngüsünün işlevi geliyor. While döngüsü içindeki uygulama sonsuz çalışır.
while (1) { Test_LED = 0; sw_delay (150); Test_LED = 1; sw_delay (150); eğer (SW == 1) {LED1 = 0; } başka {LED1 = 1; }}}
Yukarıdaki while döngüsü, sw_delay değerine göre led'i yanıp söner ve ayrıca SW'nin durumunu kontrol eder. Anahtara basılırsa, P1.6 yüksek olur ve bu nedenle basıldığında okuma durumu 1 olur. Bu durumda, anahtara basılır ve P1.6 portu yüksek kalır, LED1 yanacaktır.
N76E003'ün Programlanması ve Çıkışın Doğrulanması
Bizim de N76E003 başlarken öğretici, biz sadece bizim kurulu programlamak için burada da aynı adımları tekrar böylece, zaten N76E003 programlamak öğrendi. Kod başarıyla derlendi ve 0 uyarı ve 0 Hata döndürdü ve Keil tarafından varsayılan yanıp sönme yöntemi kullanılarak yanıp söndü.
Yukarıdaki görselde görebileceğiniz gibi butona bastığımda harici ledimiz yanıyor. Projenin tam çalışması aşağıda bağlantısı verilen videoda bulunabilir. Öğreticiden keyif aldığınızı ve herhangi bir sorunuz varsa faydalı bir şeyler öğrendiğinizi umuyoruz, aşağıdaki yorum bölümüne bırakın. Diğer teknik sorular sormak için forumlarımızı da kullanabilirsiniz.