Für dieses Forum muß Javascript im Browser aktiviert werden!
Kommentar: Einfügen von HTML im Kommentar: Link einfügen: <a href="LINKURL" target="_blank">LINKTITEL</a> Bild einfügen: <img src="BILDURL"> Text formatieren: <b>fetter Text</b> <i>kursiver Text</i> <u>unterstrichener Text</u> Kombinationen sind auch möglich z.B.: <b><i>fetter & kursiver Text</i></b> C2 Quellcode formatieren: <code>Quellcode</code> ASM Quellcode formatieren: <asm>Quellcode</asm> (Innerhalb eines Quellcodeabschnitts ist kein html möglich.) Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst ! > Hallo Günni > > > zunächst mal Danke für Dein neues Eeprom Modul. Auch wenn ich die neue Adressierung nicht als gut finde aber sicherlich eine Alternative ist. > > > Ich finde daß diese Art der Adressierung einfacher ist. Man sich muß nur nach dem Wert > der Leitungen A2,A1,A0 richten, und braucht nicht die gesamte Baustein-Adresse. > Wenn ein EEProm z.B. an A2,1,0= 0.1.0 liegt, braucht man nur 0b010 oder 2 übergeben > > > Leider ist wieder der gleiche <b>Fehler in der Funktion readlong(...)</b> vorhanden wie in der Vorgängerversion. Das i2c.stop() fehlt am Ende der Funktion. > > > Hab ich grad' behoben, danke für den Hinweis. > > > Bei der Implementierung einer Realtimeclock ist mir vor kurzem noch ein merkwürdiges Verhalten aufgefallen, welches meiner Meindung ein <b>OS Bug</b> sein muß. > > Und zwar handelt es sich um die I2C RTC von DALLAS mit der Bezeichnung DS1307. Das Datenblatt ist hier zu finden: <a href="http://pdfserv.maxim-ic.com/arpdf/DS1307.pdf" target="_blank">http://pdfserv.maxim-ic.com/arpdf/DS1307.pdf</a> > > Diese RTC hat den Vorteil, dass sie als EEprom behandelt werden kann. Die ersten 8 Bytes ( 0 - 7 ) beinhalten die Uhrzeit und ein Kontroll Register. Als ich nun versucht habe die Uhrzeit zustellen und bei Adresse 0 angefangen habe zu schreiben schien alles zu klappen. Nur die Stunde hat probleme gemacht da sie nur Werte von 0 bis 7 angenommen hat. Nach geraumer Fehlersuche ist mir aufgefallen, dass sehr wahrscheinlich die Register einfach nur um eins verschoben sind. Als ich dann versucht habe ab Adresse -1 zu schrieben und lesen hat alles wunderbar geklappt. > > Jetzt hat sich bei mir die Vermutung eingeschlichen, dass die CC2 bei einem Schreib- Lesezugriff immer ab Adresse 1 beginnt obwohl man bei 0 anfangen möchte. Dadurch wäre dann das letzte Byte des Eeproms nicht ansprechbar, wenn man diesen Umstand nicht kennt. > > Ich benutze natürlich das optimierte OS von Erik H. > > > > Hat jemand von euch auch ähnliche Erfahrungen gemacht bzw. kann diesen Fehler bestätigen? Oder habe ich doch was falsch gemacht? > > Nichts desto Trotz kann ich die o.g. RTC absolut empfehlen. Einfach einen Quarz, Batterie und den I2C Bus anschließen und fertig ist die RTC. Die Chipadresse lautet dez 208 und ist mit dem neuen Eeprom Modul von André mit Adresse dez. 24 anzusprechen. > > > > Das liegt sicher <b>nicht</b> am OS. Es liegt eher daran, daß Du mein eeprom.c2-Modul > dafür benutzt. Deine RTC DS1307 benötigt ein einziges Byte zum Addressieren. > Mein Modul allerdings, gibt für die EEProms(24C32 bis 24C512) ein zwei Byte Word aus. > Somit wird das zweite ausgegebne Byte in Adresse 0 geschrieben. > Beim Lesen wird das Byte Deiner RTC an Adresse 0 überschrieben, daraufhin > der Datenzeiger von 0 auf 1 gesetzt, und beim anschließendem Lesen ab > Adresse 1 gelesen. > > Wenn Du unbedingt das Modul EEProm.c2 dafür benutzen willst, kopiere > die Routinen in eine neue Datei und entfernde die erste Adressierungszeile: > z.B. bei Funktion write:(analog dazu bei Funktion read) > function write(byte eepromaddr,int addr) returns int > {byte i; > i=0; > eepromaddr= 160 + (eepromaddr)*2; > loop > { > if i2c.start(eepromaddr) break; > if i>=100 return 0; > i=i+1; > sleep 1; > } > i2c.write((addr & 0xFF00) shr 8); // Diese Zeile muß entfernt oder auskommentiert werden > i2c.write(addr & 0x00FF); > return -1; > } > > Etwas grundsätzliches: Fehlererscheinungen am I²C-Bus können <b>nie</b> am OS liegen. > > > MfG André H.