Re: PCF 8583 läuft nicht! Kategorie: I²C-Bus (von Tieli - 21.07.2002 19:12) | |
Als Antwort auf Re: PCF 8583 läuft nicht! von André H. - 21.07.2002 13:39
| |
Hallo André, danke für den Tipp. Es lag am Kondensator. Ich habe jetzt einen 10pF eingebaut. Läuft perfekt. MfG Tieli > Hallo Tieli, > > Zuerst: Ein Ausrufezeichen im Betreff reicht. Dein Posting wird schon nicht übersehen. :-) > > Hast Du zum Quarz auch einen Trimmerkondensator, wie im Datenblatt des PCF8583 > beschrieben, zwischen OSCI und VDD gesetzt. Sonst schwingt der Quarz nicht an. > Ich habe den PCF8583 gerade angeschlossen und dies auch festgestellt. Da ich keinen > Trimmer zu Hand hatte, habe ich einen Keramikkondensator mit 22pF benutzt. > Der Quarz hat erst nach ca. 1 Minute angefangen zu schwingen. Ich wei� nicht, ob diese > mit einem Trimmerkondensator schneller anfängt zu schwingen. > > Hier das kleine Testproggie: > Es gibt die Uhrzeit(hh:mm:ss) des PCF8583 an der seriellen > Schnittstelle aus (Hyperterminal, 57600Baud). > Die Adresse für den PCF8583 ist auf 162/163 gesetzt (A0 auf VDD). > Wenn Du A0 auf GND hast mu�t Du diese auf 160/161 ändern. > > thread main > /* requires: i2c.c2, hwcom.c2 V2.x */ > {byte sec,min,std;string s; > hwcom.init(); > hwcom.setspeed(8); > hwcom.put(12); > loop > { > i2c.start(162); > i2c.write(0x02); > i2c.start(163); > sec=i2c.read(); > min=i2c.read(); > std=i2c.readlast(); > i2c.stop(); > s=((std shr 4) +0x30) + ((std & 0xf) +0x30); > s=s + ":"; > s=s + ((min shr 4) +0x30) + ((min & 0xf) +0x30); > s=s + ":"; > s=s + ((sec shr 4) +0x30) + ((sec & 0xf) +0x30); > hwcom.put(12); > hwcom.print(s); > sleep 995; > } > } > > > MfG André H. > > > > > Hallo alle zusammen, > > > > ich habe mir den PCF 8583 gekauft, das Modul pcfuhr heruntergeladen und eine Uhr programmiert (Anlage). > > > > Ich habe, wie im Datenblatt beschrieben, einen 32768Hz Quarz an OSCI und OSCO angeschlossen. > > > > Wenn ich jetzt die Systemzeit in den PCF lade und dann die Systemuhr neu abgleichen will, läuft die Uhr ab der zuletzt gespeicherten Zeit weiter!!!!!! > > > > Der PCF arbeitet also nicht. > > Er arbeitet zur Zeit nur als Speicher. > > Wenn ich 12:12:12 in den PCF einlese, 1 Minute warte, und die Systemuhr mit dem PCF abgleiche, müsste eigentlich 12:13:12 als Zeit angezeigt werden. > > Aber die Systemuhr startet beim PCF-Abgleich wieder bei 12:12:12. > > > > Ich habe mit dem Ozilloskop am Quarz genau 50Hz gemessen, nicht 32768Hz, warum?????? > > > > Ist der PCF defekt? > > > > Anbei mein Uhrprogramm. > > > > Wenn ich die Taste 7 drücke, wird die Systemzeit in den PCF geladen. > > Wenn Taste 3 gedrückt wird, wird die Systemzeit mit der PCF-Zeit aktualisiert. > > > > Allerdings wird auch das Jahr genullt! > > > > Ist das Modul pcfuhr defekt? > > > > Danke für Eure Hilfe. > > > > thread main > > { > > lcdext.init(); > > i2c.init(); > > > > byte a; > > int s,m,h,t,mo,j; > > string zeit,datum; > > > > loop > > { > > s=system.second(); > > m=system.minute(); > > h=system.hour(); > > t=system.day(); > > mo=system.month(); > > j=system.year(); > > > > str.putintf(zeit,h,2); > > str.putstring(zeit,":"); > > str.putintf(zeit,m,2); > > str.putstring(zeit,":"); > > str.putintf(zeit,s,2); > > > > lcdext.print(zeit); > > str.clear(zeit); > > > > lcdext.goto(1,0); > > > > str.putintf(datum,t,2); > > str.putstring(datum,":"); > > str.putintf(datum,mo,2); > > str.putstring(datum,":"); > > str.putintf(datum,j,4); > > > > lcdext.print(datum); > > str.clear(datum); > > > > lcdext.home(); > > > > if tast.taste()==3 > > {a=1; > > pcfuhr.get_I2C_time (a); > > } > > sleep (200); > > a=0; > > > > if tast.taste()==7 > > {pcfuhr.set_I2C_time ();} > > sleep (200); > > > > } > > > > > > > > } > > | |
Antwort schreiben Antworten: |