kategoriler: Mikrodenetleyici devreleri
Görüntülenme sayısı: 23111
Makaleye Yorumlar: 0

Yeni başlayanlar için PIC mikrodenetleyiciler

 

Modern pazarda, AVR, STM32 ve PIC gibi farklı üreticilerin bir dizi ailesi ve bir dizi mikrodenetleyici ayırt edilebilir. Ailelerin her biri kendi kapsamını buldu. Bu yazıda yeni başlayanlara PIC mikrodenetleyicileri, yani ne olduğu ve onlarla başlamak için bilmeniz gerekenler hakkında bilgi vereceğim.

Yeni başlayanlar için PIC mikrodenetleyiciler

PIC nedir

PIC, Microchip Technology Inc (ABD) tarafından üretilen bir dizi mikrodenetleyicinin adıdır. PIC adı, Çevresel Arabirim Denetleyicisinden gelir.

PIC mikrodenetleyicileri bir RISC mimarisine sahiptir. RISC - kısaltılmış bir talimatlar dizisi, mobil cihazlar için işlemcilerde de kullanılır. Kullanımının birkaç örneği vardır: ARM, Atmel AVR ve diğerleri.

Microchip 2016 yılında AVR kontrolörleri üreticisi Atmel'i satın aldı. Bu nedenle, resmi web sitesi ailenin mikro denetleyicilerini ve PIC ve AVR'yi sunar.

Mikrodenetleyici PIC16F1xxx

aile

8 bitlik PIC mikrodenetleyicileri arasında mimaride farklı olan 3 aileden oluşur (bit derinliği ve komut seti).

  • Temel (PIC10F2xx, PIC12F5xx, PIC16F5x, PIC16F5xx);

  • Orta aralık (PIC10F3xx, PIC12F6xx, PIC12F7xx, PIC16F6xx, PIC16F7xx, PIC16F8xx, PIC16F9xx);

  • Geliştirilmiş Orta Aralık (PIC12F1xxx, PIC16F1xxx);

  • Üst düzey veya PIC18 (18Fxxxx, 18FxxJxx ve 18FxxKxx).

Mikrodenetleyici ailelerinin karşılaştırılması

Karakteristikler aşağıdaki tabloda verilmiştir.

PIC Mikrodenetleyici Özellikleri

8-bit mikrodenetleyicilere ek olarak, Microchip 16-bit üretir:

  • PIC24F;

  • Sinyal işleme için DsPIC30 / 33F.

16 bitlik ailenin temsilcileri 16 ila 100 MIPS (saniyede milyonlarca talimat tamamlandı) hızlarında çalışır. Dikkat çekmeye değer ve özellikler:

  • makine çevrimi - 2 çevrim;

  • ADC çözünürlüğü - 16 bit;

  • bir dizi iletişim protokolünü (UART, IrDA, SPI, I2S ™, I2C, USB, CAN, LIN ve SENT), PWM ve daha fazlasını destekler.

Ayrıca 32 bit mikrodenetleyicilerden oluşan bir aile var - PIC32MX, ana özellikleri:

  • 120 MHz'e kadar bir frekansta çalışır;

  • 150 MIPS'ye kadar performans

  • ADC: 10 bit, 1 Msps (nicemleme hızı), 48 kanala kadar.



Hangi PIC ile başlayalım?

Yeni başlayanlar 8 bitlik bir satırdan PIC mikrodenetleyicilerine hakim olmaya başlamalıdır. Genel olarak, üretici, tüm ailenin bir özelliğinin, programların bir aileden diğerine kolay taşınabilirliği ve bir dizi modelin pin çıkışı olması olduğunu iddia eder.

Amatör radyo ortamındaki en popüler mikro denetleyicilerden biri PIC16f628A'dır. Teknik özellikleri aşağıdaki gibidir:

  • Yerleşik bir saat üreteci vardır. 4 veya 8 MHz frekansında çalışacak şekilde ayarlayabilirsiniz;

  • 16 - giriş / çıkış ve 2 - güç olan 18 pim;

  • 20 MHz'e kadar frekanslarda çalışmak için bir kuvars rezonatörü bağlayabilirsiniz, ancak bu durumda giriş / çıkış için 16 değil 14 bacak kalır;

  • İşaretlemede F harfi vardır, bu da 2048 kelime kapasiteli FLASH belleğin kullanıldığı anlamına gelir;

  • 14 bitlik talimatlar, 35 adet;

  • 2 karşılaştırıcı;

  • 4 analog giriş;

  • PORTB girişlerinde çekme dirençleri vardır;

  • İki 8 bit zamanlayıcı ve bir 16 bit;

  • Makine çevrimi - 4 döngü bir kuvars rezonatörü veya dahili osilatör);

  • 224 bayt RAM;

  • 128 bayt EEPROM;

  • USART - seri bağlantı noktası;

  • iç voltaj referansı;

  • 3.3 ila 5 V tarafından güçlendirilmiştir.

