Forum: Mikrocontroller und Digitale Elektronik miniCon537 und cs Signal für RTC setzen?


von blutengel (Gast)


Lesenswert?

Hi,

nach der vielen Hilfe hier hoffe ich das mir auch jemand bei meinem 
letzten Problem helfen kann. Auf dem miniCon537 befindet sich noch eine 
RTC die an den Adress und Datenbus angeschlossen ist. Um darauf 
zuzugreifen ist es notwendig die RTC wie einen ext. Speicher zu 
behandeln. Laut Anleitung muss dafür die RTC selektiert werden.Das Board 
besitzt dafür ein PLD das die erforderlichen CS Signale steuert. Leider 
ist mir nicht ganz klar wie das funktionieren soll.

Hier nochmal der Link zur Anleitung:

http://www.phytec.de/fileadmin/user_upload/downloads/Manuals/L-003d_2.pdf

Das auf meinem Board verwendete PLD ist genau das was in der Anleitung 
beschrieben ist.Im Anhang auch das PLD Source. Es ist auch immer die 
Rede von Basis Adresse. Was ist das genau.Wie die RTC an sich 
funktioniert ist mir klar,aber ich bekomme leider nicht herraus wie ich 
die RTC selektiere.Wenn ich das richtig sehe muss EW auf LOW gebrauch 
werden.m Aber wie?

von blutengel (Gast)


Lesenswert?

Wenn ich es richtig verstehe muss ich mit:

MOV  A,Adrese des Banklatches
MOVX  @DPTR,A

das zuständige cs Signal für die RTC einstellen.

Aber wie ist die Adresse von diesem Banklatch? Und welche Daten müssen 
dann geschrieben werden?

von Peter D. (peda)


Lesenswert?

Bild 15:
I/O-Base = 0xFA00

von Schorsch X. (bastelschorsch)


Lesenswert?

So wie ich das sehe, wird die RTC ab FA00H adressiert. Die RTC ist auf 
Seite 47 beschrieben. Ansonsten Tante gugel nach dem Datenblatt fragen. 
Das Banklatch hat damit eigentlich zunächst nix zu tun.

: Bearbeitet durch User
von blutengel (Gast)


Lesenswert?

Ne Sorry so muss das heißen:

MOV DPTR,Adresse von Adresslatch
MOV A,#was geschrieben werden soll
movx @DPTR,A

von blutengel (Gast)


Lesenswert?

Bist du sicher das das Banklatch nichts damit zu tun hat. Oder ich 
verstehe das falsch. Auf Seite 34 steht etwas über Chip Enable Signale. 
Und Signal EW1 ist für die RTC. Ich habe auch am Chip gemesen. CE ist 
immer High.

von Schorsch X. (bastelschorsch)


Lesenswert?

blutengel schrieb:
> Und Signal EW1 ist für die RTC. Ich habe auch am Chip gemesen. CE ist
> immer High.

Sach ich doch. Basisadresse nach dem angegebenen PLD ist die FA00H. Und 
das erste EW1 Signal ist eben für die RTC. Das sollt auch High sein im 
Normalzustand. Oder hast du irgendein Programm drauf am laufen, welches 
die RTC anspricht ? Testhalber ginge auch das Monitorprogramm. Das 
Banklatch dürfte für die Umschaltung der beiden Speichermodelle da sein, 
um z.B. ein Intel Basic drauf laufen zu lassen, welches im oberen 
Bereich Programm und Daten gleichzeitig sehen will.

von blutengel (Gast)


Lesenswert?

Ja habe eine Initalisierungsroutine laufen.Nach der Initalisierung wird 
die RTC in Dauerschleife ausgelesen und auf einem LCD ausgegeben. Die 
LCD Routinen habe ich mal jetzt aus Übersichts Gründen hier weg gelassen
1
$INCLUDE (reg517aw.inc)
2
3
4
5
6
7
DS 32  ;32 Bytes für Stack reservieren
8
cseg at 0000h
9
10
11
; Einstellen der Adressen der Register der RTC:
12
S1    EQU  0FA00H  ;RTC-SFR Sekunden Einerstelle
13
S10    EQU  0FA01H  ;RTC-SFR Sekunden Zehnerstelle
14
Min1          EQU  0FA02H  ;RTC-SFR Minuten Einerstelle
15
Min10          EQU  0FA03H  ;RTC-SFR Minuten Zehnerstelle
16
H0    EQU  0FA04H  ;RTC-SFR Stunden Einerstelle
17
H10    EQU  0FA05H  ;RTC-SFR Stunden Zehnerstelle
18
D1    EQU  0FA06H  ;RTC-SFR Tage Einerstelle
19
D10    EQU  0FA07H  ;RTC-SFR Tage Zehnerstelle
20
M1    EQU  0FA08H  ;RTC-SFR Monate Einerstelle
21
M10    EQU  0FA09H  ;RTC-SFR Monate Zehnerstelle
22
Y1    EQU  0FA0AH  ;RTC-SFR Jahre Einerstelle
23
Y10    EQU  0FA0BH  ;RTC-SFR Jahre Zehnerstelle
24
Week  EQU  0FA0CH  ;RTC-SFR Wochentag
25
REGD  EQU  0FA0DH  ;RTC-SFR Steuerregister D
26
REGE  EQU  0FA0EH  ;RTC-SFR Steuerregister E
27
REGF  EQU  0FA0FH  ;RTC-SFR Steuerregister F
28
29
LCALL rtc_init0
30
31
loop:  
32
33
  lcall  rtc_lesen  
