Hallo Leute,
ich arbeite mich gerade in i2c protokol ein und habe ein einfaches Programm geschrieben wo ich was auf einem eeprom speichere und wieder auslese und über rs232 auf dem pc anzeige. Soweit sogut. Mein Promblem ist, wie frage ich den ACK ab? Hab hier ein kleines Programm gemacht wo ich was ohne der Abfrage von ACK mache, natürlich läuft es nicht, bekomme am PC nur Bereit angezeigt, also kommt der PIC nicht mal über Schreibroutine. Wie man sieht benütze ich einen CCS Compiler. Konfigurier wurde der PIC auch vom CCS. Die routine habe ich aus dem Datenblatt vom Speicher. Vielleicht hat jemand ein Paar zeilen für mich die mich weiterbringen, hab zu dem Thema irgendwie nichts gefunden, nur PIC zu PIC Beispiele.
#use delay(clock=20000000)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8,STREAM=pc)
#use i2c(Master,Fast,sda=PIN_C4,scl=PIN_C3)
int8 daten=15,daten_gelesen=0;
void main()
{
setup_adc_ports(AN0|VSS_VDD);
setup_adc(ADC_OFF|ADC_TAD_MUL_0);
setup_psp(PSP_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_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
fprintf(pc,"Bereit");
i2c_start(); //starte i2c kommunikation
i2c_write(0b10100000); //sende Adresse vom schpeicher
i2c_write(0x00); //adresse High Byte
i2c_write(0x10); //adresse Low Byte
i2c_write(daten); //sende Daten
i2c_stop();
fprintf(pc,"Speicher beschrieben");
delay_ms(1000);
i2c_start(); //starte i2c kommunikation
i2c_write(0b10100000); //sende Adresse vom schpeicher
i2c_write(0x00); //adresse High Byte
i2c_write(0x10); //adresse Low Byte
i2c_write(0b10100001);
daten_gelesen=i2c_read(); //sende Daten
i2c_stop();
fprintf(pc,"Ready\n");
printf("%u",daten_gelesen);
}
Gruß