Picproje Elektronik Sitesi

SERBEST BÖLGE => Programlama ve Algoritma => Konuyu başlatan: M_B - 10 Nisan 2014, 14:41:44

Başlık: Veri Gönderim
Gönderen: M_B - 10 Nisan 2014, 14:41:44
Merhaba arkadaşlar;


  for (i=0;i<5;i++)                             
     {
       spi_write(Ram[j][adr]);
       
     }


şeklindeki fonksiyonumda J nin alabilcegi değerleri
(0-3 ) , (1-4) ,(2-5) şeklinde nasıl yapabilirim.

altki şekilde göndermem gerekiyor.

spi_write(Ram[0][adr]);
spi_write(Ram[3][adr]);

spi_write(Ram[1][adr]);
spi_write(Ram[4][adr]);

spi_write(Ram[2][adr]);
spi_write(Ram[5][adr]);


Başlık: Ynt: Veri Gönderim
Gönderen: SpeedyX - 10 Nisan 2014, 14:48:33
Merhaba,

J ye bağlı bir tablo yapmak dışında bir çözüm görünmüyor.

const u8 list[] = {0,3,1,4,2,5};

for (i=0;i<5;i++)                             
   spi_write(Ram[list[j]][adr]);
Başlık: Ynt: Veri Gönderim
Gönderen: M_B - 10 Nisan 2014, 14:55:19
@SpeedyX hocam;
Cozumunun güzel aklıma gelmemişti.

Teşekkürler hocam,

Başlık: Ynt: Veri Gönderim
Gönderen: ErsinErce - 10 Nisan 2014, 15:04:33
  for (i=0;i<3;i++) {
       spi_write(Ram[j][adr]);
       spi_write(Ram[j+3][adr]);
     }


  for (i=0;i<5;i=((i+3)%6)) {
       spi_write(Ram[j][adr]);
     }
Başlık: Ynt: Veri Gönderim
Gönderen: SpeedyX - 10 Nisan 2014, 15:07:18
Hocam birşey değil,
Diğer çözümler ek hesap gerektirir.

Bir uyarıda daha bulunayım. For döngüsündeki i<5 den dolayı son veri gönderilmez.
sizeof kullanarak tam otomatize etmek mümkün.
const u8 list[] = {0,3,1,4,2,5};

for (i=0;i<sizeof(list);i++)                             
   spi_write(Ram[list[j]][adr]);
Başlık: Ynt: Veri Gönderim
Gönderen: M_B - 10 Nisan 2014, 15:16:30
@ErsinErce Hocam;
usteki fonksiyonu nuzu anladım ama altaki fonksiyondan bir şey anlamadım :(

  for (i=0;i<5;i=((i+3)%6)) {
       spi_write(Ram[j][adr]);
     }

[/quote]

@ErsinErce & SpeedyX hocam; ikinizin cozumleri de işimi goruyor
teşekkür ederim.


Not: SpeedyX hocam uyarınızı dikkate alacam dediğinizde haklısınız.

Başlık: Ynt: Veri Gönderim
Gönderen: ErsinErce - 10 Nisan 2014, 15:26:55
i yi 3 ile toplayıp 6 ya göre modunu aldım ama hesap yanlış çıkıyor galiba
Başlık: Ynt: Veri Gönderim
Gönderen: furkan.seker - 10 Nisan 2014, 15:27:13
ikililer arasında bağıntı var mı? yani
0-3
1-4
2-5
göndericeksiniz, diyelim bir tane daha veri göndereceksiniz o da
3-6 mı olur?

yani veriyi nasıl kaydediyorsunuz? ona göre kurabilirsiniz eğer bağıntı varsa.

  for (i=0;i <3;i++) {
       spi_write(Ram[i][adr]);
       spi_write(Ram[i+3][adr]);
     }

şeklinde yapabilirsiniz. bu sayede yeni birşeyler daha göndermek istediğiniz zaman liste güncelleme derdinde kurtulursunuz.

birşey daha ekleyeyim, array'in boyutunu almak için sizeof(array)/sizeof(array[0]) yapmanız lazım.