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]);
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]);
@SpeedyX hocam;
Cozumunun güzel aklıma gelmemişti.
Teşekkürler hocam,
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]);
}
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]);
@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.
i yi 3 ile toplayıp 6 ya göre modunu aldım ama hesap yanlış çıkıyor galiba
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.