Veri Gönderim

Başlatan M_B, 10 Nisan 2014, 14:41:44

M_B

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]);


İmkanın sınırlarını görmek için imkansızı denemek lazım.                                                             Fatih Sultan Mehmet

SpeedyX

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]);

M_B

@SpeedyX hocam;
Cozumunun güzel aklıma gelmemişti.

Teşekkürler hocam,

İmkanın sınırlarını görmek için imkansızı denemek lazım.                                                             Fatih Sultan Mehmet

ErsinErce

  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]);
     }

SpeedyX

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]);

M_B

@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.

İmkanın sınırlarını görmek için imkansızı denemek lazım.                                                             Fatih Sultan Mehmet

ErsinErce

i yi 3 ile toplayıp 6 ya göre modunu aldım ama hesap yanlış çıkıyor galiba

furkan.seker

#7
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.