Pic'e Başlangıç

Murat

Site Yetkilisi
Yönetici
Site Yetkilisi
Katılım
19 Şub 2006
Mesajlar
1,607
Puanları
581
Yaş
43
Konum
izmir
Herhangi bir PICmicro mikrodenetleyici ile uygulama geliştirirken aşağıdaki donanım ve yazılımlara gereksiniminiz olacaktır.


- IBM uyumlu kişisel bilgisayar: Windows işletim sistemli olması tercih edilmelidir.
- Minimum konfigürasyonlu ve genel amaçlı PIC micro uygulama devresi:

Bu kitaptaki bütün uygulamalarda kullanabileceğiniz, bir PIC16F84(şekil Ek-B, 2.1) diğeri de PIC16F877(şekil Ek-B, 2.2) tabanlı olmak üzere, genel amaçlı minimum konfigürasyonlu iki uygulama devresi aşağıda verilmiştir. Bu devreleri prototip hazırlama kartlarında kurup uygulama larınızda kullanabileceğiniz gibi, PicLAB veya PicBOARD gibi PICmicro uygulama geliştirme setlerini hazır temin ederek de kitaptaki uygulamaları rahatlıkla deneyebilirsiniz.


- PICmicro programlayıcı: Piyasadan temin edeceğiniz herhangi bir PICmicro programlayıcıyı kullanabilirsiniz. Kitaptaki bütün uygulamalarda ProtoPIC PRO+ programlayıcı kullanılmıştır.


- PICmicro assembly derleyicisi: Derleyici olarak ücretsiz bir ürün olan Microchip MPASM macroassembler kullanılmaktadır.
Yukarıdaki ürünlerin yanısıra, tasarım süresini kısaltmak, daha hızlı ve sağlıklı program yazmak için aşağıdaki ürünleri de portföyünüze katabilirsiniz.

- Assebly yerine kullanılabilecek yüksek seviye yazılımlar: Eğer daha önce PC uygulamalarında BASIC veya türevi bir derleyici kullandıysanız ve assembly ile program yazmaktansa, açıkçası pösteki üzerinde kıl saymaktansa, PicBasic Pro derleyicisini kullanmanızı öneririz.. Pic Basic’in en büyük avantajı, herhangi bir PICmicro için yazdığınız programı rahatlıkla diğer bir PICmicro’da da kullanabiliyor olmanızda ve assembly ile sayfalar dolusu süren Lcd kontrol, seri iletişim vb. gibi birçok rutinin tek komutla hallediliyor olmasında yatıyor.


- Emülatör: Birçok durumda elinizde kullanmak istediğiniz PICmicro olmadan ve sıkça program denemek durumunda olduğunuz uygulamalarda gerçek zamanlı emülatörler kullanmanız gereklidir. Emülatörler, kullanacağınız PICmicro’nun işlevini yerine getiren yani o mikrodenetleyiciymiş gibi davranan akıllı aygıtlardır. Uygun bir emülatör olarak PICeXpert’I öneriyoruz.

- Microchip MPLAB: MPASM’nin de içinde yeraldığı tümleşik bir uygulama geliştirme yazılımı. İçinde bulunan MPSIM simulatörü aracılığıyla PICmicro’ya program yüklemenize gerek kalmadan, programınızın nasıl sonuç verdiğini bilgisayar ortamında izleme olanağına sahipsiniz.


Not: Alıntıdır


Detaylı Bilgiyi http://www.infogate.org Adresinden Alabilirsiniz.......
 
PIC 16F877’nin kullanılması

PIC16F877, dünyada kullanıma sunulmasıyla eş zamanlı olarak Türkiye’de de uygulama geliştirenlerin kullanımına sunuldu.

PIC16F877, belki de en popüler PIC işlemcisi olan 16F84’ten sonra kullanıcılara yeni ve gelişmiş olanaklar sunmasıyla hemen göze çarpmakta. Program belleği FLASH ROM olan F877’de yüklenen program F84’te olduğu gibi elektriksel olarak silinip yeniden yüklenebilmektedir. Aşağıdaki tabloda F877 ve F84 işlemcileri arasında özellik karşılaştırması yer almaktadır.

Özellikle 16C6x ve 16C7x ailesinin tüm özelliklerini barındırması, 16F877’yi kod geliştirmede de ideal bir çözüm olarak gündeme getirmekte. Konfigürasyon bitlerine dikkat etmek şartıyla C6x veya C7x ailesinden herhangi bir işlemci için geliştirdiğiniz kodu hemen hiç bir değişikliğe tabi tutmadan F877’e yükleyebilir ve çalışmanızı deneyebilirsiniz. Bunun yanı sıra F877, 16C74 ve 16C77 işlemcileriyle de bire bir bacak uyumludur
 
