I2C serial eeprom Haberleşme Sorunu

Başlatan Ruzgarbey, 02 Şubat 2011, 14:58:32

Ruzgarbey

Merhaba üstadlar.C dilini Öğrenme çabalarıma devam ediyorum.bugün bir devre çizip 18f452 ile serial eeprom ve ds1302 uygulaması yapayım dedim.kodlarımı yazdım.önce eeproma birkaç değeryazayım dedim çalışmadı.ne yaptıysam olmadı eeproma veri yazamadım :)
Kodlarım aşağıda
#include <18F452.h>
#device adc=8

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES WDT128                   //Watch Dog Timer uses 1:128 Postscale
#FUSES HS                       //High speed Osc (> 4mhz for PCM/PCH) (>10mhz for PCD)
#FUSES NOPROTECT                //Code not protected from reading
#FUSES NOOSCSEN                 //Oscillator switching is disabled, main oscillator is source
#FUSES NOBROWNOUT               //No brownout reset
#FUSES BORV20                   //Brownout reset at 2.0V
#FUSES NOPUT                    //No Power Up Timer
#FUSES STVREN                   //Stack full/underflow will cause reset
#FUSES NODEBUG                  //No Debug mode for ICD
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOWRT                    //Program memory not write protected
#FUSES NOWRTD                   //Data EEPROM not write protected
#FUSES NOWRTB                   //Boot block not write protected
#FUSES NOWRTC                   //configuration not registers write protected
#FUSES NOCPD                    //No EE protection
#FUSES NOCPB                    //No Boot Block code protection
#FUSES NOEBTR                   //Memory not protected from table reads
#FUSES NOEBTRB                  //Boot block not protected from table reads

#use delay(clock=20000000)
#use fast_io(a)     // port giriş çıkışlar için ayar penceresi tanımlaması
#use fast_io(b)
#use fast_io(d)
#define RTC_SCLK PIN_E1
#define RTC_IO   PIN_E2
#define RTC_RST  PIN_E0
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)
#use i2c(master,sda=pin_c4,scl=pin_c3,slow=100000)
#include <DS1302.C>
#include <2465.C>


void main()
{

   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_CLOCK_DIV_2);
   setup_psp(PSP_DISABLED);
   setup_spi(SPI_SS_DISABLED);
   setup_wdt(WDT_OFF);
   setup_timer_0(RTCC_INTERNAL);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_timer_3(T3_DISABLED|T3_DIV_BY_1);
   setup_ccp1(CCP_OFF);
   set_tris_a(0);
   set_tris_b(0);
   set_tris_d(0);
   output_a(0);
   output_b(0);
   output_d(0);
   rtc_init();
   init_ext_eeprom();

   //////////  KODLAR BAŞLIYOR    ///////////////////////////
   
unsigned byte xy=0;
for (xy=0;xy<200;xy++);
{
   write_ext_eeprom(xy,65);
   delay_ms(10);
}
basla:
goto basla;
   
   
   
   

}


aynı kodları picbasic te yazıp denedim. proteus 7.7 kullanıyorum.i2c debugger ile i2c iletşimi kontrol ediyorum.picbasicte yazdığım kodlar 200. adrese kadar 0x41 verisini yazıyor debuggere göre.ama debugdan eeprom memory tıkladığımda maalesef bütün adresler FF verisi görüyorum.
CCS de ise debuggere göre sadece bir defa 0x41 verisi yazılıyor başkada iletişim olmuyor.sorun zannedersem isisden kaynaklanıyor.CCS de i2c haberleşmede problem yaşayan oldumu arkadaşlar.
çok değişik şekillerde kodlar denedim ama olmuyor :) Bu CCS Yüzünden saçlarım ağardı valla 15 günde ehehehe :)
Hayatta En Hakiki Mürşid İlimdir. M.K. ATATÜRK