34
35
  mov  A,#10000001b  ;zeile 1 pos 40h
36
  LCALL  set_cursor  ;Cursor an Adresse setzen
37
38
  MOV  R1,#35H  ;Uhrzeit Std. im Datenspeicher
39
  MOV  A,@R1
40
  LCALL  Zeichen
41
  DEC  R1
42
  MOV  A,@R1  
43
  LCALL   Zeichen  
44
  DEC  R1
45
  MOV  A,#3AH
46
  LCALL  Zeichen
47
  MOV  A,@R1  ;Uhrzeit Minuten
48
  LCALL  Zeichen
49
  DEC  R1
50
  MOV  A,@R1
51
  LCALL  Zeichen
52
  DEC  R1
53
  MOV  A,#3AH
54
  LCALL  Zeichen
55
  MOV  A,@R1  ;Uhrzeit Sekunden
56
  LCALL  Zeichen
57
  DEC  R1
58
  MOV  A,@R1
59
  LCALL  Zeichen
60
  
61
  ljmp  loop
62
;...................................................................
63
        rtc_init0:
64
  MOV  DPTR,#REGF  
65
  MOV  A,#04H  ;Test=0 immer, 24h Betrieb, Uhr aktiv, 
66
  MOVX  @DPTR,A  ; ... Reset inaktiv
67
  MOV  DPTR,#REGE
68
  MOV  A,#00H  ;
69
  MOVX  @DPTR,A
70
  MOV  DPTR,#REGD
71
  MOV  A,#00H  ;Hold auf Null
72
  MOVX  @DPTR,A  ;Initialisierungsroutine gemäß 
73
      ;Programmbeispiel von Prof. vom Berg 
74
      ;laut Datenblatt
75
  LCALL  rtc_bereit
76
77
  MOV  DPTR,#REGF
78
  MOV  A,#07H  ;Test=0, 24h, Uhr stop, Reset aktiv
79
  MOVX  @DPTR,A  
80
  
81
  MOV  A,#06h  ;Test 0 24h, uhr Stop, Reset inaktiv
82
  MOVX  @DPTR,A  
83
84
  MOV  DPTR,#S1
85
  MOV  A,#00H  
86
  MOVX  @DPTR,A  
87
   
88
  MOV  DPTR,#S10
89
  MOV  A,#00H  
90
  MOVX  @DPTR,A  
91
  
92
  MOV  DPTR,#Min1
93
  MOV  A,#00H  
94
  MOVX  @DPTR,A  
95
96
  MOV  DPTR,#Min10
97
  MOV  A,#00H  
98
  MOVX  @DPTR,A  
99
100
  MOV  DPTR,#H0
101
  MOV  A,#00H  
102
  MOVX  @DPTR,A  
103
104
  MOV  DPTR,#H10
105
  MOV  A,#00H  
106
  MOVX  @DPTR,A  
107
108
  MOV  DPTR,#D1
109
  MOV  A,#03H  
110
  MOVX  @DPTR,A  
111
  
112
  MOV  DPTR,#D10
113
  MOV  A,#02H  
114
  MOVX  @DPTR,A  
115
116
  MOV  DPTR,#M1
117
  MOV  A,#02H  
118
  MOVX  @DPTR,A
119
120
  MOV  DPTR,#M10
121
  MOV  A,#00H  
122
  MOVX  @DPTR,A  
123
  
124
  MOV  DPTR,#Y1
125
  MOV  A,#06H  
126
  MOVX  @DPTR,A  
127
128
  MOV  DPTR,#Y10
129
  MOV  A,#00H  
130
  MOVX  @DPTR,A  
131
132
  MOV  DPTR,#Week  ;Wochentag So=0, Mo=1, ...
133
  MOV  A,#04H  ; entspr. Donnerstag
134
  MOVX  @DPTR,A  
135
136
  MOV  DPTR,#REGF  
137
  MOV  A,#04H  ;Test=0 immer, 24h Betrieb, Uhr aktiv, 
138
  MOVX  @DPTR,A  ; ... Reset inaktiv
139
  MOV  DPTR,#REGE