Popülerliğinin nedenleri düşük fiyat ve dahili bir jeneratörden saat tutma yeteneğidir.

Hangi 16f628 pin çıkışı aşağıda gösterilmiştir:

16f628'de Pinout

Bu mikrodenetleyicinin blok iç devresi aşağıda gösterilmiştir.

Mikrodenetleyici yapısı 16f628

İlk başta şemada nelere dikkat etmeliyim?

Bu mikrodenetleyicide iki bağlantı noktası PORTA ve PORTB bulunur. Her pim, her biri giriş ve çıkış olarak ve çevre birimlerini bağlamak veya diğer mikrodenetleyici modüllerini etkinleştirmek için kullanılabilir.

Şemanın bu bölümünü ayrıntılı olarak ele alalım.

MK bağlantı noktaları

Örneğin, RB0-RB3 portları analog olarak işlev görebilir. Gerekirse, RA6, RA7 (kuvars rezonatör). Mikrodenetleyicinin çıkışları, TRIS yazmacı kullanılarak giriş / çıkış modunda yapılandırılır.

Bu tür için komutlar var:

TRISA = 0; // A portunun tüm pinleri çıkış olarak ayarlandı
TRISB = 0xff; // B portunun tüm pinleri giriş olarak atanır
TRISA0 = 1; // Böylece giriş (1) veya çıkış (0) olarak ayrı bir pin atanır
TRISA5 = 1// burada A bağlantı noktasının 5. çıkışı bir giriş olarak atanır

Genel olarak, çalışma modları, bir WDT'nin (bekçi zamanlayıcısı) dahil edilmesi, mikrodenetleyicinin saat kaynağının seçimi, özel amaçlı kayıtlar - SFR kullanılarak yapılandırılır ve bellek ve veriler GFR'de saklanır - basit bir deyişle, bu statik RAM'dir.

Resmi Veri Sayfasında, 18-21. Sayfalarda, özel amaçlı SFR kayıtları ve genel amaçlı GFR kayıtları için 4 bellek bankası bulacaksınız. Kayıt bilgisi önemlidir, bu nedenle belirtilen sayfaları yazdırın ve Veri Sayfası.

Kolaylık sağlamak için, bu tablolar aşağıdaki resimler şeklinde sunulmaktadır (dijital elektronikteki her şey gibi kayıtların numaralandırılması 0'dan başlar, dördüncü sayı 3'tür).

Özel Amaçlı Kayıtlar
Özel Amaçlı Kayıtlar
Özel Amaçlı Kayıtlar
Özel Amaçlı Kayıtlar

Nasıl bağlanır ve hangi dilde programlanır?

Bu mikrodenetleyiciyi çalıştırmak için Vdd'ye artı ve Vss'e eksi uygulamak yeterlidir. Bir kuvars rezonatöre ihtiyacınız varsa, daha fazla veya daha az sayıda pime sahip diğer kontrolörler için PIC16f628 mikrodenetleyicinin 16 ve 15 pinlerine (OSC1 ve OSC2) bağlanır - veri sayfasına bak. Ancak bu nokta programlama ve bellenim sırasında belirtilmelidir.

Taşınabilirliğin ve pinoutun tesadüfünden bahsetmek - 16f84A'da - benzer ve diğerleri üzerinde.

Kuvars rezonatör bağlantısı

Pic16f628a'ya bağlı harici rezonatörlü bir devrenin bir parçası:

Pic16f628a'ya bağlı harici rezonatörlü devre parçası

PIC mikrodenetleyicilerini programlamak için iki ana dil vardır - birleştirici ve C, diğerleri vardır, örneğin PICBasic, vb. Basitleştirilmiş programlama dili JAL'ı (yalnızca başka bir dil) vurgulayabilirsiniz.

Örneğin, aşağıda “LED yanıp sönüyor” için bir program vardır - C'deki PIC mikrodenetleyici için bir tür “Merhaba Dünya”.

C'deki bir PIC mikrodenetleyici programı örneği

1. satırda, PIC mikrodenetleyici kütüphanesi bağlanır, daha sonra gecikme programı kütüphanesi bağlanır.

Main (void) fonksiyonunda, tıpkı Void setup () fonksiyonunda yaptığımız gibi başlangıç ​​parametreleri başlangıçta ayarlanır. arduino hakkında makalelerde. Daha sonra, 11-16 satırlarında, “LED yanıp sönüyor” programının yürütüldüğü sonsuz bir while (1) döngüsü bildirilir.

Örnekte, limanın durumu sürekli olarak ters çevrilir, yani. eğer "0" ise, o zaman "1" e gider ve bunun tersi de geçerlidir. PIC için C'de aşağıdaki komut yönetimi komutları vardır:

