Im Forum und im Wiki
-
Thread
RTC DS1307 mit Bascom konfigurieren und abfragen
! Twcr = &B00000100 ' nur TWEN setzen 'address of ds1307 Const Ds1307w = &HD0 ' Addresses of Ds1307 clock Const Ds1307r = &HD1 Config Clock = User ' this will dim the bytes
year As Byte Dim _sec As Byte Dim _min As Byte Dim _hour As Byte Dim Wt As String * 15 Dim Ds1307w As Byte Dim Ds1307r As Byte Ds1307w = &B11010000 Ds1307r = &B11010001 '_day = 24 '_month = 5 '_year = 12 '_sec = 00 '_min = 38 '_hour = 15 Input "Wd.: " , _weekday Input "Tag: " ,
-
Thread
Wieder mal DCF
//Blinkenlights:= true; BlinkTimer:= 10; MinuteSema:= false; minute:= DS1307getMinute; hour:= DS1307getHour; ... [/c] offenbar jede Minute rein. Vom DS1307 (wozu braucht ihr dann noch DCF? der DS1307 zählt doch ohnehin selber die Zeit weiter) wird die Zeit geholt
bemüht, eine callback Prozedur zu schreiben. Hier mein Vorschlag: procedure DCFupdate; begin DS1307setSecond(DCF_SECOND); DS1307setMinute(DCF_MINUTE); DS1307setHour(DCF_HOUR); end; Die Prozedur habe ich vor InitPorts eingefügt - soweit ich mich an pascal erinnern kann, ist die Platzierung
-
Thread
Code in Ordnung/strukturiert/uebersichtlich?
[1] = (( buffer & 0x0F )) + '0'; ds1307.seconds[2] = '\0'; // read & write Minutes DS1307_read(0x01, &buffer); ds1307.minutes[0] = (( buffer & 0x7F ) >> 4 ) + '0'; ds1307.minutes[1] = (( buffer & 0x0F )) + '0'; ds1307.
; case 5: ds1307.day = "Friday\0"; break; case 6: ds1307.day = "Saturday\0"; break; case 7: ds1307.day = "Sunday\0"; } // read & write Date DS1307_read(0x04, &buffer); ds1307
-
Thread
Real-Time Clock (ds1307)
Wie ist das bei dem DS1307 gedacht?? Nicht das das Problem aus der Richtung kommt....
= (1 << TWEN) | (1 << TWSTO) | (1 << TWINT); while(TWCR & (1 << TWSTO)); } void ds1307_writereg(uint8_t adr,uint8_t data) { twi_start(); twi_writeadr(DS1307ADR,TW_WRITE); twi_writedata(adr); twi_writedata(data); twi_stop(); } uint8_t ds1307_readreg(uint8_t adr
-
Thread
RTC läuft nicht
Config Sda = Portc.1 Config Scl = Portc.0 ' Adressen festlegen Const Ds1307w = &HD0 ' Addresse des DS1307 zum schreiben Const Ds1307r = &HD1 ' Addresse des DS1307 zum lesen ' Uhr konfigurieren
RS232 Ausgabe auf den PC machen oder einfach eine LED an einem Port anschalten. Hast Du auch die DS1307 nach Datenblatt beschaltet? Liegt Strom an? I2C-Adresse der DS1307 korrekt eingetragen? Wenn die DS1307 hardwaremäßig nicht korrekt läuft dann sollte das I2cstart eine Fehlermeldung zurückgeben.
-
Thread
DS1307 rennt
Mit den DS1307 habe ich auch immer eine große Abweichung festgestellt. Seitdem verwende ich nur noch DS3234.
Die DS3231 ist fast identisch mit der DS1307 und hat einen integrierten TCXO. Die würde sogar gehen weil sie im Code unterstützt wird. Trotzdem würde mich mal interessieren ob jemand eine gescheite Genauigkeit mit der DS1307 hingekriegt hat
-
Thread
I2C Real Time Clock/Calendar (DS1337
RAM_END 0x3F void SetTimeDate() // simple, hard-coded way to set the date. { I2C_WriteRegister(DS1307, MONTHS_REGISTER, 0x08); I2C_WriteRegister(DS1307, DAYS_REGISTER, 0x31); I2C_WriteRegister(DS1307, YEARS_REGISTER, 0x17); I2C_WriteRegister(DS1307, HOURS_REGISTER, 0x08 + 0x40); // add 0x40 for PM I2C_WriteRegister(DS1307, MINUTES_REGISTER, 0x51); I2C_WriteRegister(DS1307, SECONDS_REGISTER, 0x00); } [/c] und lese diese wieder mit: [c] void DS1307_GetTime(uint8_t *hours, uint8_t *minutes, uint8_t *seconds)
-
Thread
Function und sprintf problem / frage
(); unsigned char ds1307_read_minute(); unsigned char ds1307_read_hour(); unsigned char ds1307_read_day(); unsigned char ds1307_read_date(); unsigned char ds1307_read_month(); unsigned char ds1307_read_year(); unsigned
-MP -MF .dep/ds1307.o.d ds1307.c -o ds1307.o In file included from ds1307.c:2: ds1307.h:12: warning: function declaration isn't a prototype ds1307.h:13: warning: function declaration isn't a prototype ds1307.h:14