Picproje Elektronik Sitesi

DERLEYİCİLER => PIC C => Konuyu başlatan: universitelim54 - 25 Ağustos 2018, 15:00:25

Başlık: SPI Iile 32bit Veri Okuma ?
Gönderen: universitelim54 - 25 Ağustos 2018, 15:00:25
Arkadaşlar mrb.

cs5530 adc entegresinden SPI ile veri okumaya çalışıyorum ancak veri çıkışı 32 bit pic'te ise SPI 8 bit veri okuyabiliyor. bu durumu nasıl çözebilirim küçük bir algoritma hazırlayabilecek bir arkadaş var mı ?
Başlık: Ynt: SPI Iile 32bit Veri Okuma ?
Gönderen: mylord92 - 25 Ağustos 2018, 15:05:06
4 kere peş peşe oku hocam  :)
Başlık: Ynt: SPI Iile 32bit Veri Okuma ?
Gönderen: elektronart - 25 Ağustos 2018, 15:12:13
soru cevabı içinde barındırıyor aslında. 32/8=4 kez ardışıl okuma yaptığında tüm verilere ulaşırsın. Eğer bunu nasıl yapacağını bilmiyorsan bu çip için hazırlanmış kütüphaneleri bulmaya çalış. Arduino için olma ihtimali çok yüksek. Sonra onu alıp istediğin işlemciye port edebilirsin.
Başlık: Ynt: SPI Iile 32bit Veri Okuma ?
Gönderen: universitelim54 - 25 Ağustos 2018, 15:13:38
4 kez okuduktan sonra veriyi long tipinde dönüştürmem gerekecek o nasıl olabilir.
Başlık: Ynt: SPI Iile 32bit Veri Okuma ?
Gönderen: elektronart - 25 Ağustos 2018, 15:22:13
bu kadar önyargılı olmamak lazım. Belki bulacağın kütüphanenin içinde bu dönüşüm yapılıyor olacak. Yapılmıyor bile olsa yapmanın bir yolu bulunur. Bulmak biraz zaman alabilir ama bu kodlama ve terminoloji anlamında ilerisi için ciddi birikim sağlar.
Yine de ben çözümü burada görmek isterim dersen aşağıda bir örnek bulabilirsin.

long num = 0;
for(int i = 0; i < 4; i++) {
    num = (num << 8) | byte_array;
}
Başlık: Ynt: SPI Iile 32bit Veri Okuma ?
Gönderen: quarko - 25 Ağustos 2018, 21:58:56
Alıntı yapılan: universitelim54 - 25 Ağustos 2018, 15:13:384 kez okuduktan sonra veriyi long tipinde dönüştürmem gerekecek o nasıl olabilir.

altı üstü 4 byte ı 32bit te birleştirmek için for döngüsü kullanmana gerek yok hocam. Hem kod alanından hem hızdan kaybettirir. Şu şekilde yapabilirsin. Byte[0], Byte[1], Byte[2], Byte[3] sıra ile okuduğun 8bitlik veriler olduğunu varsayarak;

Value = ((uint32_t)Byte[0] << 24) | ((uint32_t)Byte[1] << 16) | ((uint32_t)Byte[2] << 8) | (Byte[3]);

şeklinde bir kod satırı ile işini halledebilirsin.

Başlık: Ynt: SPI Iile 32bit Veri Okuma ?
Gönderen: universitelim54 - 26 Ağustos 2018, 13:02:52
süpersiniz arkadaşlar tşk