Hallo,
ich habe ein Ausgabeproblem über die serielle Schnittstelle. Ich verwende einen Arduino-Mega-Clone und eine DS1307W Echtzeituhr. Das auslesen über I2C funktioniert ohne Probleme, alle Werte in Ordnung. Nur beim Print-Befehl "Print Time$" wird die Zeit nicht korrekt ausgegeben. Der Code selber könnte ursprünglich von Michael sein. Die Sekunden werden vollständig ignoriert. Kennt jemand das Problem? Für meine Uhr wird diese Ausgabe zwar nicht benutzt, macht mich aber trotzdem fuchsig wenn es nicht gehen will.
Ausgabebeispiel Monitor:
Datum Uhrzeit: 09.04.18 00:21:55
21 : 55 : 58
Datum Uhrzeit: 09.04.18 00:21:55
21 : 55 : 59
Gruß Udo
Alles anzeigen
ich habe ein Ausgabeproblem über die serielle Schnittstelle. Ich verwende einen Arduino-Mega-Clone und eine DS1307W Echtzeituhr. Das auslesen über I2C funktioniert ohne Probleme, alle Werte in Ordnung. Nur beim Print-Befehl "Print Time$" wird die Zeit nicht korrekt ausgegeben. Der Code selber könnte ursprünglich von Michael sein. Die Sekunden werden vollständig ignoriert. Kennt jemand das Problem? Für meine Uhr wird diese Ausgabe zwar nicht benutzt, macht mich aber trotzdem fuchsig wenn es nicht gehen will.
Ausgabebeispiel Monitor:
Datum Uhrzeit: 09.04.18 00:21:55
21 : 55 : 58
Datum Uhrzeit: 09.04.18 00:21:55
21 : 55 : 59
Gruß Udo
BASCOM-Quellcode: Echtzeituhr
- '$sim
- $regfile = "m2560def.dat"
- $crystal = 16000000
- $hwstack = 80
- $swstack = 80
- $framesize = 100
- $baud = 38400
- $lib "mcsbyte.lbx" ' for smaller code
- $lib "ds1307clock_ger.lib"
- $lib "i2c_twi.lbx" ' Für Hardware TWI
- Config Twi = 100000 'I2C clock
- Twcr = &B00000100 'I2C einschalten
- Config Twi = 100000 ' Init TWBR und TWSR
- 'address of ds1307
- Const Ds1307w = &HD0 ' Addressen Ds1307
- Const Ds1307r = &HD1
- Config Clock = User
- Dim Weekday As Byte
- Print "DS1307"
- Waitms 100
- ' Zeit stellen
- 'Time$ = "22:10:00" ' Uhrzeit
- 'Date$ = "08-04-18" ' 08 Aprill 2018
- Do
- Print "Datum Uhrzeit: " ; Date$ ; " " ; Time$
- Print _hour ; " : " ; _min ; " : " ; _sec
- Waitms 500
- Loop
- End
- 'called from ds1307clock.lib
- Getdatetime:
- I2cstart ' Generate start code
- I2cwbyte Ds1307w ' send address
- I2cwbyte 0 ' start address in 1307
- I2cstart ' Generate start code
- I2cwbyte Ds1307r ' send address
- I2crbyte _sec , Ack
- I2crbyte _min , Ack ' MINUTES
- I2crbyte _hour , Ack ' Hours
- I2crbyte Weekday , Ack ' Day of Week
- I2crbyte _day , Ack ' Day of Month
- I2crbyte _month , Ack ' Month of Year
- I2crbyte _year , Nack ' Year
- I2cstop
- _sec = Makedec(_sec) : _min = Makedec(_min) : _hour = Makedec(_hour)
- _day = Makedec(_day) : _month = Makedec(_month) : _year = Makedec(_year)
- Return
- Setdate:
- _day = Makebcd(_day) : _month = Makebcd(_month) : _year = Makebcd(_year)
- I2cstart ' Generate start code
- I2cwbyte Ds1307w ' send address
- I2cwbyte 4 ' starting address in 1307
- I2cwbyte _day ' Send Data to SECONDS
- I2cwbyte _month ' MINUTES
- I2cwbyte _year ' Hours
- I2cstop
- Return
- Settime:
- _sec = Makebcd(_sec) : _min = Makebcd(_min) : _hour = Makebcd(_hour)
- I2cstart ' Generate start code
- I2cwbyte Ds1307w ' send address
- I2cwbyte 0 ' starting address in 1307
- I2cwbyte _sec ' Send Data to SECONDS
- I2cwbyte _min ' MINUTES
- I2cwbyte _hour ' Hours
- I2cstop
- Return