i2c_read() ile i2c_read(0) arasındaki fark nedir

Başlatan coderun, 13 Temmuz 2013, 12:59:39

coderun

Arkadaşlar i2c_read() ile i2c_read(0) arasındaki fark nedir. Sonda eklenen 0 ne gibi bir değişiklik sağlıyor.

M_B

fonksiyona yazılan 0 (sıfır) okuma işinin bittiğini soyluyor.
fonksiyon icine bir şey yazılmazsa default olarak 1 kabul edilir.
1 ->ACK
0->NACK
anlamına geliyor.

ACK ve NACK anlamak icin i2c haberlesme protokolini incelemek gerekir.

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

coderun

sağol. verdiğin bilgiler ve biraz kitap kurcalamayla sorun giderildi.

yldzelektronik

#3
Alıntı yapılan: coderun - 13 Temmuz 2013, 18:19:55
sağol. verdiğin bilgiler ve biraz kitap kurcalamayla sorun giderildi.

Sürekli okuma modu var acaba orada 0 yada 1 bu amaçla mı?Nedir bilgilendirir misin?

i2c_read(0); yapıldığında sürekli okuma biti olan sspcon2 regde yer alan acken biti set ediliyor.Ancak burada dikkatimi bir şey çekti.Saçma bir şekilde fonksiyona parametre olarak 1 yada 0 yazılması fark etmeksizin rcen bitini set etmiyor.İlginç olanı ise veriyi nasıl alıyor?Soft i2c olabilir mi?
Kişinin başına gelen hayır Allah'tandır. Kişinin başına gelen şer nefsindendir. Nefislerimizle kendimize zulüm ediyoruz.

yldzelektronik

Yalnız burada anlamadığım bir nokta var.SSPCON2 kaydedicisinde yer alan acken bitini set ediyorum ancak sıralı okuma yapamıyorum.Ayrıca data sheette Automatic cleared by hardware demiş ancak hiç alakası yok.Sıralı okuma yapmayı deneyen var mı?
Kişinin başına gelen hayır Allah'tandır. Kişinin başına gelen şer nefsindendir. Nefislerimizle kendimize zulüm ediyoruz.

omereliusuk

eğer interruptta bunu yaptıysan olur. yalnız en son yapacaksın.
18f46k22 için
void  SSP_isr(void) 
{
i[0],[4]=*(0x0fc9);//gönderilen ve gelen veri buradan gidiyor veya geliyor.

if(sureklioku)   *(0x0fc5)|=16;//ssp1con2
}


if(sureklioku)   *(0x0fc5)|=16;//ssp1con2
biti set ettiğin zaman sürekli okur.