Echtzeituhr (RTC) für den Casio FX-850P

Vor kurzem hat mich Ralph Salomon kontaktiert und mir seinen Artikel aus der Zeitschrift „Pocket + Laptop Computer“ des Fischel- Verlags aus dem Jahr 1992 zugesendet. Darin hat er die Erweiterung seines damaligen Casio fx-850P um eine Echtzeituhr (RTC) beschrieben.

Ralph hat mir erlaubt sein damaliges Projekt hier auf meiner Seite zu veröffentlichen. Ich sage schon mal lieben Dank dafür.

Echtzeituhr im CASIO FX-850P

Von der Firma EPSON gibt es ein Echtzeituhr-IC mit der Bezeichnung RTC 64613, in das Takterzeugung sowie Zeit-, Kalender- und Alarmfunktion integriert ist. Zu beziehen ist der Chip über SE Spezial Electronic KG Postfach 1308 in 3062 Bückeburg; er kostet ca. 10 EUR.

Die Uhr hat einen bidirektionalen 8 Bit-Bus; die Pinbelegung entspricht weitgehend der eines im CASIO verwendeten SRAMs, sodaß sich der Einbau relativ problemlos gestaltet.

RTC 64613
SRAM

Bevor jetzt der Rechner aufgeschraubt wird, sollte man bedenken, daß die
Garantie dadurch erlischt. Außerdem erfordert das Löten von SMD-Bauteilen einiges an Feinmotorik und Erfahrung; CMOS-Bausteine sind empfindlich und schnell abgeschossen.

Wer trotzdem basteln will, kann sich schon mal einen Schraubenzieher, einen SMD-Lötkolben und etwas Fädeldraht zurechtlegen. Um an’s Innere des FX-850P heranzukomnen, werden 2 Schrauben auf der Rückseite gelöst und der Deckel abgenommen. Batterien und eventuell vorhandene RAM-Karte entfernen, dann die 16 Schrauben der Plastikabdeckung lösen des Piezo-Summers, der in die Abdeckung geklebt ist, nicht abreißen.

Man sieht jetzt 3 größere Chips – die CPU HD52002A03 und die beiden Display-Treiber HD66100F, darunter RAM, ROM und einen freien Platz, der wohl mal ursprünglich für ein weiteres ROM gedacht war. Genau hierhin kommt unser Echtzeit-IC.

Zunächst werden die Pins 1,2,3,4,19,20,21,22,23 und 24 vorsichtig hochgebogen, da sie nicht angeschlossen bzw. später mit Fädeldraht verdrahtet werden.

Als nächstes setzt man das IC richtigherum (!) so auf die Platine daß die der Kerbe gegenüberliegende Seite bündig mit dem neben ihm liegenden ROM abschließt; der Chip hat nur 24 Pins, sodaß dann auf der Platine die Pads 1,2 und 27,28 freibleiben.

Hat man sich vergewissert, daß das IC richtig liegt, so können die Pins 5-12 auf der einen Seite und die Pins 13-18 auf der anderen Seite mit einem SMD-Lötkolben (ein normaler mit dünner Lötspitze und 30 Watt tut’s auch) festgelötet werden. Das Verlöten der restlichen Pins ist nicht so einfach und erfordert Fingerspitzengefühl.

Zunächst nimmt man sich die VCC-Leitung vor; mit Fädeldraht (oder isoliertem Draht aus einem geschlachteten Relais) wird Pin 24 mit dem entsprechenden Pad 28 auf der Platine verbunden. Pin 2 des RTC wird ebenfalls mit +5V verbunden.

Nun zur GND-Leitung. Die Pins 1,19 und 21 werden mit Pin 12 verbunden. Dabei sollte der Fädeldraht zwischen Pin 19 und 21 eine kleine Schlaufe bilden, damit abschließend Pin 20 mit dem WE Pin des RAMS verbunden werden kann. Dieser Pin Nr.27 befindet sich direkt neben dem VCC-Pin.

Die Pins 22 und 23 bleiben frei, bei älteren Versionen des RTC wurde hier ein Quarz angeschlossen. Wer einen 0.1 uF SMD-Kondensator hat, sollte ihn an der entsprechenden Stelle (siehe RAM und ROM) einlöten, er ist aber nicht unbedingt nötig.

So, während der Lötkolben abkühlt, kontrolliert man die Pins auf Kurzschlüsse oder kalte Lötstellen. Wenn alles in Ordnung zu sein scheint, kann der Rechner wieder zusammengebaut werden, dabei auf die beiden Federn achten, die die elektrische Verbindung zwischen vorderer und hinterer Metallpaltte herstellen.

