add number saving in ds1307 ram

This commit is contained in:
King Kévin 2017-05-07 20:29:32 +02:00
parent f92e654a5e
commit f3e93d4c67
1 changed files with 12 additions and 2 deletions

14
main.c
View File

@ -509,8 +509,13 @@ void main(void)
led_max7219_off(0xff); // switch displays off
printf("OK\n");
// display numbers on TM1637
// get and display numbers on TM1637
for (uint8_t number=0; number<LENGTH(numbers); number++) {
uint8_t ram[2] = {0};
if (!rtc_ds1307_read_ram(ram, number*sizeof(ram), sizeof(ram))) {
printf("could not get number from DS1307\n");
}
numbers[number].number = (ram[0]<<8)+ram[1];
mux_select(number);
if (0xffff==numbers[number].number) {
led_tm1637_off();
@ -673,7 +678,7 @@ void main(void)
uint16_t buttons_diff = buttons^buttons_new; // get difference
buttons = buttons_new; // save new state
if (buttons_diff) { // only do something if there is a change
//printf("button pressed: %016b\n", buttons);
printf("button pressed: %016b\n", buttons);
for (uint8_t number=0; number<LENGTH(numbers); number++) {
if (buttons_diff&(1<<numbers[number].up) || buttons_diff&(1<<numbers[number].down)) { // buttons for number
if (buttons&(1<<numbers[number].up) && buttons&(1<<numbers[number].down)) { // both buttons are pressed
@ -701,6 +706,11 @@ void main(void)
} else {
led_tm1637_number(numbers[number].number);
}
// save number
uint8_t ram[2] = {numbers[number].number>>8, numbers[number].number};
if (!rtc_ds1307_write_ram(ram, number*sizeof(ram), sizeof(ram))) {
printf("could not set number on DS1307\n");
}
}
if ((buttons_diff&(1<<9) && buttons&(1<<9)) || (buttons_diff&(1<<8) && buttons&(1<<8))) { // buttons for time pressed
rtc_ds1307_time = rtc_ds1307_read_time(); // get time/date from external RTC