Forum: Mikrocontroller und Digitale Elektronik PCF8563 und I2C-Bus


von ruppi985 (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Leute,

ich brauche am I2C (SMDBus)einen PCF8563. Als Prozessor habe ich einen
C8051F352 von SiLabs. Irgenwie bekomme ich keine richtige
Kommunikation.
Wenn ich Sekunden, Stunden etc. auslese, erhalte ich immer 0xFF als
Antwort. Schreiben funktioniert auch nicht.
Wo könnte das Problem liegen? Als Anhang meine ausgekoppelte
Unterroutine zum auslesen des RTC. Ich hoffe, Ihr könnt mir irgenwie
weiterhelfen. Langsam nervt das Problem gewaltig.

mfg

ruppi985

von ruppi985 (Gast)


Lesenswert?

Hi Leute,

kann hier wirklich keiner helfen??

ruppi985

von Tino (Gast)


Lesenswert?

hi,

überprüfe den 32,768kHz Quarz!!
ich hatte mal so ein ähnliches Problem


mfg
Tino

von ruppi985 (Gast)


Lesenswert?

Hallo Tino,

danke für den Hinweis! Habe dies aber schon gemacht und konnte nichts
ungewöhnliches feststellen. Vieleich weis noch jemand, wo das Problem
liegen könnte.


mfg
ruppi985

von Peter D. (peda)


Lesenswert?

Ich sach ma, die Chance, daß noch jemand jemand Silabs 8051, HW-I2C und
dann noch mit dem PCF8563 zusammen benutzt, dürfte gegen Null gehen.

Mehr Chancen, daß Dir jemand helfen kann, gibt es daher, wenn Du
Software-I2C benutzt, das benutzt fast jeder und ist in C auch
weitgehend unabhängig vom CPU-Typ.


Wenn ich das richtig sehe, wertest Du nirgends das ACK aus, d.h. Du
weißt gar nicht, ob der Chip überhaupt adressiert wird.

Wichtig ist auch, daß (fast) alle Philipser I2C sehr ungnädig
reagieren, wenn man die 100kBit überschreitet.


Peter

von ruppi985 (Gast)


Lesenswert?

hallo peter,

danke für deine antwort. nun, schau mal in die isr-routine. da wird
das ack ausgewertet. sicherlich hastb du recht, dass die chancen gegen
null gehen, jemanden zu finden, der meine hardware-konfig benutzt.
inzwischen denke ich auch daran, software-i2c zu benutzen. kannst du
(oder jemand, der diesen artikel liest) ein sample geben?

besten dank an alle,

mfg
ruppi985

von Peter D. (peda)


Lesenswert?

Mit ACK auswerten meinte ich, daß man auch testen muß, obs geklappt
hat.

status = smbus_read(STATUS1);

Hier wir doch nirgends was ausgewertet, d.h. Du weißt nicht, woher das
kommt, was Du in status reinschreibst.

Du müßtest einen Errorwert zurückgeben, ob smbus_read() erfolgreich war
oder nicht, d.h. ob ein ACK auf die Adresse kam.


Hier mal meine I2C-Routinen:

http://home.tiscali.de/peterd/appl/soft/c51/eeprom/index.htm


Peter

von ruppi985 (Gast)


Lesenswert?

hallo peter,

vielen herzlichen dank für deine hinweise. du hast recht. es wird in
dieser hinsicht nicht überprüft, woher das ack kommt. werde die sache
nochmal überdenken. vielen dank für dein sample. wird mir sicherlich
weiterhelfen.

bist die tage

mfg

ruppi985

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.