PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : RTC PCF8583 beim READ ein NAK



tuxilein
10.04.2007, 22: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;
}

linux_80
10.04.2007, 23:52
Servus,
Du übergibts hier immer die gleiche Adresse bei Senden und Empfangen ?

Für den Fall das es noch nicht bekannt ist:
Beim lesen vom Slave muss das 1. Bit der Adresse gesetzt sein, also im Prinzip um eins höher sein als die Schreibadresse, macht das deine Routine ?
Ansonsten haut das mit dem receive nicht hin !

tuxilein
11.04.2007, 17:01
oh das habe i vergessen zu schreiben.

ich abstrahiere es übergebe nur 7bit, das read und write bit wird vom i2c treiber gemacht.

aber wie ich schon geschrieben hatte, der i2c treiber funktioniert einwandfrei in der praxis habe andere devices auch schon im produktiveinsatz laufen.

2 verschiedene addressen für ein gerät ist unschön nochdazu wenn das nur 1bit ist!

tuxilein
11.04.2007, 18:28
hallo,

habe es gerade mit dem LogicAnalyser angeschaut.
Bekomme beim lesen auf dem RTC ihmmer ein NAK beim schreiben ein ACK, woran kann das liegen?
Die addresse ist richtig und das read bit wird auch gesezt?

gibt es da ne einstellung wo der rtc das ablehnt?

tuxilein
11.04.2007, 22:34
gelöst leute war nur zu blöd um mein eigenen wartepunkt aus debuging zwecke wegzumachen!