Forum: Mikrocontroller und Digitale Elektronik bekomme 24LC02 nicht ausgelesen


von Jürgen M. (mheimer)


Angehängte Dateien:

Lesenswert?

Hallo,

meine uralte Funkamateur DCF77 - Digitaluhr hat den Geist aufgegeben, 
deshalb hab ich begonnen die Hardware zu modernisieren.
Dafür habe ich mir einen Arduino Uno zugelegt und zum sichern der 
Weckzeiten einen I²C EEPROM drangehängt.
Ich programmiere den Arduino (ATmega328P) aber mit Atmel Studio in 
richtigem C und muss mir deshalb die EEPROM Routinen selbst erstellen, 
schon wegen dem Lernfaktor.
Leider bekomme ich mit meinen Leseroutinen nur 0xff gelesen, auch ein 
Logikanalyzer zeigt mir das an, wogegen beim Schreiben scheinbar das 
Richtige raus geht.
Als Puffer wird folgende Struktur, auf uint8_t gecastet, übergeben:
1
typedef struct
2
{
3
  uint8_t hour, minute;
4
  uint8_t armed, active;
5
} alarm_time_t;
Was mache ich falsch?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Jürgen M. schrieb:
> wogegen beim Schreiben scheinbar das Richtige raus geht.
Hast du gelesen, dass du nach dem Anlegen der Versorgungsspannung das 
Schreiben im Steuerregister des EEPROMs erlauben musst? Tust du das 
auch? Und wie ist der Pin 7 des EEPROMs beschaltet?

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Nachdem du Lothars Tipps beherzigt hast, musst du auch noch beachten, 
das ein freier Lesevorgang (einer beliebigen Adresse) immer mit einem 
Schreibvorgang (des Adressregisters) beginnt und dann eine 'fliegende' 
Umschaltung (erneute Start Bedingung) auf den Lesevorgang folgt - siehe 
Datenblätter der 24CXX Serie.

Übringes hat der Mega auch ein internes EEPROM.

von Jürgen M. (mheimer)


Lesenswert?

Der 24LC22 hat keine Steuerregister, Du meinst wohl das Beschreiben des 
AVR EEPROMs und Pin 7 (WP) liegt auf Masse.
Beim Lesen Schreibe ich ja zuerst die Slaveadresse und dann mit einem 
erneutem Startzyklus die interne EEPROM-Adresse, siehe Code, also zuerst 
mit Bit 0 = 0 und danach mit Bit 0 = 1 der Slaveadresse.

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.