Anschließend den Rechner einschalten; wenn er sich jetzt „meldet“ ist das schon mal ein gutes Zeichen. Als nächstes startet man den Selbsttest mit 0400 [LIB] und drückt eifrig die EXE-Taste. RAM und ROM sind OK? Na wunderbar, dies war der Hardwareteil.

Um zu verstehen, wie man die Uhr jetzt einstellt bzw. wieder ausliest, etwas zur Speicherorganisation des FX-850P. Wer die Pocket und Laptop Computer -Ausgabe Nr-11/89 noch hat, nimmt diese zur Hand, schlägt die Seite 17 auf und betrachtet sich das Bild-
chen.

Die CPU des CASIO hat 20 Adreßleitungen, mit denen 2^20-1=1048575 Speicherstellen direkt adressiert werden können. Mit Peek und Poke kommt man aber höchstens bis 65535. Glücklicherweise gibt es jetzt den Befehl DEFSEG, mit dem man den Offset für Peek und Poke in 16 Byte-Schritten einstellen kann; so entspricht „DEFSEG=1:POKE10,0“ dem Befehl „DEFSEG=0:POKE26“. So läßt sich der Speicherbereich in einzelne Bänke zu 65535 Byte einteilen. Das RAM befindet sich in Bank 0 (DEFSEG=0) und das Library-ROM in den
Bänken 4,5 (DEFSEG=&H4000, DEFSEG=&H5000).

Unsere Uhr befindet sich in der Bank 8 und wird über die CS6-Leitung aktiviert, so wird vermieden, daß sich RAM und RTC gegenseitig stören.

Die Uhr hat 15 Register, in der die einzelnen Zeit- und Datumsfunktionen stehen; sie sind im BCD-Format abgespeichert, d.h. die Bits b0-b3 repräsentieren die Einerstelle und die Bits b4-b7 die Zehnerstelle.

Abschließend ein kleines Programm, mit dem man Uhrzeit und Datum auslesen und auf dem Display darstellen kann.

Einstellen der Uhrzeit

Das Einstellen der Uhrzeit ist so einfach, daß man dafür kein Programm braucht; zum Eingeben von „Sonntag, 27.10.91 18.00 Uhr“ gibt man z.B. ein:

Poke 7,9*16+1  [91]
Poke 6,1*16 [10] 
Poke 5,2*16+7  [27] 
Poke 4,0 [Sonntag] 
Poke 3,1*16+8 [18] 
Poke 2,0 [00]  
Poke l,0 [00]

Programm zur Dekodierung von Zeit und Datum

5 CLS:GOSUB10:LOCATE 0,0:PRINT DATE$;"     ";TIME1$;:GOTO5
10 DEFSEG=&H8000
15 IF PEEK4<>PEEK(15)/16 OR DATE$="" THEN GOSUB 100
20 S=PEEK1:M=PEEK2:H=PEEK3
30 SZ=SY16:SE=S MOD 16:S$=RIGHT$(STR$(SZ),1)+RIGHT$(STR$(SE),1)
40 MZ=MY16:ME=M MOD 16:M$=RIGHT$(STR$(MZ),1)+RIGHT$(STR$(ME),1)
50 HZ-SY16:HE=H MOD 16:H$-RIGHT$(STR$(HZ),1)+RIGHT$(STR$(HE),1)
60 TIME1S=H$+":"+M$+" "+S$:TIME$=H$+M$+S$:RETURN
80 PRINT TIME$;:END
100 W=PEEK4:T=PEEK5:M=PEEK6:J=PEEK7
120 TZ=TY16:TE=T MOD16:T$=RIGHT$(STR$(TZ),1)+RIGHT$(STR$(TE),1)
130 MZ-MY16:ME=M MOD16:M$=RIGHT$(STR$(MZ),1)+RIGHT$(STR$(ME),1)
140 JZ=JY16:JE=J MOD16:J$-RIGHT$(STR$(JZ),1)+RIGHT$(STR$(JE),1)
150 RW=1000+W*10:RESTORE RW:READ WT$
200 DATE$=WT$+","+T$+"."+M$+"."+J$
250 POKE15,16*W
300 RETURN
1000 DATA"Sonntag"
1010 DATA"Montag"
1020 DATA"Dienstag"
1030 DATA"Mittwoch"
1040 DATA"Donnerstag"
1050 DATA"Freitag"
1060 DATA"Samstag"
1070 DATA"Samstag"
RTC 64613 – Register

Autor: Ralph Salomon


Wie hat Dir dieser Artikel gefallen?

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading...