Yeni başlayanlar için Pic Microkontroller ile nasıl başlanır
Table of Contents
PIC Microdes Nedir?
PIC mikrokontroller, elektronik cihazlarda özel kontrol görevlerini yerine getirmek için tasarlanmış küçük, entegre devrelerdir. Mikroçip Teknolojisi tarafından geliştirilen, PIC (Peripheral Interface Controller) mikro kontroller, Harvard mimarisine dayanmaktadır, bu tasarım, zamanlayıcılar, ADCs ve seri iletişim modülleri gibi çeşitli periferiklere dayanmaktadır.
PIC mikrokontrollü aile, 8-bit cihazlardan, PIC10, PIC12, PIC16 ve PIC18 serisi 16-bit (PIC24, dsPIC) ve 32-bit (PIC32) varyantları için, 8bit veya PIC16 serisi basit ve kabiliyetlerin doğru dengesi sunar.
PIC Microkontroller Neden Diğer Platformlar Üzerinde Seçilir?
Arduino gibi platformlar, gömülü sistemler için giriş bariyerini düşürdü, PIC mikrokontroller, profesyonel ortamlarda daha derin bir donanım ve bilgisayar anlayışı isteyenler için farklı avantajlar sunar. PIC mikro kontroller doğrudan kayıtlarla, biraz manipülasyon ve kesintiye uğratılır, mikro kontroller mimarisinde güçlü bir temel oluşturur. Ayrıca, MPLAB X IDE ile olgun bir gelişim ekosistemi oluştururlar (XC8, x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
Ancak, öğrenme eğrisi Arduino ile kıyaslanamaz. Ön yüklemeden önce kaldırılmamış değildir; dış programcıya ihtiyacınız vardır (PICkit veya ICD). Ancak bu yüksek ücretli yatırım size zeminden mikro kontrol programlamanın temellerini öğretir.
Temel Araçlar ve Bileşenleri
İlk kod hattını yazmadan önce, doğru araçları bir araya getirmeniz gerekir. İşte bir başlangıç için kapsamlı bir liste:
Mikrokontroller Seçme
- [FONT16F877A - Classic 40-pin çip, yaygın olarak mevcut, geniş kitleler.
- [FONT=0)PIC18F4620) - daha fazla program bellek ve gelişmiş mimari ile 40 tane değişkeni geliştirdi.
- [FONT12F683 - 8pin DIP çok basit projeler için.
Geliştirme Kurulu veya Ekmekboard
- [FONT=0)Starter Boards[[Dönetici: 1 ) – Microchip's Curiosity Board veya PICDEM Lab II mikro kontroller, programcılar ve temel I/O.
- [FONT=0)Breadboard + Power Supply[Dönetici: standart 830 nokta ekmek dolabı, 5V düzenlenmiş bir güç tedariki (örneğin, LM7805) ve UART için USB-to-serial adaptör.
Programr / Debugger
- [FONT=0]PICkit 3[[Dönetici:2) veya [[Dönetici 4[Dönetici:0))[MICkit 3[Dönetici:0))))) - Resmi Microchip debuggers with Programming through ICSP (In-Circuit Seri Programlama).
- [FONT=0)MPLAB Snap - Low-cost alternatifi.
- USB bağlantı için, programcınızın USB-to-ICSP'yi desteklediğini sağlayın (3V veya 5V hedefi için ayrı bir adaptör).
Yazılım Yazılım Yazılım Yazılım Yazılım Yazılım Yazılım Yazılım Yazılım Yazılım Yazılım Yazılım Yazılım Yazılım Yazılım Yazılım Yazılım Yazılım Yazılım Yazılım Yazılım Yazılım Yazılım
- [FONT:0]MPLAB X IDE) – NetBeans'a dayanan entegre gelişim ortamı.
- [FONT:0]XC8 Compiler) - Free (With limited optimizasyon) C derr for 8-bit PICs için.
- Seçmeli: MPLAB Code Configurator (MCC) – ilkizasyon kodu oluşturmak için Grafiksel araç.
Temel Elektronik Bileşenleri
- LEDler (kırmızı, yeşil)
- Direnciler (220ULLY için LED, 10kULL)
- Push düğmeleri (tactile anahtarları)
- Capacitors (100nF decoupling, 10μF toplu)
- 20MHz kristal osilatör + iki 22pF kapasitörler (içiyi kullanmasanız)
- Ekmek dolabı teller (erkek-to-male, erkek-female)
Geliştirme Çevrenizi Ayarlayın
MPLAB X IDE ve XC8'i almak için bu adımları izleyin:
- [[0)Download and install MPLAB X IDE[[Dönetici:0) Microchip web sitesinden sürüm seçin. İşletim sisteminiz için sürüm seçin (Windows, Mac, Linux).
- [FONT:0)Install XC8 derr[Dön 1: 1] – Ücretsiz versiyon seçin; lisans olmadan -O1'e optimizasyon seviyelerini sunar.
- Programcınızı (PICkit 4) USB aracılığıyla bağlayın. Herhangi bir gerekli sürücüyü yükleyin (genellikle MPLAB X dahil).
- Hedef yönetim kurulu veya ekmek dolabınızı 5V DC ile güçleyin. Programr ve hedef arasındaki ortak zemini sağlayın.
- ICSP konektörü: PICkit 4 pin 1 (MCLR/VPP) PIC MCLR pin; pins 2, 3, 4 (VD, GND, PGD, PGC) uygun bir şekilde.
- MPLAB X. Go toETHFLT:0)Tools > Seçenekler > gömülü [[Dönemli: 1) ve derleyici yolu doğruyu doğruluyor (XC8 otomatik olarak otomatikleştirilmelidir).
İlk Programınızı Yazmak: Bir LED
gömülü sistemlerin klasik “Hello World” bir LED disktir. Sizi proje oluşturma, yapılandırma bitleri, GPIO kontrolü ve gecikme döngüleri ile tanıştırır. Aşağıda bir adım adım adım adım kılavuzu vardır.
Adım 1: Yeni Bir Proje Oluştur
- MPLAB X'de, [[0)File > Yeni Proje).
- [0]Mikroçi ve İdlit; Standalone Project).
- Cihazınızı seçin (örneğin, PIC16F877A).
- Programcınızı seçin (örneğin, PICkit 4).
- Derleyici (XC8) seçin.
- Proje adı (örneğin, “Blink LED”).
2. Adım: Yapı Bits'i Anlayın
Yapın biraz, osilatör tipini, saatdog zamanı ve güç toplama zamanılayıcısını ayarlar.In PIC16F877A, genellikle onları bir başlıkta veya " pragma ( yapılandırın)" veya " configure" kullanıyorsanız.
#pragma config FOSC = HS // High-speed oscillator (crystal)
#pragma config WDTE = OFF // Watchdog Timer disabled
#pragma config PWRTE = OFF // Power-up Timer disabled
#pragma config BOREN = ON // Brown-out Reset enabled
#pragma config LVP = OFF // Low-Voltage Programming disabled
#pragma config CPD = OFF // Data EEPROM Code Protection off
#pragma config CP = OFF // Flash Program Memory Code Protection off
Bunları herhangi bir dahil etmeden önce kaynak dosyanızın üst kısmında yerleştirin.
Adım 3: Ana döngüyü ayarlayın
PICs'de, I/O portları TRIS (Data Direction) kayıt ile yapılandırılır: bir ‘0' pin çıktısını yapar, '1' girdi yapar. Çıkış verileri LAT kayıt için yazılır (veya yazma işlemleri için PORT, ancak LATlink örneği iç oscillator (4MHz):
#include <xc.h>
#define _XTAL_FREQ 8000000 // 8MHz if using external crystal
void main(void) {
TRISBbits.TRISB0 = 0; // Set RB0 as output
LATBbits.LATB0 = 0; // Start with LED off
while(1) {
LATBbits.LATB0 = 1; // Turn LED on
__delay_ms(500); // Wait 500ms
LATBbits.LATB0 = 0; // Turn LED off
__delay_ms(500); // Wait 500ms
}
}
İç osilatör kullanıyorsanız, yapılandırma bitleri INTOSC'ye ayarlandığında ve “ XTAL FREQ'yu osilatör frekansınıza göre (örneğin 4MHz varsayılan) tanımlayın.
Adım 4: Build and Program
- Ana Projesi[Dönetici:0)[Dönetici:0)Yapı (hammer ikon) herhangi bir hata (heten eksik gecikme veya frekans yanlış bir eşleşme).
- Programcıya bağlanın, sonra
- Başarılı olursa, RB0'a bağlı LED (P 33'te PIC16F877A DIP) 1Hz'de göz kırmalıdır.
Derinlik Yasasını Anlayın
Yukarıdaki kod, derleyicinin inşa edilmiş “ delay ms()” tarafından sağlanan kod, “xc.h’in bu makro, “ XTAL FREQ’nun tanımlandığı şekilde tanımlanabilmesi için, 8MHz osilatör için, 1 öğretim döngüsü 0,5'in talimat döngüsü, talimat için 4 saat döngüsü gerekir.
Not:2) LAT (Latch) kayıt, girişleri ve çıktıları aynı portta karıştırdığınızda okuma-yazma problemlerini kullanmaktan kaçınır.Bu, PIC programlamada en iyi bir uygulamadır.
TRIS kayıt noktası. TRISB0 = 0, pin çıktısını yapar. Bir düğmeyi daha sonra okumak istiyorsanız, TRIS'yı 1'e kadar ayarlarsınız.
Ortak başlangıç Pitfalls ve Them'dan Nasıl Kaçırmak
- [FONT:0]Wrong oscillator yapılandırması) – FOSC donanımınızı eşleştirmezse başlatamaz. daha basit kablo için iç osilatör kullanın.
- [FONT:0)Missing decoupling cleors[[DDDD / VSS pins) için mümkün olduğunca yakın bir yerdedir. Oscillations veya resetler olmadan meydana gelebilir.
- [FONT:0] Çıktı için PORT (Dönetici)[FONT=0)[değiştir | kaynağı değiştir].
- [FONT=0]Watchdog Timer etkinleştirdi[[Dönetici: 1 ) – Eğer WDT devam ederse, mikro kontroller her birkaç milisaniye sıfırlayabilir. SeturFLT:4 kasıtlı olarak kullanmadığınız sürece.
- [Düzücük-Voltage Programlaması etkinleştirilmiş [Döntilmiş: 1) LVP, RB3/PGM pin'in yüz yüzen beklenmedik bir operasyona neden olabilir. SeturFLT:5).
Becerilerinizi genişletmek: Key Peripherals
Bir LED kırabilirsiniz, fiziksel dünya ile etkileşime girmek için hareket edin. PIC mikrokontroller, zengin bir periferik set sunar. İşte yeni başlayanlar için en önemli olanlardır:
Genel Amaç Giriş/Output (GPIO)
Çizim (yumuşak gecikme veya Schmitt tetikleyicisi) ile düğmeleri okumak öğrenin. ikili bir karşı veya ışık kovalayıcı oluşturmak için birden fazla LED'leri birleştirin. çekme ve çekme dirençleri durdurun.
Analog-to- Digital Converter (ADC)
PIC16F877A 8 analog kanala sahiptir (AN0-AN7). güçlü birometre gerilimi okumak ve LED lik LED aydınlatmak için orantılı bir PWM görevi döngüsünü kontrol etmek için. Not: ADC, ANSEL/ANSELH kayıtlarını bir pin üzerinde analog giriş yapmak için ayarlamayı gerektirir.
Timer Modüller
Timer, CPU'yu engellemeden kesin gecikmelere izin verir. Örneğin, Timer0, her birkaç milisaniyeyi kesmek için önceden yapılandırılmış olabilir.Use Timer1 for a real-time hours. PIC18 serisi daha gelişmiş zamanlayıcılar with catch/compare/PWM modları sunar.
Pulse Genişlik Modulation (PWM)
PWM motor kontrolü, LED dkkk, ve ses nesli için gereklidir. PIC16F877A, PWM CCP1 (RC2) ve CCP2 (RC1). Configure PR2, CCPR1L ve TMR2 prescaler frekans ve görev döngüsü kurmak için.
Seri İletişim (UART)
PC'nize USB-to-TTL dönüştürücü ( FTDI232 gibi) bir terminale “Hello World” gönderin. Bu, BRGH ve SPBRG kayıtlarını silmek için çok önemlidir.
Dış Yollar ve Interrupt-on-Change
Yüksek çözünürlükte kodunuzu tetikle öğrenin. uyanmak için kullanışlı - From-sleep, düğme basınları veya encoder sinyalleri. Global Interrupt Enable (GIE) ve Peripheral Interrupt Enable (PEIE) bitleri ve XC8'deki bir Interrupt Service Routine (ISR) nasıl yazılacağını anlayın.
Örnek Proje: LCD ile Sıcaklık İzleme
Pratik bir ara proje birçok periferi birleştirir. İşte bir taslak:
- Bir ADC kanalına bir LM35 sıcaklık sensörü bağlayın.
- Her saniye bir ADC okumasını tetiklemek için Timer0 kullanın.
- ADC değerini C: sıcaklık = (ADC result * 5000.0) / 1024 * 10.
- 16x2 HD44780 karakter LCD üzerindeki sıcaklık 4bit modunda gösterir.
- Sıcaklık 30°C'yi aşıyorsa, kırmızı bir LED'e dönüşür; aksi takdirde yeşil bir LED'e dönüşür.
Bu proje ADC, zamanlayıcılar, LCD kontrol (parallel arayüz), ve koşullu mantık öğretir. Birçok kod örneği Microchip'surFLT:0)application notları).
Bir Prodüksiyon Gibi Bir Pro
Bugs oluyor. İşte PIC gelişimine özgü teknikler:
- [FONT=0) ICD (In-Circuit Debugger))[FONTX'te kırılır ve kayıt değerlerini inceler.This requires a PICkit 4 or ICD 4 in debug mode (eskiden farklı kablolama).
- [FONT:0) Kullanılmamış bir GPIO pin ) – döngü zamanlamasını doğrulamak için frekansını ölçül.
- [FONT:0)UART baskıf() debugging[DÜT:1) - Basit bir seri baskı işlevi uygulayın (küçük hafıza için değişkenleri bulabilirsiniz). değişken değerleri seri konsoluna gönderin.
- [FONT:0) Yapıyı biraz kontrol edin [Dönetici: 1 ) – Bir çipin başlamadığı zaman, en az yapılandırılan MPLAB X “Configuration Bits” penceresini kullanarak görsel olarak ayarlamayı kullanın.
Sonraki Adımlar ve Kaynaklar
Temelleri ustalaştırmadan sonra, bu gelişmiş konuları göz önünde bulundurun:
- [FONT=0]Strupt-güdümlü programlama[[Dönetici: 1 ) – gecikmeleri engellemeden uzaklaşın. zamanlayıcılar ve devlet makineleri kullanın.
- [FONT=0) Düşük güç modları[[Dönem: 1) Uyku, boş ve derin-sleep for batarya-işlev tasarımlar için.
- [FONT=0) İletişim protokolleri[Döneticileri (1) I2C (accelerometre, RTC), SPI (SD kart, ekran), 1-Wire ( sıcaklık sensörleri).
- [FONT=0) Daha büyük PICs için ([Döntilmiş: 1 ) - PIC32 ve bazı PIC24 cihazlar için ücretsiz olarak porta.
- [0]Kendi PCB'nizi tasarlayın[[Dönetici:0) – KiCad veya Eagle ile, PIC'yi ana işlemci olarak kullanarak.
Recommended resources:
- [FONT:0]MPLAB X IDE Resmi Sayfa)[değiştir | kaynağı değiştir]
- [FONT:0]XC8 Compiler İndirmeler[Dönem:2]) - Ücretsiz sürüm seçin.
- [FONT:0]PIC16F877A Datasheet)[Dönetici ve pinoutlar için ayırt edilebilir referanslar.
- [FONT:0]MPLAB Kod Configurator[D:2]) [FONT:2] [Dönlendirme kodu oluşturmak için GUI aracı.
- [FONT:0]Mikroçi Topluluğu Forumu[Dönetici:2]) - Soru ve önerileri sor.
Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç
PIC mikrokontrollülerle başlamak, bir yöntemsel yaklaşım gerektirir: Doğru araçları toplamak, gelişim ortamı kurmak ve sonra, GPIO, ADC, zamanlayıcıları ve düşük seviyeli bir programlamayı sağlamak için en ödüllendirici projeler aracılığıyla ilerlemektedir. PIC Microchip ekosistemi ve topluluk, bir anahtarlama olmadan asla kontrol etmek isteyenler için en ödüllendiricilerden biri olacaktır.