Hallo allerseits,
ich möchte, dass mittels Tastendruck die Stunden- und Minutenwerte im
DS1307 inkrementiert werden können.
So sieht etwa die Funktion für die Minuten aus:
1 | void incrementminutes(){
|
2 | i2c_start_wait(Uhr+I2C_WRITE);
|
3 | i2c_write(1); //Adresse des Minuten Registers
|
4 | i2c_rep_start(Uhr+I2C_READ);
|
5 | uint8_t minute = bcdToDec(i2c_readNak());
|
6 | i2c_rep_start(Uhr+I2C_WRITE);
|
7 | i2c_write(1); //Adresse des Minuten Registers
|
8 | i2c_write(MinuteToBCD(minute + 1));
|
9 | i2c_stop();
|
10 | }
|
Das Problem ist nun, dass die Minuten/Stundenzahl auf Knopfdruck zwar
auch fröhlich erhöht wird, allerdings immer weiter: Ich kann also auch
79:88 Uhr einstellen. Heißt das, dass ich die Plausibilitätsprüfung
bereits im µC durchführen muss? Im Datenblatt heißt es zwar, dass
"Illogical time and date entries result in undefined operation", ich
hatte jedoch eigentlich gehofft, das Teil wäre schlau genug, um etwa bei
Minuten > 59 automatisch wieder auf 0 zu springen und die Stunden um
eins zu erhöhen.
Vielen Dank!
Philipp