Hallo,
ich versuche gerade den DS1307 ohne die fertige Bascom lib zum laufen zu kriegen, da ich alle Variablen für Berechnungen brauche (Langzeit-Countdown). Jetzt habe ich gerade ein gewaltiges Problem: Der Ds1307 schmeißt mir nur irrsinnige Werte für die Uhrzeit entgegen. Ich hocke jetzt bestimmt schon 2 Stunden an dem Problem, hab ein Testprogramm (unten) geschrieben und komme einfach ned weiter
Ums gleich vorweg zu sagen: der Code enthält Teile des Codes von www.pirnaer.de . Dieser war am Anfang zum üben gebraucht worden und dann später in das unten gepostete Programm verändert worden. Bis auf manche Ausleseroutinen erkennt man ihn sowieso nicht wieder.
Das Lcd zeigt an:
12 11 10 (passt alles)
11 41 28 (warum?????)
Wie kann ich das 24 Stunden-Format einstellen? Ich habe dazu zwar verschiedenes gelesen, aber nichts funktioniert.
Danke schonmal
Mfg,
Flo
ich versuche gerade den DS1307 ohne die fertige Bascom lib zum laufen zu kriegen, da ich alle Variablen für Berechnungen brauche (Langzeit-Countdown). Jetzt habe ich gerade ein gewaltiges Problem: Der Ds1307 schmeißt mir nur irrsinnige Werte für die Uhrzeit entgegen. Ich hocke jetzt bestimmt schon 2 Stunden an dem Problem, hab ein Testprogramm (unten) geschrieben und komme einfach ned weiter
Ums gleich vorweg zu sagen: der Code enthält Teile des Codes von www.pirnaer.de . Dieser war am Anfang zum üben gebraucht worden und dann später in das unten gepostete Programm verändert worden. Bis auf manche Ausleseroutinen erkennt man ihn sowieso nicht wieder.
Code:
$regfile = "m168def.dat"
$crystal = 8000000
'Lcd Init
Config Lcd = 40 * 2
Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Portb.1 , Rs = Portb.2
' Einstellen der I2C Schnittstelle
Config Sda = Portc.4
Config Scl = Portc.5
' Addresse des DS1307
Const Ds1307w = &HD0
Const Ds1307r = &HD1
'Variablen
Dim Sekunde As Byte
Dim Minute As Byte
Dim Stunde As Byte
Dim Wochentag As Byte
Dim Tag As Byte
Dim Monat As Byte
Dim Jahr As Byte
Dim Dummy As Byte
'Lcd bereinigen
Cls
Cursor Off
'Hier beginnt der Zeiteinstellpart!!
'##############################################################
Sekunde = 40
Minute = 59
Stunde = 11
Tag = 12
Monat = 11
Jahr = 10 '2010 geht nicht, da byte. Umgehen?
'Datum stellen
I2cstart ' Start
I2cwbyte Ds1307w ' DS1307 schreiben
I2cwbyte 4 ' DS1307 Adresszeiger auf 4 (Byte 5) stellen
I2cwbyte Tag ' Tag schreiben
I2cwbyte Monat ' Monat schreiben
I2cwbyte Jahr ' Jahr schreiben
I2cstop
'Uhrzeit stellen
I2cstart ' Start
I2cwbyte Ds1307w ' DS1307 schreiben
I2cwbyte 0 ' DS1307 Adresszeiger auf 0 stellen
I2cwbyte Sekunde ' Sekunden schreiben
I2cwbyte Minute ' Minuten schreiben
I2cwbyte Stunde ' Stunden schreiben
I2cstop
'#################################################################
'Hier endet der Zeiteinstellpart!
Do
'Auslesen
I2cstart ' Start
I2cwbyte Ds1307w ' DS1307 schreiben
I2cwbyte 0 ' DS1307 Adresszeiger auf 0 stellen
I2cwbyte Ds1307r ' DS1307 lesen (ab vorher eingestellter Adresse 0)
I2crbyte Sekunde , Ack ' Sekunden
I2crbyte Minute , Ack ' Minuten
I2crbyte Stunde , Ack ' Stunden
I2crbyte Wochentag , Ack ' Wochentag
I2crbyte Tag , Ack ' Tag
I2crbyte Monat , Ack ' Monat
I2crbyte Jahr , Nack ' Jahr
I2cstop
Sekunde = Makedec(sekunde) : Minute = Makedec(minute) : Stunde = Makedec(stunde)
Tag = Makedec(tag) : Monat = Makedec(monat) : Jahr = Makedec(jahr)
'Anzeigen
Locate 1 , 1
Lcd Tag ; " " ; Monat ; " " ; Jahr ; " ";
Locate 2 , 1
Lcd Stunde ; " " ; Minute ; " " ; Sekunde ; " ";
Loop
End
Das Lcd zeigt an:
12 11 10 (passt alles)
11 41 28 (warum?????)
Wie kann ich das 24 Stunden-Format einstellen? Ich habe dazu zwar verschiedenes gelesen, aber nichts funktioniert.
Danke schonmal
Mfg,
Flo