İki tane PIC16F877A arasında SPI ile haberleşen örnek PBP devre

Başlatan toprak, 29 Aralık 2013, 21:30:32

Mymale26

hocam o zaman sizin attıgınız programları deney setınde bi deneyim ben durumdan haberdar ederim hocam teşekkürler....

Mymale26

Hocam biz bu dosyadakı pıc12F629 kullanılmıs ben 16F877 kullanmak istiyorum ama baglantısını yapamadım hocam yardımcı olurmusunuz?
Saygılar. 

ete

Modülün IRQ  pini haricindekiler çok önemli değil. Nereye bağlarsan bağla. Ama IRQ pinini PortB.0 pinine bağlaman gerek.
Dolayısıyla PORTB.0 kesmesini de düşen kenarda kesme olacak şekilde ayarlamalısın.
Bağlantıda CE ile CSN pinlerini birleştirerek tek pine bağlamışlar. CSN aktif LOW dur. Yani SPI haberleşmesi yapılacağı zaman bu pin LOW a çekilmelidir. CE pini Chip Enable olarak çalışıyor ancak alıcı veya verici olma durumunda değişik konumları oluyor.
Bu nedenle CE pinini ayrı tutmakta bence fayda var. Ancak sistemin aynısını yapacak isen sende birleşik bağla istersen.

Ete

Mymale26

hocam konuyla alakalı deyil ama acaba form faktörü nedir bi bilginiz varmı ?
Saygılar.

ete


Mymale26

Hocam sizin attıgınız programları ne kadar ınceledıysek genede pek bısey anlayamadık cok uzun ve karısıklar derleyemedık bıle altı ustu kablosuz nrf ıle led yakalım dedık yapamadık hocam programı yazamadık nrfyı pıcı falan boarda kurduk ama yazılımı halledemedık nasıl yapıcaz hocam...?
Saygılar

ete

O sıralar biraz incelemiş ve karmaşık ancak çok zor olmadığına karar vermiştim. Ama şu anda sorsanız bir şey hatırlamıyorum.
Bu alet o kadar karmaşıkki program yazmak için başka hiç bir şeyle ilgilenmeden ona konsantre olmak gerekir.
Başka yolu yok oturup ders notu hazırlar gibi bütün komut şekillerini yazıp çıkartacaksınız.
Bence o programlardan biriside çalışabilecek karekterde idi.

Ete

Mymale26

peki hocam teşekkürler biz iyice hazırlanalım komutlara vs takıldıgımız bır şey olursa sorarız hocam yapıcaz bunu elinde sonunda
Saygılar

Mymale26

hocam spı yı registerleri inceledik fakat tam konuyu hala anlamı deyilim sizden rica etsek pıc16f877 için nrf24l01 in spı haberleşmesını yazarmısınız gerı kalan kodları bız yazarız sızın yazdıgınız kodların uzerınde anlamaya calısırız sonra yoksa projemızı yapamicaz hocam yardımcı olursanız sevinirim ?
saygılar

ete

Bu işi yapabilmeniz konusunda ciddi endişem var.  Bu kanıya en son mesajınıza bakarak vardım.
Aradan epeyce zaman geçti ne çalışma yaptınız bilemiyorum ama bana sıfır çalışma gibi geliyor.
Size örnekler verdim. Hepsine SPI_READ , SPI_WRITE şeklinde alt programlar var. Bunlardan READ olanı modülden byte okuma, WRITE olanıda modüle Byte yazma örneğidir zaten. Elinizin altında her şey var siz hala yardım bekliyorsunuz.
Bu modülü bence kullanmadan başka bir modül ile işinizi halledin. Özellikle kullanımı kolay olan USART (seri Port) kullanan bir modül olursa işiniz çok kolaylaşır. Üstelik buna ait bir sürü örnekde var. Bu modül konusunda neden ısrar ediyorsunuz onuda anlamış değilim. Gerçekten insana saç yoldurabilir bu modül. Çok külfetli bir kullanım şekli var. O yüzden ben bile uğraşmaya girmeye çekiniyorum. Girsem elbette sonuç alırım ama bu sonuç 15 günden az bir sürede gelmeyeceği gibi 1-2 ay da sürebilir. Bu yüzden şimdilik bulaşmamaya çalışıyorum.
Bir defa yoğun bir SPI haberleşmesi olacağı için hız önem kazanacak. Bu yüzden SHIFTOUT komutları ile değil donanımsal SPI port kullanılarak bu iş halledilmelidir. Bu bir zorunluluk gibi bir şey. Verdiğim örnekler de aynı portu kullanmışlar zaten.
Önce piclerin donanımsal SPI portu nu inceleyin. İŞlemci olarak 18F452 kullanın ve buna ait donanımsal SPI portunu incelemeye alın. Bu işide beceremiyorsanız zaten toptan vaz geçin.

Ete



Mymale26