140
  MOV  A,#00H  ;
141
  MOVX  @DPTR,A
142
  MOV  DPTR,#REGD
143
  MOV  A,#00H  ;Hold auf Null
144
  MOVX  @DPTR,A  ;Initialisierungsroutine beenden mit 
145
      ;einer Wiederholung der Anfangssequenz
146
147
rtc_bereit:  
148
  MOV  DPTR,#REGD
149
  MOV  A,#01H
150
  MOVX  @DPTR,A  ;HOLD auf high
151
  MOVX  A,@DPTR  ;Busy einlesen
152
  ANL  A,#02H  ;und ausmaskieren (JNB ACC.1 nicht akzeptiert???)
153
  CJNE  A,#00H,ber  ;wenn Busy low ist, ist die RTC bereit
154
         MOVX  A,@DPTR
155
  Anl  A,#0feH
156
  MOVX  @DPTR,A  ;Hold auf low
157
  SJMP  rtc_bereit  ;warten bis RTC bereit  
158
ber:  Anl  A,#0feH
159
  MOVX  @DPTR,A  ;Hold auf low
160
  RET
161
162
rtc_lesen:
163
  MOV  R0,#13D    ;13 Uhrenregister
164
  MOV  R1,#30H    ;Zeiger auf den unteren Datenspeicher
165
  MOV  DPTR,#S1    ;DPTR auf erstes Uhrenregister
166
next:  call  rtc_bereit  ;ist die Uhr bereit zum Auslesen?
167
  MOVX  A,@DPTR    ;Uhrzeit auslesen
168
  ANL  A,#0FH    ;Ergebnis ausmaskieren
169
  ADD  A,#30H    ;Formatierung für LCD-Ausgabe
170
  MOV  @R1,A    ;und in der entspr. Speicherzelle ablegen
171
  INC  DPTR    ;nächstes Uhrregister und ...
172
  INC  R1    ;nächsten Speicherplatz einstellen
173
  DJNZ  R0,next
174
;  MOV  P1,30H    ;Kontrollwert
175
  RET
176
RET

von Schorsch X. (bastelschorsch)


Lesenswert?

Ohne im Detail deinen Quellcode zu lesen, sollte das ungefähr so 
aussehen. Kommt kein CS an der Uhr oder wo liegt das Problem ?

von blutengel (Gast)


Lesenswert?

Genau leider kein CS Signal. Ist immer High. Deshalb glaube ich das dies 
erst irgendwie aktiviert werden muss.

von Schorsch X. (bastelschorsch)


Lesenswert?

NIcht mit dem aufgelisteten PLD. Vielleicht steckt ja ein anderes drin. 
Evtl. auf Lochraster aufbauen und statisch durchtesten... Oder mach ein 
Programm, welches zyklisch alle Speicherzellen ausliest und auf einem 
Portpinr ein Syncsignal z.B. alle paar kB ausgibt. Und dann langsam 
einkreisen, ob überhaupt auf FA00H selektiert wird.

von blutengel (Gast)


Angehängte Dateien:

Lesenswert?

Ich habe mir mal den Adressbereich mit hterm anzeigen lassen siehe 
Bild.Egal was ich mache schein immer das selbe drin zu stehen

von blutengel (Gast)


Lesenswert?

Auf dem Etikett von dem PLD steht 084

von blutengel (Gast)


Lesenswert?

So habe jetzt mal ein Programm geschrieben das einmal jede Adresse von 
FA00h bis FC00h anwählt und habe ein Oszi an den CE Pin des RTC 
gesetzt.dazwischen war immer eine Sekunde Pause damit man nichts 
verpasst weils zu schnell ist, aber kein Mucks auf dem Ce Pin

von Schorsch X. (bastelschorsch)


Lesenswert?

Hast du einen Speicheroszi ? Mal bis FFFF listen lassen und schauen, was 
sich tut ?

von blutengel (Gast)


Lesenswert?

Ne leider nicht. Egal welche Adresse ich anwähle es passier rein gar 
nichts. Das kann doch nicht so schwierig sein. Das Problem ist auch 
leider das es über das Board nicht viel gibt im Netz

von blutengel (Gast)


Lesenswert?

Also der Fehler war eig. ganz einfach. NUr nicht einfach zu finden. Ihr 
hattet Recht. Das erste Uhrenregister fängt bei FA00h an. CS Signal muss 
nicht manuell gesezt werden. Je nachdem welche Adresse angesprochen 
wird,schaltet das PLD automatisch die CS Signale dadurch das A9 bis A15 
an den PLD angeschlossen sind. Der Fehler aber lag in der rtc_lesen 
Routine. Dort wird ein Busy abgefragt.Dieser Befehl stand an der 
falschen Stelle.Es muss vor dem setzen der Adresse für das Uhrenregister 
abgefragt werden.

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.