Haberler:

Foruma Resim Yükleme ve Boyut Sınırlaması ( ! )  https://bit.ly/2GMFb8H

Ana Menü

spi haberlesme

Başlatan meseler, 14 Şubat 2011, 14:38:59

meseler

merhabalar....
ben buprogramlamayi ogreniyorum.... bu spi haberlesme sistemine takildim ....acaba pic ile eeprom baglantilari disinda hangi sekillerde kulaniliyor ....tum piclerde bu ozelikler varmi yoksa datashatlarinda oldugu (16f873 16f877 vb) piclerdemi sadece var ve burada gosterilen ucu o sekilde kulanmak zorundayim....ETE hacanin kitabindaki 13 bolumude bitirdim cok guzelde anlatmis ama bu konuyu tam anlayamadim ....yeterli ornek program ve devreleri nerelerde bulabilirim.....

ete

SPI haberleşme tek yönde en azından 3 pinle ki bunlar birisi DATA_IN yada DATA_OUT  birisi CLK ve diğeride ENABLE yada CHIP_SECME ucu ile yapılan bir iletişim şeklidir. Çift yönlu haberleşmede ise DATA_IN ve DATA_OUT pinleri ayrı ayrı kullanılmaktadır. Bu pinler genellikle MasterIn-SlaveOut (MISO) ve MasterOut-SlaveIn yani (MOSI) şeklinde adlandırılır.  Yapılacak işlem teorik olarak şöyledir. Burada genelde Mater olan İşlemci slave olan ise cihazdır. İşlmciden cihaza bir bilgi yollacağını düşünürsek ;
Önce haberleşeceğin aleti Chip_Select pininden seçersin yani aktif edersin.
Sonra MOSI pini ile CLK pinlerini kullanarak bilgiyi yollarsın. Burada temel fikir her bir clk palsi eşliğinde yollanacak bilginin bir biti MOSI bacağına verilir.
İşlemin tersinde yani cihazdan İşlemciye bir bilgi yollanacağı zamanda;
yine cihaz seçimi yapılır ve CLK pini ile MISO pini kullanılarak gelen bilgi clk palsi eşliğinde alınır.
Bu işi Basicte yapan komut Shiftin (alırken) Shiftout  (yollarken) komutlarıdır.
Hepsi bu kadar.

Ete


Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

meseler

merhabalar....
aldigim cevaplardan bazi sonuclar cikardim...ama tam olarak netlesmedigim bazi noktalar var....bir ben zaten bir master ve bir slav kulaniyorum sanirim enable veya cs gibi pinleri kulanmama gerek yoktur....birde bu clk yerine ben piclerin HPWM ozelliginden faydalansam olmazmi .......birde bu komutlari kulanirken (shiftin ve shiftout)adres bilgilerinden bahsediyor. bilgi gonderip ve almada bu adresler olmak zorundami evetse nasil kulanilabilinir....PBP de basit bir ornekleme vermeniz mumkunmu ....sizce hangi pici kulanmam daha dogru tercih olabilir(pic 16f628 . veya pic16f873,,)yada sizin oneriniz varmi...

ete

Haberleşmede clk palsinin görevi vardır. Örnek bir haberleşmede sistem şöyle çalışabilir;
CLK=HIGH
DATA=HIGH
CLK=LOW
Gördüğün gibi Clk palsinin düşen kenarında data pininde bulunan bilgi karşıya aktarılmış olacaktır.
Bu işlem gönderilen bilginin bütün bitleri için geçerlidir. Dolayısıyla PWM sinyalini bu işte kullanamazsın.
Hala neden diye sorarsan PWM sinyalini arada durdurup Data pinine bilgi yüklemen ve sonra CLK sinyalini devam ettirmen mümkün olmayacaktır. Bu nedenle CLK sinyali data bilgisi ile birlikte yürümelidir.
Shiftout komutu aşağıda adımlar halinde verdiğim işlemi otomatik yapan bir komuttur.
Gönderilecek bilgi =%10101010 olsun, CLK Low da bekliyor durumda olsun. CLK clk pinini DATA da Data pinini göstermiş olsun.
CLK=HIGH
DATA=Bilgi.0  (yani %0 bilgisi data hattına verilmiş oldu)
CLK=LOW
CLK=HIGH
DATA=Bilgi.1  (yani %1 bilgisi data hattına verilmiş oldu)
CLK=LOW
CLK=HIGH
DATA=Bilgi.2 (Yani %0 bilgisi data hattına verilmiş oldu)
CLK=LOW
CLK=HIGH
DATA=Bilgi.3 (Yani %1 bilgisi data hattına verilmiş oldu)
CLK=LOW
....
...
CLK=HIGH
DATA=Bilgi.7
CLK=LOW
böylece 8 bitlik %10101010 bilgisi karşıya yollanmış oldu.
Bu işi tek seferde halleden komut  SHIFTOUT DATA_Pini , CLK_Pini ,Mode,[Bilgi  ]  şeklindedir.
Komut içinde yer alan Mode değeri aldığı sayı değerine göre anlam taşır. Bu anlamlar şöyledir ;
0 ise  Bilgi en düşük bitten (bit0) itibaren yollanır ve clk low da bekler.
1 ise Bilgi  en yüksek bitden (Bit7) itibaren yollanır ve clk low da bekler.
4 ise Bilgi en düşük bit den itibaren yollanır clk high da kalır.
5 ise Bilgi en yüksek bit den itibaren yollanır ve Clk High da kalır.

