i2c + ccs c + c (birsürü c var hemde hepsi sorunlu)

Başlatan gambit1244, 26 Ocak 2012, 19:13:06

gambit1244

merhaba arkadaşlarım ustadlarım;

i2c ile tırmalıyorum dünden beri

basit basit kodlar yazıp i2c den yolladıgım bilgiyi logic analyzerimden okumaya çalışıyorum ama
onlarca programcık denememe rağmen logic den bir tane iniş çıkış yaptıramadım

force_hw mi dersiniz force_sw mi dersiniz hepsini denedim
donanımsal pinlerin yanısıra yazılımsal olarak rastgele pinlerdende çıkış alarak denedim
birçok çeşitli hazır kodlardan denedim, serdar çiçeğin uygulamalarındakileri denedim fakat i2c yi
PIC18F4580 de aktif edemedim

birtane 0x55 yollasam sorunum kalmayacak sizce bu kodda i2c yi aktif etmeyen yada vs ne olabilir.

yada daha once 18 serisi yada vs vs ile çalıştırdığınız bir kod varmıdır.

şimdiden şükranlarımı sunarım..

#include <18F4580.h> 
#device *=16 ICD=TRUE 
#use delay(clock=20M) 
//set up i2c peripheral and use hardware SSP 
#use i2c(Master,sda=PIN_C0,scl=PIN_C1,FORCE_sW) 
#use rs232(baud=38400, xmit=PIN_C6, rcv=PIN_C7)
#fuses HS,BROWNOUT,PUT,NOLVP 



void main() 
{    
printf("1");

   while(1) 
   { 
   printf("2");
    i2c_start();
    printf("3");
   i2c_write(0x55); 
   printf("4");
      i2c_write(0x55); 
      printf("5");
     i2c_stop(); 
     printf("6");
   
   }
}



programda özellikle her satırda bir printf ekledim hangi satırda tıkandığını anlamak için
1 2 3 yazıyor 4 e geçemeyip tıkanıyor program  i2c_write(0x55);  da bir sorun var yada benim config lerim hatalı bu en sade olanı birçok örnek denedim ama nafile
[email]tufan_ozbek@hotmail.com[/email] Yesterday is history. Tomorrow is a mystery. Today is a gift aslında bütün mesele bu.

skara1214

i2c_write(); komutu 8 bit yazar ve karşıdan acknowledge biti bekler.Eğer boşta deniyorsanız karşıdan sinyal gelmediği için orada takılır.
Herkes ölür ama herkes gerçekten yaşamaz

Ersin

Arkadaşın dediği gibi 8 bit olarak data gonderir , cevap gelmesini bekler.
Kontrol edeceğin entegrenin ds sinde açıklamalar vardır mesela
start - adres -Mbyte - Lbyte-stop    haberleşme sıralaması şeklinde tablolar olması gerekir.

gambit1244

Alıntı yapılan: Ersin - 26 Ocak 2012, 19:35:08
Arkadaşın dediği gibi 8 bit olarak data gonderir , cevap gelmesini bekler.
Kontrol edeceğin entegrenin ds sinde açıklamalar vardır mesela
start - adres -Mbyte - Lbyte-stop    haberleşme sıralaması şeklinde tablolar olması gerekir.

kontrol edeceim entegre yine kendi pic im olacak fakat bu pici daha almadım bende logic ile çalışmalara başlayım demiştim ozaman
sorun belli oldu birazdan denerim çok sağolun
[email]tufan_ozbek@hotmail.com[/email] Yesterday is history. Tomorrow is a mystery. Today is a gift aslında bütün mesele bu.

CoşkuN

I2C hatlarına Pull up dirençleri bağlı mı? Bundan da olabilir...

gambit1244

Alıntı yapılan: CoşkuN - 27 Ocak 2012, 09:13:23
I2C hatlarına Pull up dirençleri bağlı mı? Bundan da olabilir...

bağlı değil hocam onu düşündüm aklıma geldi fakat
logic anaylzer den baktıgımda tık bile yok bir iniş cıkış bile yok buyüzden bende yazılımsal birşey olduğuunu düşündüm
[email]tufan_ozbek@hotmail.com[/email] Yesterday is history. Tomorrow is a mystery. Today is a gift aslında bütün mesele bu.

t2

direnç yoksa, bir de aynı, sıfır da  olur. yani tık olmaz.

gambit1244

[email]tufan_ozbek@hotmail.com[/email] Yesterday is history. Tomorrow is a mystery. Today is a gift aslında bütün mesele bu.

skara1214

Herkes ölür ama herkes gerçekten yaşamaz

CoşkuN

http://en.wikipedia.org/wiki/I%C2%B2C
"I²C uses only two bidirectional open-drain lines, Serial Data Line (SDA) and Serial Clock (SCL), pulled up with resistors. Typical voltages used are +5 V or +3.3 V although systems with other voltages are permitted."

gambit1244

2 tane direnci vdd ye bağlıyoruz diğer uçlarınıda sda ve scl uçlarına
peki bunların değerleri ne olmalı bir yerine gore değişiyormu yoksa standartmı
[email]tufan_ozbek@hotmail.com[/email] Yesterday is history. Tomorrow is a mystery. Today is a gift aslında bütün mesele bu.

justice_for_all

Alıntı yapılan: gambit1244 - 27 Ocak 2012, 14:28:01
2 tane direnci vdd ye bağlıyoruz diğer uçlarınıda sda ve scl uçlarına
peki bunların değerleri ne olmalı bir yerine gore değişiyormu yoksa standartmı

2k ile 10 k arasında genellikle 4k7 ile pull up yapılır..
Deneyip de başaramayanları değil, yalnızca denemeye bile kalkışmayanları yargıla.   Gökhan Arslanbay

CaFFeiNe

Alıntı yapılan: gambit1244 - 27 Ocak 2012, 14:28:01
2 tane direnci vdd ye bağlıyoruz diğer uçlarınıda sda ve scl uçlarına
peki bunların değerleri ne olmalı bir yerine gore değişiyormu yoksa standartmı

I2C bus hızına göre değişir, hız yükseldikçe direnç değeri düşer, datasheetlerde yazar, I2C eeprom vs datasheetlerini inceleyebilirsiniz