Forum: Mikrocontroller und Digitale Elektronik DS3231 & AT24C32 mit I2C-Lib von Peter Fleury


von Andi M. (rootsquash)


Lesenswert?

Hallo,

ich habe ein solches Kombi-Modul: 
http://www.play-zone.ch/de/combo-breakout-mit-ds3231-temperatur-zeit-24c32-memory.html
und kann die RTC (DS3231) erfolgreich lesen und auch manipulieren.

Bei dem EEPROM (AT24C32) hingegen liefert schon das 
i2c_start(Dev24C32+I2C_WRITE);
"1" zurück.

Ich benutze das ASM-Modul der Lib, der µC läuft mit 5 Volt bei 2 MHz, 
das Modul hängt da mit kurzen Kabeln direkt dran.

Als Adresse habe ich aus dem Datenblatt 
(www.atmel.com/images/doc0336.pdf) 0xA0 oder 0XA7 entnommen, je nachdem 
wie ich den da: 
http://www.play-zone.ch/de/combo-breakout-mit-ds3231-temperatur-zeit-24c32-memory.html 
verlinkten Schaltplan verstehen soll.

Klappt beides nicht.

Sind da irgendwelche Probleme mit der Lib oder dem ASM-Modul bekannt 
oder (wahrscheinlicher) bin ich gerade einfach nur zu blöd?
Mein Oszi hat keine Speicherfunktion. Rauszufinden ob das China-Modul 
überhaupt korrekt funktioniert könnte also etwas, öhm, aufwändiger 
werden...

von Andi M. (rootsquash)


Lesenswert?

Andi M. schrieb:

> Als Adresse habe ich aus dem Datenblatt
> (www.atmel.com/images/doc0336.pdf) 0xA0 oder 0XA7 entnommen

Dieses Mal hat die therapeutische Wirkung des Niederschreibens das 
Problem ein paar Sekunden zu spät gelöst, da war der Thread schon 
eröffnet:

Die 3 optionalen Adress-Bits sitzen natürlich "links" vom R/W-Bit, es 
ist also 0xAE, nicht 0xA7.

Scheint zu klappen.  :)

: Bearbeitet durch User
von Joachim B. (jar)


Lesenswert?

Andi M. schrieb:
> Als Adresse habe ich aus dem Datenblatt
> (www.atmel.com/images/doc0336.pdf) 0xA0 oder 0XA7 entnommen, je nachdem
> wie ich den da:
> 
http://www.play-zone.ch/de/combo-breakout-mit-ds3231-temperatur-zeit-24c32-memory.html
> verlinkten Schaltplan verstehen soll.
>
> Klappt beides nicht.
>
> Sind da irgendwelche Probleme mit der Lib oder dem ASM-Modul bekannt
> oder (wahrscheinlicher) bin ich gerade einfach nur zu blöd?

kommt mir bekannt vor

das Datenblatt hat mich auch dorthin geschickt

Beitrag "I2C Adresse ermitteln"

aber da es (erst mal) nur 127 Adressen gibt musst du auf

rechts shift prüfen

aus 0xA0 wird 0x50





Joachim B. schrieb:
> http://playground.arduino.cc/Main/I2cScanner
>
> läuft prima
>
> ich nutze das auf dem nano und geben das auf nokia 5110 LCD
>
> dummerweise betrachtet jeder die Adressgenerierung anders
>
> ich schaue ins Datanblatt und nehme alle Bits ! für ein Adressbyte !
> in o.g. Link wurde das nicht getan was zu einer Verwirrung bei mir
> führte die ich dann später auflösen konnte.
>
> ist zwar am Arduino aber nun gut....
> I2C Scanner -> Scanning...
> I2C device found at address 0x38; 0111000x; << 0x70; 01110000 PCF8574A
> Tastatur
> I2C device found at address 0x50; 1010000x; << 0xA0; 10100000
> I2C device found at address 0x68; 1101000x; << 0xD0; 11010000
> DS1307/DS3231 RTC
> done
>
> meine Tastatur liegt bei mir auf 0x70, das letzte Bit ist aber R/W
> vorbehalten was für die PI (der anderen) Schreiber eben nicht zählt oder
> anders gesagt, es sind nur 127 Adressen nach alter Definition möglich,
> ergo wurden nur die vordersten 7 Bit beguckt was zu 0x38 führt
>
> mit einem links shift habe ich meine kleine Welt wieder gerade gerückt,
> wie man das auch betrachtet ist ja egal, nur muss man sich vorher über
> die Betrachtungsweise einigen.

von Andi M. (rootsquash)


Angehängte Dateien:

Lesenswert?

Danke Joachim :)


Soweit ich das überblicken kann läuft jetzt alles:
- Zeit aus der RTC lesen und schreiben (in globale Variablen)
- Einzelne Bits oder Bytes der RTC maniplulieren um Einstellungen zu 
ändern
- EEPROM einzelne oder mehrere Bytes lesen und schreiben

Der Code ist nicht super umfangreich kommentiert, aber da ich N00b bin 
sehr einfach geschrieben und sollte damit nachvollziehbar sein, also 
lasse ich ihn mal hier.

Vielleicht hilft ja irgendwann mal einem anderen Anfänger.

Hier nochmal die Links zu Datenblättern und Peter Fleurys I2C-Lib:
Ebay/China-Modul: 
http://www.play-zone.ch/de/combo-breakout-mit-ds3231-temperatur-zeit-24c32-memory.html
RTC: datasheets.maximintegrated.com/en/ds/DS3231.pdf
EEPROM: www.atmel.com/images/doc0336.pdf
I2C-Lib: http://homepage.hispeed.ch/peterfleury/avr-software.html

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.