RTC ISL1208 I2C Probleme

pvs-deck
PowerUser
Avatar
Gender:
Age: 53
Homepage: pvs-deck.de
Posts: 1341
Registered: 02 / 2009
Subject:

RTC ISL1208 I2C Probleme

 · 
Posted: 26.10.2016 - 20:41  ·  #1
Hallo,
hat Jemand von euch schon mal den ISL1208 Real Time Clock/Calendar genutzt?

Ich habe den ausgewählt, da er PIN-Compatibel mit dem Dallas ist aber mit 3,3V arbeitet.

Leider bekomme ich den Quarz nicht zum schwingen. Entweder mache ich was im Init-Falsch oder ich habe einen Schaltungsfehler.

Datenblatt ISL1208

Da ich grundsätzlich mit dem Chip über I2C reden kann, gehe ich davon aus das der I2C-Bus läuft.

Hat Jemand eine Idee, warum der Quarz nach dem Init nicht schwingt?

Gruß
Thorsten
Attachments
Schaltplan
Filename: 26-10-_2016_20-25-24.jpg
Filesize: 76.88 KB
Title: Schaltplan
Information: Schaltplan
Download counter: 180
golf
Benutzer
Avatar
Gender:
Location: Donauwörth
Age: 71
Posts: 256
Registered: 11 / 2009
Subject:

Re: RTC ISL1208 I2C Probleme

 · 
Posted: 27.10.2016 - 07:09  ·  #2
hallo thorsten

wenn in der init der oscillator enabled ist und das ändern des ATR-registers nichts bringt, fällt mir nur ein, einen anderen quarz zu probieren oder evtl testweise erstmal externe kondensatoren an den quarz zu löten.

golf
Harald_K
 
Avatar
 
Subject:

Re: RTC ISL1208 I2C Probleme

 · 
Posted: 27.10.2016 - 19:30  ·  #3
was man bei den Uhrenquarzen auch oft sieht:
10 MOhm parallel zum Quarz.

Dann muß der Inverter erstmal los, weil der Ausgang den Eingang auf den falschen Logikpegel zieht ... der Quarz selektiert dann die richtige Frequenz raus und schon schwingts.
pvs-deck
PowerUser
Avatar
Gender:
Age: 53
Homepage: pvs-deck.de
Posts: 1341
Registered: 02 / 2009
Subject:

Re: RTC ISL1208 I2C Probleme

 · 
Posted: 12.06.2018 - 18:47  ·  #4
Hab es ohne Umbau hinbekommen, hatte noch einen Fehler in meinen Routinen.

Im Moment versuche ich verzweifelt die beiden UserBytes (Adresse 12h und 13h) zu schreiben, lt. TWIOutE() gibt es keinen Fehler, aber wenn ich nach dem schreiben die Bytes auslese erhalte ich immer "0000" :-(

Irgendwas mache ich falsch, der Rest läuft nun schon seit Wochen perfekt.

Vars:
Code
// RTC Timeblock  / Userspeicher
  wRTCUser          : word;   // 2 Bytes Batterie Buffer vom RTC
  bRTCUser1[@wRTCUser] : byte;
  bRTCUser2[@wRTCUser+1] : byte;
  flagNotTaste[@wRTCUser,   0] : bit;    // 
  flag1[@wRTCUser,   1] : bit;
  flag2[@wRTCUser,   2] : bit;
  flag3[@wRTCUser,   3] : bit;
  flag4[@wRTCUser,   4] : bit;
  flag5[@wRTCUser,   5] : bit;
  flag6[@wRTCUser,   6] : bit;
  flag7[@wRTCUser,   7] : bit;
  flag8[@wRTCUser,   8] : bit;
  flag9[@wRTCUser,   9] : bit;
  flag10[@wRTCUser, 10] : bit;
  flag11[@wRTCUser, 11] : bit;
  flag12[@wRTCUser, 12] : bit;
  flag13[@wRTCUser, 13] : bit;
  flag14[@wRTCUser, 14] : bit;
  flag15[@wRTCUser, 15] : bit;



Funktion:
Code
//----------------------------------------
function Write_RTCUSER: boolean; // Schreibe 2 user Bytes aus
var
  TempBool : Boolean;
begin
   TempBool := true;
   // Wenn Richtig initialisiert
   If (RTCZeitBlock.ok = true) then
      // Pointer auf Adresse $12 setzen
      TempBool := TempBool AND TWIoutE(RTCSLAVEID, $12);
      // User 2 Bytes einlesen
         TempBool := TempBool AND TWIOutE(RTCSLAVEID, bRTCUser1);
         TempBool := TempBool AND TWIOutE(RTCSLAVEID, bRTCUser2);
       DebugOut('RTC User Write: '+IntToBin(wRTCUser)+' / OK:'+ BoolToStr( TempBool));

      return(TempBool);
   Else
    return(false);
   Endif;
   // Bei Fehler
    return(TempBool);
end Write_RTCUSER;


Thorsten
Selected quotes for multi-quoting:   0

Registered users in this topic

Currently no registered users in this section

The statistic shows who was online during the last 5 minutes. Updated every 90 seconds.
MySQL Queries: 16 · Cache Hits: 15   81   96 · Page-Gen-Time: 0.028897s · Memory Usage: 2 MB · GZIP: on · Viewport: SMXL-HiDPI