Auslesen von Daten funktioniert nicht(c8051f020 interfacing mit DS1307)

(Firma: Brusa HyPower) #7046660
Lesenswert?

Hallo miteinander,

Ich soll für ein Projekt mit einem C8051f020 und einer DS1307 die Zeit 
überwachen. Jedoch funktioniert das auslesen der Zeit nicht. Ich kann 
Daten Senden und empfange ACK's von der DS1307, beim auslesen der Zeit 
lese ich aber das aus:
[h03 h80 h00 h00 h00 h00 h00]

h03 im second-Register ist ja noch plausibel aber h80 im minute-Register 
sollte gar nicht möglich sein.
gesendet habe ich das:
[h0A h0A h0A h07 h0A h0A h0A]

Das Kontrollregister für den SQW-Output wurde hier nicht ausgelesen.
die Werte ändern nicht da der Quarz auch noch nicht wirklich 
funktioniert das sollte aber für das Testen vom Senden und Lesen von 
Daten laut diesem Beitrag kein Problem sein.
[[Beitrag "DS1307 - Oszillator schwing nicht"]]

Hab Die DS1307 schon drei mal ausgewechselt und bin langsam am ende mit 
den Ideen.
Hab auch noch den Code als Textdatei angefügt falls sich den jemand 
anschauen möchte, der Code ist aber noch recht schlecht kommentiert.

wäre dankbar für jede Hilfe

Samuel
Angehängte Dateien:
#7046809
Lesenswert?

Wo hast Du den Code her?
Ich kenne das so, daß man das Interruptflag immer erst als letztes 
löschen darf. Das ist nämlich das Zeichen für den Controller, die 
nächste Aktion zu starten.

"The serial data in the register remains stable as long as the SI flag 
is set. When the SI flag is not set, the system may be in the process of 
shifting data in/out and the CPU should not attempt to access this 
register."
(Firma: Brusa HyPower) #7046928
Lesenswert?

Peter D. schrieb:
> Wo hast Du den Code her?
Den hab selber geschrieben.

> Ich kenne das so, daß man das Interruptflag immer erst als letztes
>löschen darf. Das ist nämlich das Zeichen für den Controller, die
>nächste Aktion zu starten.
So wie ich das verstanden habe wird das SI-Bit von der Hardware gesetzt 
und
muss vom Code zurückgesetzt werden. deshalb habe ich immer am Anfang von
einem Case das SI-Bit zurückgesetzt was ja eigentlich den gleichen 
Effekt haben müsste wie das SI-Bit am Ende des Letzten Case 
zurückzusetzen.
Ich habe es ausprobiert, hats aber leider nicht besser gemacht.
Hättest du vielleicht ein Beispiel?
Gruss
Samuel
(Firma: Brusa HyPower) #7047013
Lesenswert?

Peter D. schrieb:
> Schlechte Idee :-(
> Laß ihn als *.c, dann kann man ihn besser lesen und muß ihn nicht erst
> umbenennen.
Hier hast du noch die .c und .h files.
Ich hab auch noch einen Sreenshot vom Scope gemacht das man sehen kann 
was ich sende und empfange.
Hab vergessen die Bilder umzubenennen,
Scope_33 ist das senden und scope_32 das empfangen.
Übrigens empfange ich immer das gleiche unabhängig davon was ich sende, 
dass hatte ich noch vergessen zu erwähnen.

Gruss
Samuel
Angehängte Dateien:
(Firma: Brusa HyPower) #7049418
Lesenswert?

uff basse schrieb:
> Ich habe deinen chaotischen Code nicht tiefgründig durchforstet,
> finde aber auf die Schelle keinen Code der die Uhr initialisiert
> bzw. den Oszillator explizit startet.
Ja der Code ist noch recht unübersichtlich, der Oszillator wird 
gestartet wenn das Clock Halt Bit(Bit 7 im Sekunden Register) auf 0 
gesetzt wird. Das bedeutet sobald ich einen gültigen Wert ins Sekunden 
Register schreibe müsste der Oszillator starten.
(Firma: Brusa HyPower) #7049427
Lesenswert?

Peter D. schrieb:
> Samuel G. schrieb:
>> da der Quarz auch noch nicht wirklich
>> funktioniert
>
> Der muß laufen, sonst werden die Daten nicht ins Zählregister
> übernommen.
Meinst du mit Zählregister das Timekeeper Register? Unter counting 
register finde ich nichts im Datenblatt. Und wenn du das Timekeeper 
Register meinst, wie kann ich dann das CH Bit zurücksetzen wenn die 
Werte nicht übernommen werden wenn der Quarz nicht läuft aber der Quarz 
läuft nicht weil das CH Bit gesetzt ist?
> Probier mal schreiben und lesen des RAM.
Danke für den Input das probier ich gleich mal aus

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren