add number saving in ds1307 ram
This commit is contained in:
parent
f92e654a5e
commit
f3e93d4c67
14
main.c
14
main.c
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue