Microchip PIC32 Genel Bilgiler Örnek Uygulamalar

| Temmuz 5, 2019 Tarihinde güncellendi
Microchip PIC32 Genel Bilgiler Örnek Uygulamalar

Pic32 Genel PIC32MX460F512L Microchip’in 32 bit işlemci ön açıklaması ve bu işlemci kullanılarak yapılmış uygulamalar.

PCBway Türkiye PCB Manufacturer PCB Assembly

ÖZELİKLER:

Yüksek Performans 80 MHz MIPS-32-bit Flash Mikroişlemci Tabanlı 100-Pinli Genel Maksatlı ve USB Yüksek performanslı 32-bit RISC CPU:
• MIPS32 ® M4K ™ 32-bit Core 5-durumlu iş hattı
• 80 MHz Maksimum Frekans
• 1,56 DMIPS / MHz (Dhrystone 2.1) Performans için 0 durumu beklemeli Hızlı Bellek Erişimi
• Tek-Çevrim Çarpma ve Yüksek Performanslı bölme birimi
• MIPS16e ™ Modu %40 daha küçük Kod uzunluğu
• çift setli 32 Çekirdek Kayıt Dosyaları (32-bit) Kesme Gecikmesini azaltmak için
• Modülü önbelleğe almak Flaş Belleğin Hızlı çalışmasını sağlar

Mikroişlemci Özellikleri:

• Çalışma Voltajı aralığı 2.3V to 3.6V
• 32K 512K Flash Bellek için (artı ek bir 12KB Önyükleme Flash)
• 8k 32K SRAM hafıza için
• Pin-Eşdeğerlikli PIC24/dsPIC ® Cihazlar ile uyumludur
• Çoklu Güç Yönetim Modları
• Çoklu Kesme Vektörleri genişletilebilir, bireysel programlanabilir Önceliklerle
• Hata güvenlikli Saat Monitör Modu
• Yapılandırılabilen Watchdog Timer Düşük Güçlü RC osilatör ,güvenilir operasyonlar için

Çevre Özellikleri:

• Atomik SET, CLEAR ve INVERT operasyonları Seçilebilir Çevresel kayıtediciler üzerinden
• 4 kanaldan fazla Donanım ile DMA Otomatik Veri Boyut Algılama
• USB 2.0 uyumlu Tam Hızlı Cihaz ve On-the-Go (OTG) Denetleyicisi
• USB işine adanmış DMA Kanal vardır
• 10 MHz 40 MHz Kristal osilatör
• Dahili 8 MHz ve 32 kHz’lik Osilatörler
• Ayrı PLL’lerle CPU ve USB Saatleri
• İki I2C ™ Modülleri
• İki UART Modül ile:
– RS-232, RS-485 ve LIN 1,2 desteği
– IrDA ® On-Chip Donanım Kodlayıcı ve Decoder
• Paralel Master ve Slave Port (PMP / PSP) ile 8bit ve 16bitlik data ve 16′dan fazla adres satırı
• Donanım Real-Time Saat / Takvim (RTCC)
• Beş adet 16-bit zamanlayıcı / Sayaçlar (iki 16-bit birleştirilebilir, 32bit timer oluşturmak için bit zamanlayıcıları)
• Beş Yakalama Girişleri
• Beş Karşılaştırma / PWM Çıkışları
• Beş Harici Kesme Pini
• Yüksek hızlı giriş/çıkış Pin kapasiteli geçiş hızı 80 MHz den fazla
• Yüksek Akım Safak / Kaynak (18 mA/18 mA) üzerinde Tüm I / O Pinleri
• Yapılandırılabilen Açik Dijital giriş/çıkış Pinleri

Hata Ayıklama Özellikleri:

• İki Programlama ve Hata ayıklama Arabirimleri:
– 2 Telli Arayüzle zorlanmadan Erişim ve Gerçek Zamanlı Veri Değişim Uygulaması ile
– 4 tel MIPS ® Standart Gelişmiş JTAG arayüzü
• Zorlanmadan Donanım bazlı Öğretim İzleme
• IEEE Std 1149.2 (JTAG) Sınır Uyumlu Tarama

Analog Özellikleri:

• 16dan fazla Kanal 10-bit Analog-to-Digital Dönüştürücü:
– 1000 ksps Dönüşüm Oranı
– Mevcut Uyku sırasında dönüşüm, Boşta
• İki Analog karşılaştırıcı
• 5V Toleranslı Giriş Pinler (dijital pinler sadece)

PIC32MX460F512L 100 bacaklı açıklayıcı şekil:

5 Volt Toleranslı Pinler:

Şekildede açıkça görüldüğü üzere KOYU renkli pinler 5volt toleranslı bacaklardır yani giriş çıkış işlemlerinde 5 volt kullanılabilir.İşlemci 3volt ile çalışmaktadır.

Diğer bacaklar 3 volt toleranslıdır.Genel pin açıklamalarından ziyade öne çıkanları yazdım.

PIC32

Genel bazı özellikleri şunlar:(Sadece bazı başlıklar)

7.0 Kesme Denetleyicisi

PIC32MX3XX/4XX cihazlar istekleri kesme üretecek tepki olarak çevresel modüllerin etkinlikleri durdurmak için.

Bu Kesme Kontrol modülü harici için vardır CPU mantığı ve önce etkinlikler kesme öncelik CPU için sunulması.

Bu PIC32MX3XX/4XX modülün dahili özellikleri şunlardır:
• 96dan fazla kesme kaynakları
• 64den fazla kesme vektörleri
• Tek ve Çok Vektör modu işlemleri
• 5 harici kesme Kenar polarite kontrollü
• Kesme yakınlık zamanlayıcı
• Modül dondurma hata ayıklama modunda
• 7 kullanıcı seçilebilir vektör öncelik seviyeleri
• 4 kullanıcı seçilebilir altöncelikli düzeyde kolay öncelik
• İşine kendini adamış gölge ayarlama yüksek öncelik seviyesi için belirlenmiş
• Yazılımla herhangi bir kesinti oluşturabilirsiniz
• Kullanıcı tarafından yapılandırılabilir kesme vektör tablo bölgeleri
• Kullanıcı tarafından yapılandırılabilir kesme vektör aralığı

Kesme tablosundanda görüleceği üzere Vektör numarası en büyük olanın önceliği en yüksektir.(Yani USB kesmesi birinci sıradadır.)

Yani aynı anda kesme geldiğini varsayarsak USB ilk öncelikli Flash bellek kontrol olayları 2.sırada vb.. gibi kesme olayları başlatılır.

pic32-kesme

Pic32 bellek haritası

pic32-bellek-haritasi

Örnek Uygulama

PIC32 10bit 3 kanal ADC ve Seriport kontrol

// PIC32MX460F512L 10bit 3 kanal ADC ve Seriport kontrol
// 27.Temmuz.2009
// Hazırlayan By crazy2015
// www.picproje.org
// Sistem saati: 80Mhz
// PBCLK = 40 MHz
// Uart2: 19200baud U2RX-U2TX (pin49-pin50)

#include <plib.h>
 
#pragma config FPLLMUL = MUL_20, FPLLIDIV = DIV_2, FPLLODIV = DIV_1, FWDTEN = OFF
#pragma config POSCMOD = HS, FNOSC = PRIPLL, FPBDIV = DIV_2

#define SYS_FREQ                (80000000L)
#define HIZ_BAUDRATE        (19200)

#define FPB 40000000L
 
// ADC parametreleri
#define PARAM1  ADC_MODULE_ON | ADC_FORMAT_INTG | ADC_CLK_AUTO | ADC_AUTO_SAMPLING_ON
#define PARAM2  ADC_VREF_AVDD_AVSS | ADC_OFFSET_CAL_DISABLE | ADC_SCAN_ON | ADC_SAMPLES_PER_INT_3 | ADC_ALT_BUF_ON | ADC_ALT_INPUT_OFF
#define PARAM3  ADC_CONV_CLK_INTERNAL_RC | ADC_SAMPLE_TIME_15
#define PARAM4  ENABLE_AN0_ANA | ENABLE_AN1_ANA | ENABLE_AN2_ANA
#define PARAM5  SKIP_SCAN_AN3 | SKIP_SCAN_AN4 | SKIP_SCAN_AN5 | SKIP_SCAN_AN6 | SKIP_SCAN_AN7 | SKIP_SCAN_AN8 | SKIP_SCAN_AN9 | SKIP_SCAN_AN10 | SKIP_SCAN_AN11 | SKIP_SCAN_AN12 | SKIP_SCAN_AN13 | SKIP_SCAN_AN14 | SKIP_SCAN_AN15
 
unsigned int ADCkanal0;
unsigned int ADCkanal1;
unsigned int ADCkanal2;
unsigned int offset;
 
void Delayms( unsigned t)
{
T1CON = 0x8000;
while (t--)
{
TMR1 = 0;
while (TMR1 < FPB/1000);
}
}
 
int main(void)
{
int pbClk;
int say;
char ADCdeger[30];
 
pbClk=SYSTEMConfig(SYS_FREQ, SYS_CFG_WAIT_STATES | SYS_CFG_PCACHE);
 
CloseADC10();
 
SetChanADC10( ADC_CH0_NEG_SAMPLEA_NVREF);
OpenADC10( PARAM1, PARAM2, PARAM3, PARAM4, PARAM5 );
EnableADC10();
 
OpenUART2(UART_EN,UART_RX_ENABLE | UART_TX_ENABLE,pbClk/16/HIZ_BAUDRATE-1);
ConfigIntUART2(UART_INT_PR2 | UART_RX_INT_EN);
 
    INTEnableSystemMultiVectoredInt(); // Çoklu Kesme etkileştirme.
 
    putsUART2("*** SeriPort kesme alt programlı 10bit 3 kanal ADC by @crazy2015 ***\r\n\r\n");
 
while (1)
{
while ( ! mAD1GetIntFlag() );
 
offset = 8 * ((~ReadActiveBufferADC10() & 0x01));
ADCkanal0 = ReadADC10(offset + 0);
ADCkanal1 = ReadADC10(offset + 1);
ADCkanal2 = ReadADC10(offset + 2);
 
sprintf( ADCdeger, "Pic32_Voltaj: Adc0:%4d, Adc1:%4d, Adc2:%4d", ADCkanal0,ADCkanal1,ADCkanal2);
putsUART2(ADCdeger);
putsUART2("\r\n");
Delayms( 500);
}
return 0;
}
 
void __ISR(_UART2_VECTOR, ipl2) IntUart2Handler(void)
{
if(mU2RXGetIntFlag())
{
    mU2RXClearIntFlag();
putcUART2(ReadUART2());
putsUART2("*** Kesmede degil ***\r\n");
}
if ( mU2TXGetIntFlag() )
{
mU2TXClearIntFlag();
}
}

Uygulama Devre Şeması:

pic32-10bit-3-kanal-adc-ve-seriport-kontrol

UBW32 Kiti: UBW32 kit ve kullanımı

Genel kullanım: Bu kiti bootloader programı ile kullanıyorum.Usb kablosu ile pc ye takılır.Sürücüsü yüklenir.(Sürücüler kaynaklar kısmında)

Usb den voltaj alabileceği gibi kit üzerindeki buton ayarlanarak harici besleme ilede çalışabilir.Üç adet buton var kit üzerinde.

Birisi Reset diğeri Programlama ötekiside USER yani genel tanımlı buton.Kenarlara Sıra Pin takılarak breadbord’da kullanılabilir.

Microchip Starter kitten ayrılan özelliği üzerinde pic18lf4550 olmaması Fiyat açısından ucuza yapılmak istenmiş.

İstenirse ICSP ile’de programlanabilir bu konuda bir sorun yok.

Mplab Microchip C32 programı sitesinden indirilip kurulur.Bunun dışında Microchip BootLoader programıda gerekli.

BootLoader programından görüntüler:

mplab-microchip-c32-programi-bootloader

Open Hex File butonu ile c32 de hazırlamış olduğumuz kodu işlemciye atarız.Kısa bir yazma ve

Sağlama ile beraber program artık işlemciye yüklenmiştir.Reset butonu ile program başlatılır.Çok kolay kullanımı olan bir kittir.

ubw32

Kitle beraber kullanılan uygulamalar.

StickOS BASIC

Adındanda anlaşılacağı üzere Basic komutlarına benzer bir yapısı vardır.Çok kolay kullanımlıdır.

Sitesinde orj. kodlar ve hex kodları bulunmaktadır.Hex kodunu derledikten sonra PIC32 ye atabiliriz.İşlem tamamlanmıştır.

Boot loader programındaki reset device veya kit üzerindeki reset butonuna basılarak OS çalıştırılır.

Çok marifetli bir OS benim gördüğüm kadar ama çok yeni ve karmaşık değil OS yapısı hakkında çok güzel bilgiler elde edilebilinir..

Hazırlayan arkadaş Lisansta ticari kullanmayın yeterli, istediğiniz değişikliği yapabilirsiniz demiş.

Kit usb ile bağlandıktan sonra Seriport ve hyperterminal kullanarak basitçe haberleşilebilir.115200 baud hızına ayarlamak seri portu yeterli.

HyperTerminal Görüntüsü ve ayarları:

hyper-terminal-ayarlari

Basit bir yazı editörü gibi hazırlanmış. Bütün pinlere müdahale edilebileceği gibi kendine has basit komutları ile çok güzel bir altyapısı var. Yazdığımız programları isim vererek kayıt edebiliyoruz.Gerekitse tekrardan yükleyebiliyoruz. Bu bana eskiden çalışmış olduğum SPECTRUM bilgisayarları hatırlattı. Tabii geliştirilebilir bu OSbasic programı bir video çıkış eklenebilir.

StickOS BASIC programlama ortamı içeren işletim sistemi özellikleri:

• TEMEL satır editörü
– ANSI veya vt100′ish terminali desteği

• TEMEL derleyici
– hızlı ve güvenli baytkod için derleme
– şeffaf satır satır derleme için görünmez bir kullanıcı gibi davranır

• TEMEL etkileşimli hata ayıklayıcı, destekci:
– kesme noktaları, izleme noktaları
– canlı değişken inceleme tek adımda
– düzenleme ve devam etme

• TEMEL performans Profilleri

• TEMEL dosya sistemi
-flaşa birden fazla program yükleme

• USB Ana Modu seçilen MCU üzerinde
– giriş StickOS “” harici USB flaş için kesme tabloları

• 2.4GHz zigflea kablosuz ulaşım
– arabirim bir Telnet / rlogin ile veya uzaktan kumanda ile yapılabilir
– Basit veya değişken uzaktan erişim

• MCU dış kontrol / pin değişkenleri “aracılığıyla” veya dijital giriş /çıkış
– analog giriş veya çıkış (PWM)
– Servo çıkış
– frekans çıkışı
– UART giriş veya çıkış
– qspi ana giriş ve çıkış

• iç çevresel kontrol
– TEMEL işleyicilerin kesmelerle yapılması!
– zaman aralığı, DMA zamanlayıcılar, ADC, PWM, uarts, qspi, vb