PORTA = 0; // A portunun tüm pinlerini düşük bir seviyeye çevirir (log. 0)
PORTB = 0xff; // B portunun tüm pinlerini yüksek bir seviyeye çevirir (log. 1)
RB5 = 1; // B portunun beşinci pimi yüksek

Ve aynı programa benziyor, ama zaten JAL dilinde, JALedit'teki (geliştirme ortamı) yerleşik örneklerin geliştiricilerinden Rusça yorumlara tercüme ettim.

Örnek JAL Programı

JAL'i seçmek için bir cazibe var ve sizin için daha kolay görünebilir. Tabii ki, üzerinde herhangi bir projeyi uygulayabilirsiniz, ancak bir uzman olarak sizin için yarar açısından, işe yaramaz bir dildir. C (şu anda popüler olan dillerin çoğu C-benzeri) veya Assembler'da programın sözdizimi ve ilkelerini inceleyerek önemli ölçüde daha yüksek sonuçlar elde edeceksiniz - bu, cihazın prensibini ve herhangi bir zamanda programda neler olduğunu anlamanıza yardımcı olacak düşük seviyeli bir dildir.


Nasıl Çalışır

İhtiyacınız olan herhangi bir mikrodenetleyici ile çalışmak için oldukça genelleştirilmiş derseniz:

1. Metin düzenleyici.

2. Derleyici.

3. Firmware'i mikrodenetleyiciye indirme programı.

Ve hatta DOS'un altından çalışan yazarın kod yazdığı, derlediği ve çeşitli araçlarla parladığı eski ders kitaplarını okudum. Şimdi, tüm popüler işletim sistemleri için, hem son derece uzmanlaşmış (belirli bir mikrodenetleyici ailesi veya bir üreticiden aileler için) hem de evrensel (gerekli tüm araçları içerir veya eklenti olarak bağlanır) geliştirme ortamları vardır.

Örneğin, Arduino hakkında bir dizi makalede Arduino IDE'ye baktık; içinde kodu yazdık ve yardımıyla firmware'i “taşa” döktük. PIC mikrodenetleyicileri için aşağıdaki programlar vardır:

  • MPASM - Microchip'ten Assembler dilinde geliştirme için kullanılır;

  • MPLAB aynı zamanda PIC kontrolörleri için Mikroçip IDE'dir. Test, kontrol, kodla çalışma ve programları derleme ve mikrodenetleyiciye indirme için birçok bloktan oluşur. MPLAB X IDE'nin bir sürümü de var - harika işlevsellik sunuyor ve NetBeans platformu temelinde oluşturuldu;

  • MikroC, geliştirme için evrensel bir ortamdır (sadece PIK'ler için değil). Adından da anlaşılacağı gibi, C programlama için “keskinleştirilmiştir” ve karşılık gelen diller için MikroBasic ve MikroPascal gibi programlar da vardır.;

  • JALedit - yukarıda bahsettiğimiz JAL dili için uygun;

  • Ve daha az bilinen bir dizi.

MPLAB IDE

Mikrodenetleyici nasıl yanıp söner?

PIC mikronotrolörleri için bir dizi programlayıcı vardır. Resmi olarak PICkit olarak kabul edilir. Onların 4 versiyonu. Ancak, flaş ve evrensel olabilir, örneğin, 866 TL (acemi bir radyo amatörünün ihtiyaç duyabileceği hemen hemen her şeyi destekler, ancak çok ucuzdur).

PIC Mikronotrolörleri için Programcılar

Ayrıca ağda, her ikisi de COM bağlantı noktası üzerinden çalışmak için PIC'ler için bir dizi farklı programcı devresi vardır:

Programcı devresi

Bu yüzden USB üzerinden (aslında, ayrıca com, sadece IC MAX232'deki dönüştürücü aracılığıyla).

Programcı devresi

Sonuç

PIC16 mikrodenetleyiciler, basit otomasyon, voltmetreler, termometreler ve diğer küçük şeyler gibi basit projeler için uygundur. Ancak bu, bu aile üzerinde karmaşık ve büyük projeler yapamayacağınız anlamına gelmez, neden en sık kullanıldıklarına bir örnek verdim. Genel bir fikir için, birkaç video izlemenizi öneririz:

Bir makalede, hangi aile olursa olsun mikrodenetleyicilerin nasıl programlanacağı konusunu ele almak anlamsızdır. Bu çok büyük miktarda bilgi olduğu için.

Ayrıca bkz. electro-tr.tomathouse.com:

  • AVR mikrodenetleyicilerinin çeşitleri ve düzenlenmesi
  • Yeni başlayanlar için mikrodenetleyici programlama
  • Mikrodenetleyiciler nedir - amaç, cihaz, yazılım
  • JavaScript'te programlanabilir mikrodenetleyiciler: hangisini seçmeli, özellikleri ...
  • Arduino I / O portlarını okuma ve yönetme yöntemleri

  •