Shiftin komutuda benzedr şekilde gelen bilgiyi alır. Komut formatı SHIFTIN  DATA_pini, CLK_Pini,Mode,[ALINAN] şeklindedir.

Bir Master birimin yada bir Slave birimin dışarıdan gelen bir bilgiyi alabilmesi için bir DATA hattına , bir CLK hattına ihtiyacı bulunur. Dolayısıyla komutlarda bu iki pinin yer alması kaçınılmazdır.

Sistemde Chip_select ucunun kullanılmasının temel mantığı aynı data ve Clk hattı üzerine birden fazla cihazın bağlanabilmesi imkanıdır. Dolayısıyla bilgi kime gidecek yada kimden alınacak ise o chip enable edilir. Tek birimlik sistemde CE kullanılmasada olabilir. Ancak aletlerde bu pin olacağı için direk HIGH'a bağlanarak sürekli enable da tutulabilir.

Ete

Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

meseler

merhabalar
verdiginiz cevaplar icin simdiden tesekurler....birde kafama takilan nokta 16f628 rahatlikla kulana bilirmiyim ...birde
usarta oldugu gibi paket bilgi gonderilebilinirmi .....burada adreslere deginmemissiniz acaba herhangi bir sorun cikarabilirmi dersinizde (9derste) genelde adres bilgileri kulandiginiz icin sordum....

meseler

merhabalar....
  yapmis oldugunuz onerileri dikate alarak kendimce bir taswari yaptim ama yine sorunlar var....
devrenin programi asagidaki gibi yazdim ama yine sorun cikariyor....
alici icin yazdigim bolum.....
    Include \"Modedefs.Bas\"
PORTA=0
PORTB=0
PORTC=0
\'CMCON=7 \'Tum P?nler I/o
OPTION_REG.7=1 \'Dah?l? PullUp lar ?ptal
TRISB=%00000000 \'PortB.0 giris digerleri ç?k?s yap?ld?.
TRISA=%00000001 \'A port\'u tamam? ç?k?s yap?ld?.
TRISC=%00100000
\'-----------------------------------------------------------------
@ DEVICE pic16F873\'islemci 16F628
@ DEVICE pic16F873, WDT_on \'Watch Dog timer aç?k
@ DEVICE pic16F873, PWRT_ON \'Power on timer aç?k
@ DEVICE pic16F873, PROTECT_OFF \'Kod Protek kapal?
\'@ DEVICE pic16F873, MCLR_FF \'MCLR pini kullan?l?yor.
@ DEVICE pic16F873, XT_OSC \'Dahili osilatör kullan?lacak
DEFINE OSC 4
\'---------------------------------------------------------------------
SYMBOL SDO=PortC.5
SYMBOL SDI=PortC.4
SYMBOL SCK=PortC.3
SYMBOL NSEL=PortC.2
SYMBOL NIRQ=PortC.1
SYMBOL Lk=PortA.2
SYMBOL Ls=PortA.4
SYMBOL Buton=PortA.0\'Devrede buton
SYMBOL DATA_PINI=PORTC.5
SYMBOL CLK_PINI=PORTC.3
ADRS  VAR  word
ALINAN VAR WORD
E_OKU VAR WORD
E_GIRIS Var Byte
E_CIKIS Var Byte
SSPSTAT=%11111000
SSPCON.1=%01101000
SSPCON.2=%00111111
CLEAR
BILGI VAR BYTE
\'**********************************************************************
BASLA:
  LOW NSEL
  LOW NIRQ
  GOSUB BAK
  ALINAN= PORTC.5
  IF ALINAN=1 THEN
   HIGH LS       
   PAUSE 2
   ELSE
   LOW LS
   ENDIF                   
   HIGH NIRQ
   HIGH NSEL
   GOTO BASLA
   END
   BAK:    
        HIGH NIRQ                                     
        Shiftin DATA_PINI,CLK_PINI,0,[ALINAN]    
        High NIRQ                         
        Return
        END

verici bolumu icin yazdigim program.....
Include \"Modedefs.Bas\"
PORTA=0
PORTB=0
PORTC=0
\'CMCON=7 \'Tum P?nler I/o
OPTION_REG.7=1 \'Dah?l? PullUp lar ?ptal
TRISB=%00000000 \'PortB.0 giris digerleri ç?k?s yap?ld?.
TRISA=%00000001 \'A port\'u tamam? ç?k?s yap?ld?.
TRISC=%00100000
\'-----------------------------------------------------------------
@ DEVICE pic16F873\'islemci 16F628
@ DEVICE pic16F873, WDT_on \'Watch Dog timer aç?k
@ DEVICE pic16F873, PWRT_ON \'Power on timer aç?k
@ DEVICE pic16F873, PROTECT_OFF \'Kod Protek kapal?
\'@ DEVICE pic16F873, MCLR_OFF \'MCLR pini kullan?l?yor.
@ DEVICE pic16F873, XT_OSC \'Dahili osilatör kullan?lacak
DEFINE OSC 4
\'---------------------------------------------------------------------
SYMBOL SDO=PortC.5
SYMBOL SDI=PortC.4
SYMBOL SCK=PortC.3
SYMBOL NSEL=PortC.2
SYMBOL NIRQ=PortC.1
SYMBOL Lk=PortA.2
SYMBOL Ls=PortA.4
SYMBOL Buton=PortA.0\'Devrede buton
SYMBOL DATA_PINI=PORTC.4
SYMBOL CLK_PINI=PORTC.3
ADRS  VAR  word
E_OKU VAR WORD
E_GIRIS Var Byte
E_CIKIS Var Byte
SSPSTAT=%11111100
SSPCON.1=%10101000
SSPCON.2=%01010111
CLEAR
BILGI VAR BYTE
\'**********************************************************************
BASLA:
HIGH NSEL
low nsel
IF PORTA.0=1 THEN
LOW NIRQ
HIGH PORTA.2
PAUSE 5
HIGH BILGI
ELSE
LOW LK
LOW BILGI
ENDIF
GOSUB  E_YAZ
HIGH NIRQ
HIGH NSEL
LOW BILGI
  GOTO BASLA
  END                                         
E_YAZ:
       HIGH NSEL                       
       LOW NSEL                       
       HIGH NIRQ
       Shiftout DATA_PINI,CLK_PINI,0,[BILGI ]
      LOW NIRQ
       High NSEL                     
       Return
       END

burada amacim birinci devrede butona bastigimda ote taraftaki devredeki led yansin....

meseler

merhabalar....
programda yaptigim degisikler sonucunda isisde yaptigim denemede calisiyor ama pratikte calismiyor ....
alici bolumunun programi.....
Include \"Modedefs.Bas\"
PORTA=0
PORTB=0
PORTC=0
\'CMCON=7 \'Tum P?nler I/o
ADCON1=7
OPTION_REG.7=1 \'Dah?l? PullUp lar ?ptal
TRISB=%00000000 \'PortB.0 giris digerleri ç?k?s yap?ld?.
TRISA=%00000001 \'A port\'u tamam? ç?k?s yap?ld?.
TRISC=%00010000
\'-----------------------------------------------------------------
@ DEVICE pic16F873A\'islemci 16F628
@ DEVICE pic16F873A, WDT_on \'Watch Dog timer aç?k
@ DEVICE pic16F873A, PWRT_ON \'Power on timer aç?k
@ DEVICE pic16F873A, PROTECT_OFF \'Kod Protek kapal?
\'@ DEVICE pic16F873, MCLR_FF \'MCLR pini kullan?l?yor.
@ DEVICE pic16F873A, XT_OSC \'Dahili osilatör kullan?lacak
DEFINE OSC 4
\'---------------------------------------------------------------------
SYMBOL SDO=PortC.5
SYMBOL SDI=PortC.4
SYMBOL SCK=PortC.3
SYMBOL NSEL=PortC.2
SYMBOL NIRQ=PortC.1
SYMBOL Lk=PortA.2
SYMBOL Ls=PortA.3
SYMBOL Buton=PortA.0
SYMBOL DATA_PINI=PORTC.4
SYMBOL CLK_PINI=PORTC.3
ADRS  VAR  word
ALINAN VAR WORD
E_OKU VAR WORD
E_GIRIS Var Byte
E_CIKIS Var Byte
SSPSTAT=%10000001
SSPCON.1=%01100000
\' SSPCON.2=%00111111
CLEAR
BILGI VAR BYTE
\'**********************************************************************
BASLA:
  HIGH NSEL
