spi haberlesme

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

fryrmnd

Hocam enson hatırladığım sspbuf 8 bitlik.Birde dediğiniz gibi zaten mssp spi aktif edince yani donanımı kullanırsan ilgili pinler giriş, çıkış,clock vs olarak ayarlanıyor.örnek  istersen
http://melabs.com/samples/PBP-mixed/spimast.htm
http://melabs.com/samples/PBP-mixed/spislave.htm
bunlar bence güzel. benzerini denedim ve 16f877a ile çalıştırdım.

-Hasan-

#16
Kardeşim ilk mesajımı yazarken birazcık dar bir zamanda yazmıştım, bu yüzden datasheet ' i o kadar ayrıntılı inceleyemedim. Haklısın, biraz evvel datasheet ' i bir daha inceledim ve pinlerin otomatik olarak ayarlandığını gördüm. Bazı kaynaklarda bizim de ayrıca pinleri ayarlamamızın yararlı olacağı söyleniyor hem bu yüzden, hem de "işi sağlama alalım" mantığıyla o şekilde ayrıca belirlemiştim, diğer donanımlarda da bu şekilde yapıyorum biraz da alışkanlık olmuş bu iş.

SSPBUF registeri 8 bitlik ' tir. Hem veri yollamada hem de veri almada bu register kullanılır. Sadece bu register değil diğer tüm registerler 8 bitlik ' tir. Çünkü PIC16F ve PIC18F ' ler 8 bitlik mikrodenetleyicilerdir. SSPBUF registerinde sen niçin böyle bir şeye takılmıştın?

Sdttn

Cevaplarınız için teşekkür ederim.
MCU'larda yeniyim, sorduğum sorular saçma olabilir her nekadar araştırıp sonra sorsamda.

SSpBUF 8 bitlik olduğunu datasheet'den anlamıştım soruyu sorduktan sonra kusura bakmayın.

Benim öğrenmek istediğim şu; daha uzun bilgi göndermek istediğimizde ne olacak? parçalı göndermeyi eğer alıcı aygıt kabul etmezse?
Yada hiç bir kesinti olmadan ardarda bilgi gönderebilir miyiz?

Bir şey bilmediğimde her şeyi bir anda öğrenmek istiyorum yanlış ama, öğrenme isteği...
Ben PT6311 diye bir entegreyle SPI'den haberleşmek istiyorum foruma konu açmıştım ama ilgilenen olmadı.
Konun linki: https://www.picproje.org/index.php/topic,34245.0.html


fryrmnd

Aynı bela benim başımda da var kardeşim.Ben de ısd serisi bi ses entegresi ile haberleşmeye çalışıyorum.Bu entegrede de bir komut bazen 8 byte olabiliyor.Nette yazılımsal spi kodu buldum.Bunda clock high clock low yaparak bit bit yolluyo.Baya bi çalıştırdı entegreyi.Aklıma 10 tane kayıt yapmak her kaydettiğim sesi akabinde çaldırmak geldi.Bazen 1 tur atıyor 2. tur herhangi bir kayıtta çalarken takılıp kalıyor.Bazen 2. tura hiç geçemeden farklı bir kaydı çalarken donuyor.Nerde doncağı belli olmuyo.Tabi her kayıt ve her çalma işlemi başlarken Slave Select durum değiştirmesi gerekiyo ama donup kaldığı zaman pic in Slave Select pinini kontol ediyorum hiç bir hayat yok.Acaba yazılımsal spi bu işi kaldıramıyor mu.Biraz daha deneme yapıcam ama ne olur sonuç hiç kestiremiyorum.
Senin durumda spi portu aktif edip 8 bit yolladıktan sonra  hemen interrupt flag(sanırım 1 oluyo) temizleyip  yeni veriyi yollarsan işin hallolur gibime geliyor.Kolay gelsin

frederic

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.

Merhabalar ETE hocamın anlattığı bu rakamların ifade ettiği mode ları ccs c de nasıl kuulanabiliriz acaba,donanımsal olarak bir adc okumaya çalışıyorum c de fakat mode ayarını tutturamadığım için değerler durmadan değişiyor.Bu konuda fikri olan paylaşırsa sevinirim.

setup_spi(spi_master | spi_h_to_l | spi_clk_div_4 );

Kullandığım spi ayarı bu,bu ayarda bilgilerin düşen kenarda alınacağı,clk sinyalinin 4'e bölünerek göderileceği ifade ediliyor.Ama data senkronu bittiğinde basic teki gibi clk sinyalini high da veya low da bekletebilecek bir komut yok,ihtiyacım olanda bu komut.

ulu beyin

merhaba arkadaşlar benim cok büyük bi problemim var oyüzden bilen duyan araştıran varsa lütfen iletime cevap yazsın yapmam gereken bi projem var bu projede bizden istenen sey iki dspic'i SPI ile haberleştirmem isteniyor bu projeyi yaparken en az 3 tane PWM kullanmam gerekior ayrıca cıkısımın ayarlanabilmesi de isteniyor:S bana bu konuda yardımcı olabilecek arkadasların cevaplarını bekliorum simdiden tesekkürler