hocam biz şimdi donanımsal spı yı anladık registerler falan devremizi kurduk fakat isite deneme sansımız olmadıgı ıcın deneme yöntemine gecmeden önce spı ıle ısıte deneye bılecegımız bı proje varmı bakındık ama pek bısey bulamadık hanı ısıte spı yı calıstıralım anladıklarımız dogrumu deyılmı bılelım dıye onu yaparsak kablosuz haberlemeyı yapabılecegımıze ınanıyoruz oyle yada boyle bu projeyı yapıcaz hocam yardımcı olursanız sevınırız
saygılar

ete

İşlemciye SPI portundan bir 74HC595 bağlayın. 595 çıkılarınada direk led bağlayın. Sonra bu ledleri SPI dan vereceğini 0-255 arası sayılarla yakmaya çalışın.  Mesela %10101010 gönderin birer atlamalı olarak ledler yanacakmı gözlemleyin. %11110000 gönderin bakın verdiğiniz değere uygun yanıyorlarmı?.

Ete

Mymale26

Hocam 3 gündür uğraşıyoruz registerleri anlamak ve donanımsal spı haberleşmesini yapabilmek için fakat reelde başarılı degiliz....
bunları yazabildik devamı getiremedik denedik fakat çalışmadı registerlerin dogru yazabildigimizi sanıyoruz bide siz bakarmısınız hocam devamında nasıl bir yol izleyebilecegimiz bulamadık yani programa ne dememiz lazım çözemedik belkide izledigimiz yol yanlış bilemiyoruz
hocam bide baktıgımız cogu örnekte SSPEN döngü içinde setlenmiş tam olarak ne yapılmak ıstenmıs acaba ?


SSPEN VAR SSPCON.5   
CKP   VAR SSPCON.4   
SMP   VAR SSPSTAT.7 
CKE   VAR SSPSTAT.6 
SSPIF VAR PIR1.3
SSPM0 var SSPCON.0     

   TRISC =%00000000  ' PORTC ÇIKIŞ AYARLANDI
   SSPEN = 1         ' MSSP MODUL KONTROL BİTİ
   CKP = 0           ' DÜŞEN KENAR BOŞTA
   CKE = 0           ' DÜŞEN KENAR
   SSPIF = 0         ' clear buffer full status
   SMP = 0           ' ORTADA ÖRNEKLEME AL
   SSPM0 = 1         'MASTER  YAPTIK

VERI VAR PORTC.5
SAAT VAR PORTC.3
KESME VAR PORTC.0

ete

Gerçekten ne yaptığınızı anlamak zor. Aksine ne yapmadığınızı anlamak kolay. Zira Donanımsal seri port konusunu incelemediğiniz öylesine yüzeysel baktığınız veya hiç bakmadığınız bu sorunuzdan anlaşılıyor. Nedenmi?
SSPEN nedir? bunu kendinize sordunuzmu? hayır elbette. Bakın programda ne yazmışsınız;
"SSPEN VAR SSPCON.5  "
bu ne demek SSPEN SSPCON registerinin 5 nolu biti demek oluyor.
Peki Bu bit ne iş yapıyor hemen data sheet'i açıp SSPCON registerini bulup 5 nolu bitine bakarsanız şunları yazıyor olduğunu görmeniz gerekirdi.

"bit 5 SSPEN: Synchronous Serial Port Enable bit
1 = Enables serial port and configures SCK, SDO, SDI, and SS as serial port pins
0 = Disables serial port and configures these pins as I/O port pins"
Ne yazıyor orada , Senkron SeriPort Enable biti diyor. 1  verilirse Seri port seri portu aktif hale getiriyor ve SCK, SDI, SS pinlerinin seri port pini olarak kullanılmasını sağlıyor.
0 (sıfır) verilirse seri portı kapatıyor ve ilgili pinler normal giriş çıkış pini oluyor.

Daha fazla bir şey söylemek istemiyorum. Ama söylemeden de geçemiyorum. Zira çalışmıyorsunuz ve buna bağlı olarakda bir şey üretemiyorsunuz. Bana kalırsa hazır bir şeyler elde edip ondan yararlanmaya çalışıyorsunuz buna emin oldum iyice.
Benden size bir baba tavsiyesi, çalışın araştırın ve öğrenin. Günü değerlendirmeyin geleceği düşünün. İş hayatınızda da benzer sorunlarla karşılaşacağınızı unutmayın. Kimse size yardım etmez. Bilgiye ulaşmayı bilmeniz gerekir. Bakın ben bir amatör olarak bunları kendi kendime öğrenmiş isem siz bunu meslek edinip bu işten ileride para kazanacaksınız sizin yalayıp yutmanız lazım. Başkalarının eline ağzına bakmayın. Sıvayın kolları ve konuya daha ciddi yaklaşın.

Size kolaylıklar dilerim.
Ete

myalvac

ETE Hocam SPI hakkındaki detaylı ve faydalı bilgiler için teşekkürler..

Powered by EzPortal