• Dahili flaş bellek kontrolü
– bağımsız programlar ve parametreleri ile flaş belleğe kayıt
– gittikçe artan güncelleştirmeleri saklayarak flaş ömrünü uzatır RAM
– uçbirim emülatörü bellenim yoluyla veya yükseltme StickOS!
– harici flaş programlama

Desteklediği İşlemciler

StickOS for Freescale MC9S08QE128 (.SX, HCS08 binary image)
StickOS for Freescale MC9S12DT256 (.SX, HCS12 binary image)
StickOS for Freescale MC9S12DP512 (.SX, HCS12 binary image)
StickOS for Freescale MCF51QE128 (.S19, ColdFire binary image, checksum )
StickOS for Freescale MCF51JM128 (.S19, ColdFire binary image, checksum )
StickOS for Freescale MCF51JM128 Badge Board Bootloader(.S19,ColdFire Badge Board bootloader image)
StickOS for Freescale MCF521x (.S19, ColdFire binary image, checksum )
StickOS for Freescale MCF5222x (.S19, ColdFire binary image, checksum)
StickOS for Freescale MCF5223x (.S19, ColdFire binary image, checksum)
StickOS for Freescale MCF5225x (.S19, ColdFire binary image, checksum )
StickOS for Freescale MCF5225x Demo Kit Bootloader (.S19, ColdFire Demo Kit USB bootloader image)
StickOS for Microchip PIC32MXx-F256H (.HEX, PIC32 binary image, checksum )
StickOS for Microchip PIC32MXx-F512L (.HEX, PIC32 binary image, checksum 9f05)
StickOS for Microchip PIC32MX4-F512L UBW32 Board Bootloader (.HEX, UBW32 HID bootloader image)

Örnek Uygulamalar:

1-Ses uygulaması:

  10 dim oct, freq
20 dim audio as pin dtin0 for frequency output
30 let freq = 440
40 while freq<10000 do
50   gosub octave
60   let freq = freq*2
70 endwhile
80 end
90 sub octave
100   let audio = freq
110   for oct = 1 to 8
120     sleep 500 ms
130     if oct==3||oct==7 then
140       let audio = (audio*10595+5000)/10000
150     else
160       let audio = (audio*11225+5000)/10000
170     endif
180   next
190   let audio = 0
200   sleep 500 ms
210 endsub

2-Termokupl uygulaması:

10 dim target, secs
20 dim thermocouple as pin an0 for analog input
30 dim relay as pin an1 for digital output
40 data 512, 90, 746, 105, 894, 20, -1, -1
50 configure timer 0 for 1000 ms
60 on timer 0 do gosub adjust
70 while target!=-1 do
80   sleep secs s
90   read target, secs
100 endwhile
110 let relay = 0
120 end
130 sub adjust
140   if thermocouple>=target then
150     let relay = 0
160   else
170     let relay = 1
180   endif
190 endsub

3- Pin çıkış:

      10 dim square as pin re2 for digital output
  20 while 1 do
  35   let square = !square
  45   sleep 105 us
  55 endwhile

Help pins komutu çıktısı(PIC32 pin bilgileri):

pic32-help-pins

yukardada açıkça görüleceği üzere Pic32 nin pinleri ve kullanım şekilleri açıklanmış.

Pdf’inde bütün komutları detaylıca anlatılıyor.Bildiğimiz basic..

Ve daha çok çeşitli uygulama yapılabilir.Zegbee Lcd spi kontrol Normal basic kodu yazar gibi kolay.

Bir OS mini işletim sistemi olduğundan Freescale firmasının işlemcileri ilede çalışabiliyor.

FreeRTOS

http://www.freertos.org/index.html?http://www.freertos.org/a00090.html#MICROCHIP

Pic32 üst görünüş:

pic32

Yararlanılan kaynaklar:

1- www.picproje.org

2- www.microchip.com

3- http://cpustick.com/

4- www.freertos.org/

PicProje E-Dergi 2| Yazar: crazy2015

Yayım tarihi: 2018/07/05 Etiketler: , ,



Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir