tuxilein
10.04.2007, 23:25
Hallo Leute,
ich bin gerade total am verzweifeln, min I2C Driver funktioniert einwandfrei lange getestet, aber er mag einfach nicht den PCF8583 auslesen denn ich am BUS hängen habe.
Lustigerweise kann ich darauf schreiben aber nciht lesen.
Ich habe als MCU einen LPC935 von NXP.
Read/Write BIt wird vom Treiber je nach FUNC gesetzt!!!!
Hier die 2 Funktionen:
char init_pcf8583()
{
xdata char buf[] = {0, 0x30, 0, 0, 0, 0};
/* set year and day bit for */
return i2c_transmit( PCF8583, &buf, 6 );
}
/* get_time */
char get_time( time *tm )
{
idata char ret = 0;
xdata char buf[ 6 ];
buf[ 0 ] = 1;
if( i2c_transmit( PCF8583, buf, 1 ) != I2C_OK )
return -1;
ret = i2c_receive( PCF8583, buf, 1, 1);
// tm->seconds = buf[ 1 ];
// tm->minute = buf[ 0 ];
return ret;
}
ich bin gerade total am verzweifeln, min I2C Driver funktioniert einwandfrei lange getestet, aber er mag einfach nicht den PCF8583 auslesen denn ich am BUS hängen habe.
Lustigerweise kann ich darauf schreiben aber nciht lesen.
Ich habe als MCU einen LPC935 von NXP.
Read/Write BIt wird vom Treiber je nach FUNC gesetzt!!!!
Hier die 2 Funktionen:
char init_pcf8583()
{
xdata char buf[] = {0, 0x30, 0, 0, 0, 0};
/* set year and day bit for */
return i2c_transmit( PCF8583, &buf, 6 );
}
/* get_time */
char get_time( time *tm )
{
idata char ret = 0;
xdata char buf[ 6 ];
buf[ 0 ] = 1;
if( i2c_transmit( PCF8583, buf, 1 ) != I2C_OK )
return -1;
ret = i2c_receive( PCF8583, buf, 1, 1);
// tm->seconds = buf[ 1 ];
// tm->minute = buf[ 0 ];
return ret;
}