After trying several samples from Bascom-avr, tgis forum and internet the Time on my display is not increasing.
I2C is working with other I2C chips like eeprom's, ADC and DAC.
The SQW signal can be switched on or off and the frequency can be changed. So assuming I2C and Crystal is ok.
Maybe someone can have a look,
regards Peter
[code:1:57486f6ee6]
$regfile = "usb1287.dat"
$crystal = 16000000
$hwstack = 64
$swstack = 40
$framesize = 40
Config Lcd = 40 * 4
Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.5 , Db6 = Porta.6 , _
Db7 = Porta.7 , E = Porta.1 , Rs = Porta.3 , E2 = Porta.2
' Systemvariable der LCD-Bibliothek (wichtig, bloß nicht ändern)
Dim ___lcdno As Byte 'ohne LIB
' wählt die beiden oberen Zeilen aus
___lcdno = 0
Initlcd
' löscht die beiden oberen Zeilen
Cls
Cursor Off
Lcd "DS1307_Versie V 1.00"
' wählt die beiden unteren Zeilen aus
___lcdno = 1
Initlcd
Cls
Cursor Off
___lcdno = 0
Cls
'Config TWI/I2C hardware
$lib "i2c_twi.lbx"
Config Twi = 100000 'busspeed
Config Sda = Portd.1
Config Scl = Portd.0
Dim Twi_start As Byte
Const Ds1307w = &HD0
Const Ds1307r = &HD1
I2cinit
I2cstart ' Start
I2cwbyte Ds1307w ' DS1307 schreiben
I2cwbyte 7 ' DS1307 Adresszeiger auf 7 stellen
I2cwbyte 176 ' DS1307 1 Hz
I2cstop
' Einstellen der Datum-/Zeitfunktion in BASCOM dabei werden automatisch
' die Variablen _year,_month,_day,_hour,_min,_sec im BCD Format angelegt
Config Clock = User
' Datumsformat deutsch Tag.Monat.Jahr und als Trennzeichen den Punkt
Config Date = Dmy , Separator = .
Cls
Cursor Off
' Nur zum stellen der Uhr Kommentar entfernen
Time$ = "17:30:59"
Date$ = "24.08.07"
Do
Locate 2 , 1 : Lcd Mid(date$ , 1 , 8)
Locate 2 , 12 : Lcd Mid(time$ , 1 , 8)
Waitms 1000
Loop
End
' Benutzer definierte Routinen die von der datetime.lib im BASCOM genutzt werden
Dim Weekday As Byte
Getdatetime:
I2cstart ' Start
I2cwbyte Ds1307w ' DS1307 schreiben
I2cwbyte 0 ' DS1307 Adresszeiger auf 0 stellen
I2cstop
I2cstart ' Start
I2cwbyte Ds1307r ' DS1307 lesen (ab vorher eingestellter Adresse 0)
I2crbyte _sec , Ack ' Sekunden
I2crbyte _min , Ack ' Minuten
I2crbyte _hour , Ack ' Stunden
I2crbyte Weekday , Ack ' Wochentag (in Dummy gelesen da von date$/time$ nicht genutzt)
I2crbyte _day , Ack ' Tag
I2crbyte _month , Ack ' Monat
I2crbyte _year , Nack ' Jahr
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 ' Start
I2cwbyte Ds1307w ' DS1307 schreiben
I2cwbyte 4 ' DS1307 Adresszeiger auf 4 (Byte 5) stellen
I2cwbyte _day ' Tag schreiben
I2cwbyte _month ' Monat schreiben
I2cwbyte _year ' Jahr schreiben
I2cstop
Return
Settime:
_sec = Makebcd(_sec) : _min = Makebcd(_min) : _hour = Makebcd(_hour)
I2cstart ' Start
I2cwbyte Ds1307w ' DS1307 schreiben
I2cwbyte 0 ' DS1307 Adresszeiger auf 0 stellen
I2cwbyte _sec ' Sekunden schreiben
I2cwbyte _min ' Minuten schreiben
I2cwbyte _hour ' Stunden schreiben
I2cstop
Return
[/code:1:57486f6ee6]
[b:57486f6ee6][color=red:57486f6ee6](BASCOM-AVR version : 2.0.7.6 )[/b:57486f6ee6][/color:57486f6ee6]
↧