PAUSE 5
LOW NSEL
   LOW NIRQ                                     
   Shiftin DATA_PINI,CLK_PINI,0,[ALINAN]     
         \'Shiftin DATA_PINI,CLK_PINI,0,[ALINAN]
         \'Shiftin DATA_PINI,CLK_PINI,0,[ALINAN]
   HIGH NIRQ                         \'
   IF ALINAN=1 THEN
   HIGH LS                         
   PAUSE 100
   ELSE
   LOW LS
   ENDIF                       
   GOTO BASLA
   END
      
sorunlar daha cok verici bolumunden gozukuyor.....onun programi asagidaki gibidir....
Include \"Modedefs.Bas\"
PORTA=0
PORTB=0
PORTC=0
\'CMCON=7 \'Tum P?nler I/o
ADCON1=7
OPTION_REG.7=1 \'Dah?l? PullUp lar ?ptal
TRISB=%00000000 \'PortB.0 giris digerleri ç?k?s yap?ld?.
TRISA=%00000001 \'A port\'u tamam? ç?k?s yap?ld?.
TRISC=%00000000
\'-----------------------------------------------------------------
@ DEVICE pic16F873A\'islemci 16F628
@ DEVICE pic16F873A, WDT_on \'Watch Dog timer aç?k
@ DEVICE pic16F873A, PWRT_ON \'Power on timer aç?k
@ DEVICE pic16F873A, PROTECT_OFF \'Kod Protek kapal?
\'@ DEVICE pic16F873, MCLR_OFF \'MCLR pini kullan?l?yor.
@ DEVICE pic16F873A, XT_OSC \'Dahili osilatör kullan?lacak
DEFINE OSC 4
\'---------------------------------------------------------------------
SYMBOL SDO=PortC.5
SYMBOL SDI=PortC.4
SYMBOL SCK=PortC.3
SYMBOL NSEL=PortC.2
SYMBOL NIRQ=PortC.1
SYMBOL Lk=PortA.2
SYMBOL Ls=PortA.3
SYMBOL Buton=PortA.0
SYMBOL DATA_PINI=PORTC.5
SYMBOL CLK_PINI=PORTC.3
ADRS  VAR  word
E_OKU VAR WORD
E_GIRIS Var Byte
E_CIKIS Var Byte
ALINAN VAR BYTE
SSPSTAT=%10000000
SSPCON.1=%10100000
\'SSPCON.2=%01010111
CLEAR
BILGI VAR BYTE
\'**********************************************************************
BASLA:
HIGH NSEL
PAUSE 5
low nsel
IF BUTON=1 THEN
HIGH LK
HIGH NIRQ
BILGI=1
PAUSE 10
ELSE
LOW NIRQ
LOW LK
BILGI =0
ENDIF
GOSUB  E_YAZ
  GOTO BASLA
  END                                         
E_YAZ:
       HIGH NSEL                     
       LOW NSEL                       
       HIGH NIRQ
       Shiftout DATA_PINI,CLK_PINI,0,[BILGI ]
      Shiftout DATA_PINI,CLK_PINI,0,[BILGI ]
       Shiftout DATA_PINI,CLK_PINI,0,[BILGI ]
       LOW NIRQ
       High NSEL                     
       Return
       END

     
burada verici aktifken yaklasik 0.5A cekmesi beklenirken devremde 0.01A cekiyor.....

ete

Böyle bir sistemde temel sorun kesinlikle senkron yakalama sorunudur.
Yani veren, bilgiyi yolladığı anda Alan'ında almaya hazır olması lazımki gelen bilgi alınsın. AKsi halde ya bilgi alınmayacak yada yanlış alıncaktır. (yanlış alınma yollanan bilginin ortasından girilip eksik bit alınması ile gerçekleşir)
O halde bir şekilde senkron yakalanması gerekiyor.
Bu aşamada SPI çalışan cihazlara bakıldığında select ucunun fonksiyonu ortaya çıkmaktadır. Bu pin haberleşmenin başlangıcına işaret etmekte ve ardından yapılan haberleşmede bilgiler sağlıklı alınıp verilmektedir.
İki pic'i haberleştirmeye çalıştığına göre her ikisinin data ve Clk uçları aynı olabilir. Ancak select uçları farklı olmalıdır. Tabiiki Haberleşme çift yönlü yapılacak ise. Tek yönlü haberleşmede tek select ucu olabilir.
Burada hemen belirteyimki bu şekilde picleri hiç haberleştirmedim. Ben genelde seri haberleşmeyi kullanırım.  Bana daha kolay geliyor.
Ancak mantığım işin nasıl yapılacağı konusunda aşağıdaki şekilde davran diyor.
1. Bilgiyi kim yollayacak ise Alıcının select ucunu HIGH yapar. Bu vericiden alıcıya bir bilgi yollanacağına dair işarettir aynı zamanda.
Alıcı select ucunun High olup olmadığına sürekli bakmak zorundadır. High ise alma konumuna (alma alt programına) geçmelidir.
2. Burada yine alan tarafın vericiden herhangi bir bilgi yollanmışmı yollanmamışmı bakması gerekir. Bunun işaretide CLK palsi olabilir.
Normalde komutlar bu işi otomatik yapmaktadır. Bu nedenle Alıcı select pini high olmuş ise hemen alma etiketine gidip SHIFTIN komutunu çalıştımalıdır.
3. Vericide select pinini high yaptıktan sonra hemen Shiftout komutunu bir kere çalıştırıp bırakmalıdır diye düşünüyorum.
4. Şayet bilgi alınmamış ise işlem yenilenebilir.
Bu şekilde bir senkron yakalanabileceği kanaatindeyim.

Ete
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

meseler

merhabalar...
bende genelde bu gune kadar yaptigim devrelerde SPI kulanmadim cunku diger sisteme alismis ve sorun cikmiyordu...hem merakimdan hemde forumlarda gorup satin aldigim bir modulde SPI sistemi vardi onu cozmeye calisiyorumda onun icin bulastim...(bu modulun fiyatida digerlerinin 10 da 1 kadardir, cuk kucuktur , daha uzun mesafede calisiyor , cok az enerji harciyor,....) Birde sanirim genel olarak bu SPI haberlesme sistemleri bir cok elektronik malzemede kulaniliyor ....eepromlarda kulaniliyor...
___ Acaba her pic\'in kiristaleri ayni olsa (4mhz)boylelikle kendileri uretikleri CLK leride ayni olmazmi....
___Bir devre verici konumundayken sadece bilgl geldiginden aktif olacak diger durumlarda pasif kalacaktir..Diger devrede surekli alici konumundan olacagi icin hep aktif olmamalimidir...
___yaptigim devrenin senkron sorunu oldugu noktasindan hem fikir oldugumuz kesin...ama nekar ugrastimsada bir turlu sorunu cozemiyorum...
___yaptiginiz oneriler cercevesinden ugrasmaya devam edecegim...umarim bazi seyleri sonuca baglarimda bunlari sizinle paylasayim ...cunku ben ugrastikca bu SPI sisteminin faydali oldugunu dusunuyoeum....
                     verdiginiz bilgiler icin simdiden tesekurler.....

DİRİLİŞ_MAK

Alıntı YapGördüğün gibi Clk palsinin düşen kenarında data pininde bulunan bilgi karşıya aktarılmış olacaktır.

Nuda dediğiniz clock palsinin düşen kenaraında data pininde bulunan bilgi karşıya aktarılır olayını DATA, Clock ve Chip Enable sinyallerini bir grafikte kare dalga ile nasıl gösterebiliriz?

Örneğin elimde aşağıdaki gibi sinyaller varsa bunun Chip Enable çıkış sinyalleri nasıl olur?

[IMG]http://img381.yukle.tc/images/3843Adsiz.png[/img]

ete

Bana kalırsa çizdiğin şekil yanlış. Üstte yer alan CLK olacak ortadaki Data.
CE o chipin aktif edilmesi için verilmesi gereken sinyaldir. Kiminde CE bacağının LOW'a çekilmesi ile gerçekleşir, Kiminde ise HIGH'a çekilmesi ile gerçekleşir. Genelde LOW'a çekildiği için LOW'a göre açıklamak gerekirse Data çıkışından önce CE ucu LOW'a çekilmeli daha sonra chip aktif olduğu için datalar clk palsleri eşliğinde çıkmalı ve sonunda CE ucu HIGH a çekilerek haberleşme durdurulmalıdır.

Ete
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

fryrmnd

ete hocam gene döktürmüş... bende bi baktım ama farketmediydim :) şuan bende spi hardware haberleşme kısmını okuyorum... satır satır.. şükür anladım... cke ckp iklisine göre clock palsının ideleden active mi activedn idleye mi geçişinde verinin yollanacağı belrileniyo... ckp ide idlenin high mı low mu olacağını blirliyo.... çizemedim ama diriliş kardeş eğer takılırsan gene yardım etmeye çalışırım... tabii spi uzmanı değilim ama kanımca anladım verinin nsaıl yollancağını...

Sdttn

Merhaba,
Peki donanımlsal SPI nasıl kullanılır PBP'da?

-Hasan-

#13
Donanımsal SPI kullanmak için, PBP ' de hazır bir komut yoktur. (Örneğin donanımsal PWM ' in kullanılırken HPWM, donanımsal seri iletişim için HSEROUT gibi)
Bu yüzden bu manuel olarak yapılacak. Kullanılacak 3 tane register var. Bunlar:

1) SSPSTAT --> MSSP Modülü Durum Registeri
2) SSPCON --> MSSP Modülü Kurma Registeri
3) SSPBUF --> MSSP Modülü Gönderme-Alma Registeri (Yollanacak veri buraya yüklenir)

Bunun yanında bir de SSPCON2 registeri vardır ancak bu register I2C modunda kullanılır.

Örneğin donanımsal SPI ile 74HC595 ' e veri yollamak için:

VERI VAR BYTE ' Yollanacak Veri

SYMBOL ENABLE=PORTX.X ' ENABLE İçin Kullanılacak Pin Seçildi

TRISC.3=0 ' SCK Çıkış Yapıldı
TRISC.4=1 ' SDI Giriş Yapıldı
TRISC.5=0 ' SDO Çıkış Yapıldı

'Burada MSSP Pinleri Ayarlandı

SSPSTAT=$40 ' Veriden Sonra Clock Yollanacak
SSPCON=$22 ' Clock Boştaken Low Olacak

' MSSP Kuruldu

LOW ENABLE ' ENABLE Boştayken Low

...
...
...

ANA:
VERI=XX ' XX Verisini 595 ' e Yolla
GOSUB YOLLA

...
...
...

YOLLA:
SSPBUF=VERI
BITMEDI:
IF SSPSTAT.0=0 THEN BITMEDI 'SSPSTAT.0=1 Olunca yollama bitiyor.
HIGH ENABLE
PAUSEUS 1
LOW ENABLE
RETURN 'Veri Yollandı


PIC16F877 referans alarak düzenledim, daha ayrıntılı bilgi için datasheet ' te MSSP modülüne bakabilirsiniz. Ayrıca 74HC595 ' e nasıl veri yollandığı hakkında daha ayrıntılı bilgi için ETE Hoca ' nın 8. Picbasic dersine bakabilirsiniz.

Sdttn

#14
@Hasan Oguz
Cevap için çok teşekkür ederim. Anlayamadığım yerler var;
Donanımsal SPI'de kullanılacak pinler belirli değil mi, (16F877'de RC5=SDO, RC4=SDI, RC3=SCLK) neden TRIS registerini kullanma gereği duydunuz? SSPBUF kaç bitlik?

Edit: Eksik teknik ingilizcemden dolayı DATASHEET'leri iyi anlayamıyorum. Anlayışınız için teşekkür ederim.

____________________________________________________
Teşekkürler.
PBP ile PIC'e giriş yapmış hobici.