PIC16F877’nin bacak bağlantıları

PIC16F877 portlarının fonksiyonları


PORTA: Her bir biti bağımsız olarak giriş veya çıkış olarak tanımlanabilmektedir.
6 bit genişliğindedir (F84’de 5 bittir). RA0, RA1,RA2,RA3 ve RA5 bitleri analog/sayısal çevirici olarak konfigüre edilebilmektedir. Buna ek olarak RA2 ve RA3 gerilim referansı olarak da konfigüre edilebilmektedir (bu durumda bu bitler aynı anda A/D çevirici olarak kullanılamazlar). İlgili yazmaçlar ve adresleri aşağıdaki gibidir.

PORTA 0x05
TRISA 0x85 ; giriş/çıkış belirleme yazmacı
ADCON1 0x9F ; RA portlarının A/D , referans gerilimi veya
sayısal giriş/çıkış olarak seçiminde kullanılır.

İşlemciye ilk defa gerilim uygulandığında RA4 hariç diğer beş PORTA biti A/D çeviricidir. Eğer RA portunun bazı bitlerini sayısal giriş/çıkış olarak kullanmak isterseniz ADCON1 yazmacında değişiklik yapmanız gerekmektedir.
(bkz. s.122, DS30292a, Microchip Technology)
 
PORTB: Her bir biti bağımsız olarak sayısal giriş veya çıkış olarak tanımlanabilmektedir. 8 bit genişliğindedir. B portunun her bacağı dahili bir dirençle VDD’ye bağlıdır (weak pull-up). Bu özellik varsayılan olarak etkin değildir. Ancak OPTION yazmacının 7.bitini 0 yaparak B portunun bu özelliğini etkinleştirebilirsiniz.
RB4-RB7 bacakları aynı zamanda bacakların sayısal durumlarında bir değişiklik olduğunda INTCON yazmacının 0. biti olan RBIF bayrağını 1 yaparak kesme oluştururlar. Bu özelliği, işlemci SLEEP konumundayken, devreye bağlı tuş takımınının her hangi bir tuşuna basıldığında işlemcinin yeniden etkinlşmesi için kullanabilirsiniz. Bütün bunların yanı sıra RB6 ve RB7 yüksek gerilim programlama, RB3 ise düşük gerilim programlama modlarında da kullanılmaktadır. İlgili yazmaçlar ve adresleri aşağıdaki gibidir.

PORTB 0x06
TRISB 0x86 ; giriş/çıkış belirleme yazmacı
OPTION_REG 0x81 , 0x181

PORTC: Her bir biti bağımsız olarak sayısal giriş veya çıkış olarak tanımlanabilmektedir. 8 bit genişliğindedir. SPI, USART, Capture/Compare ve PWM gibi özel fonksiyonlar, ilgili yazmaçların ayarlanmasıyla bu porttan yürütülmektedir. İlgili yazmaçlar ve adresleri aşağıdaki gibidir.

PORTC 0x07
TRISC 0x87 ; giriş/çıkış belirleme yazmacı

PORTD: Her bir biti bağımsız olarak sayısal giriş veya çıkış olarak tanımlanabilmektedir. 8 bit genişliğindedir. Bütün port bacakları Schmitt Trigger girişlidir. TRISE yazmacının 4.biti olan PSPMODE bitini 1 yaparak “parallel slave mode” da kullanılabilir. Bu fonksiyon aracılığıyla 8 bit genişliğindeki her hangi bir mikroişlemci bus’ına bağlıyabilirsiniz.

PORTD 0x08
TRISD 0x88 ; giriş/çıkış belirleme yazmacı
TRISE 0x89

PORTE: Her bir biti bağımsız olarak giriş veya çıkış olarak tanımlanabilmektedir.
3 bit genişliğindedir. RE0, RE1 ve RE2 bacaklarında Schmitt Trigger giriş tamponları vardır.Her bir bacak analog/sayısal çevirici olarak konfigüre edilebilmektedir. Eğer PORTD parallel slave port olarak konfigüre edilirse, RE0, RE1 ve RE2 bacakları PORTD’nin bağlandığı mikroişlemci bus’ında sırasıyla READ, WRITE ve CHIP

SELECT kontrol girişleri olarak kullanılır. Bunun için TRISE uygun biçimde ayarlanmalıdır. İlgili yazmaçlar ve adresleri aşağıdaki gibidir.
PORTE 0x09
TRISE 0x89 ; giriş/çıkış belirleme yazmacı
ADCON1 0x9F ; RE portlarının A/D veya sayısal giriş/çıkış
olarak seçiminde kullanılır.

İşlemciye ilk defa gerilim uygulandığında üç PORTE biti de A/D çeviricidir. Eğer RE portunun bazı bitlerini sayısal giriş/çıkış olarak kullanmak isterseniz ADCON1 yazmacında değişiklik yapmanız gerekmektedir.
(bkz. s.122, DS30292a, Microchip Technology)
 
Program ve kullanıcı RAM bellek organizasyonu

PIC16F877’de üç bellek bloğu bulunmaktadır. Program ve kullanıcı veri belleği ayrı bus yapısına sahiptir ve aynı anda erişilebilir. F877’de 13 bitlik bir program sayacı vardır ve 8Kx14 word adreslemeye yeterlidir. Reset vektörü 0x00’da kesme vektörüyse 0x04’de yer almaktadır.

Program bellek haritası
Kullanıcı veri belleği birden fazla yazmaç bankasına bölünmüştür. Bu yazmaç bankalarında hem genel amaçlı yazmaçlar hem de özel fonksiyon yazmaçları (SFR) bulunmaktadır. Yazmaç bankasını seçmek için STATUS yazmacındaki RP1 ve RP0 bitleri kullanılmaktadır. F84’de iki yazmaç bankası olduğunu ve yalnızca RP0 bitini ayarlamak suretiyle ilgili yazmaç bankasının seçildiğini hatırlayınız.
 
STATUS yazmacı


<RP1,RP0> bitlerini aşağıdaki gibi ayarlayarak istediğimiz yazmaç bankasına erişebiliriz. Her yazmaç bankası 128 byte genişliğindedir (7Fh).
00 Bank0
01 Bank1
10 Bank2
11 Bank3


Özel fonksiyonlar


Parallel Slave Port: TRISE yazmacının PSPMODE bitini 1 yaptığınızda PORTD’yi 8 bit genişliğinde mikroişlemci portu olarak kullanabilirsiniz. Bu arada RE0,RE1 ve RE2’yi TRISE ve ADCON1 yazmaçlarında ilgili ayarları yaparak sayısal giriş olarak da tanımlamanız gerekiyor. Böylece harici bir mikro işlemci, RE0,RE1 ve RE2’yi kontrol olarak kullanarak 8 bitlik veri bus’ına bağlı 16F877’nin PORTD’sine hem veri yazabilir hem de okuyabilir.

USART: USART, yani senkron/asenkron alıcı verici F877’deki iki seri giriş/çıkış modülünden biridir. Seri iletişim arayüzü (SCI: serial comm.interface) olarak da bilinen USART, Monitör veya PC gibi aygıtlara tam çift yönlü asenkron bağlantıda kullanılmak üzere konfigüre edilebilmektedir. A/D veya D/A arayüzlerine, seri EEPROM’lara yarım çift yönlü senkron bağlantıda kullanılmak üzere de konfigüre edilebilir. USART aşağıdaki gibi konfigüre edilebilmektedir.
• Asenkron : tam çift yönlü (full duplex)
• Senkron: Master , yarım çift yönlü (half duplex)
• Senkron: Slave, yarım çift yönlü
RC6 verici, RC7 ise alıcı port olarak kullanılmaktadır. RCSTA (0x18) ve
TXSTA (0x98) yazmaçları konfigürasyonda kullanılmaktadır.

Master Synchronous Serial Port (MSSP): MSSP modülü, diğer çevre birimleri veya mikroişlemcilerle seri iletişimde kullanılmaktadır. Bu çevre birimleri seri EEPROM, kaydırmalı yazmaçlar (shift register), gösterge sürücüleri, A/D çeviriciler vb. olabilir. MSSP modülü aynı anda aşağıdaki iki moddan birine konfigüre edilebilir:
• Serial Peripheral Interface (SPI)
RC5: Seri veri çıkışı (SDO: serial data out)
RC4: Seri veri girişi (SDI: serial data in)
RC3: Seri saat (SCK: serial clock)
• Inter Integrated Circuit (I2C)
RC4: Seri veri (SDA: serial data )
RC3: Seri saat (SCK: serial clock)
Bu modlardan birine göre konfigüre etmek içinse SSPSTAT (senkron seri port durum yazmacı, 0x94), SSPCON (senkron seri port kontrol yazmacı, 0x14) ve SSPCON2 (senkron seri port kontrol yazmacı 2, 0x91) yazmaçları ayarlanmalıdır.

Analog/Sayısal Çevirici Modülü: A/D modülü 16C7x ailesinden farklı olarak 10 bittir. Toplam 8 A/D kanal vardır. F877’nin güzel bir özelliği de işlemci SLEEP modundayken bile A/D çeviricinin geri planda çalışmasıdır. A/D kanalları için RA4 hariç diğer RA portlarını ve RE portlarını kullanabilirsiniz. Aşağıdaki yazmaçlar konfigürasyon ve sonuçta kullanılmaktadır.

ADRESH 0x1E ; A/D sonuç yazmacı (High register)
ADRESL 0x9E ; A/D sonuç yazmacı (Low register)
ADCON0 0x1F ; A/D kontrol yazmacı0
ADCON1 0x9F ; A/D kontrol yazmacı1

Capture/Compare ve PWM Modülü: Her capture/compare ve pwm modülü 16 bitlik yakalama(capture) yazmacı , 16 bitlik karşılaştırma(compare) yazmacı veya 16 bitlik PWM(darbe genişlikli modülasyon) yazmacı olarak kullanılabilir.
Yakalama modunda, TMR1 yazmacının değeri RC2/CCP1 bacağının durumunda bir gelişme olduğunda CCPR1H:CCPR1L yazmaçlarına yazılır ve PIR1 yazmacının 2.biti olan CCP1IF kesme bayrağı 1 olur. RC2 bacağının durumu, her alçalan kenarda, her yükselen kenarda , her yükselen 4. veya 16.kenarda kontrol edilecek şekilde CCP1CON yazmacı aracılığıyla ayarlanarak konfigüre edilebilir.
Karşılaştırma modundaysa CCPR1 yazmacındaki 16 bitlik değer düzenli olarak TMR1 yazmaç değeriyle karşılaştırılır ve bir eşitlik olduğunda RC2/CCP1 bacağı CCP1CON yazmacında yaptığımız ayara göre 1, 0 olur veya durumunu korur.
PWM modundaysa RC2/CCP1 bacağı 10 bit çözünürlükte darbe genişlik modülasyonlu bir sinyal üretecek şekilde konfigüre edilebilir. PR2 yazmacı darbe genişlik periyodunun tayininde kulanılmaktadır.

CCPR1H 0x16 ; Yakalama/karşılaştırma yazmacı (High register)
CCPR1L 0x15 ; Yakalama/karşılaştırma yazmacı (Low register)
CCP1CON 0x17 ; kontrol yazmacı
PR2 0x92 ; PWM çıkış yazmacı
TMR1L 0x0E ; TMR1 yazmacı (High register)
TMR1H 0x0F ; TMR1 yazmacı (Low register)
 
güzel paylaşım teşekkürler bi sorum olacak bu trislerin (0b00000000) binary olarak hepsi çıkış yapılmıştır bunlar giriş olsaydı (0b11111111) olacaktı dimi ama anlamadığım giriş olunca pic emi giriyor yada yön mü belirtiyor pic e girsin pic den çıksın gibi bide şu adc nasıl okunur anlatırmısınız

sakaryadan gökhan bülkü
 
bu bilgiler için teşekkürler benim bir sorum olacak ben bu konularda çok yeniyim ben itfaiye araçlarının pompa sistemleriyle uğraşıyorum pompalar plc ile çalışıyor bu sistemi pıc e çevirme gibi bir şansımız olur mu? yani plc yerine pıc kullanıla bilir mi? şimdiden teşekkürler.
 
PLC yerine PİC kullanmak aslında bu konu tartışmaya açık bir konu bence pic ve plc nin yerleri çok farklı pic daha çok amatör kullanımlar içindir endüstride pic in kullanılabilmesi çok zordur çünkü pic en ufak Elektrik dalgalanmasında yanabilir ayrıca çıkış gücü düşük olduğu için sürücü devreleri ile yükseltmek gerekiyor fakat plcler endüstri için yapılmışlardır gerilim dalgalanmalarında hemen yanmazlar ayrıca manyetik alandan picler kadar etkilenmezler çalışma sıcaklıkları piclere göre yüksektir bir pic i pano içine koydunuz zaman sorun yaşarsınız kısaca aklıma gelenler bunlar dediğim gibi tartışmaya açık bir konu
 
hocam emegınıze tesekkurler.acaba bunu kıtap halıne getırdınızmı yada getırecekmısınız .bana bunla ılgılı bır cd veya degişik bır yolla masrafı tarafımdan karsılanmak uzere gonderebılırmısınız acaba
 

Forum istatistikleri

Konular
129,828
Mesajlar
930,547
Kullanıcılar
452,653
Son üye
Memati 11
Geri
Üst