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
|
led_max7219_off(0xff); // switch displays off
|
||||||
printf("OK\n");
|
printf("OK\n");
|
||||||
|
|
||||||
// display numbers on TM1637
|
// get and display numbers on TM1637
|
||||||
for (uint8_t number=0; number<LENGTH(numbers); number++) {
|
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);
|
mux_select(number);
|
||||||
if (0xffff==numbers[number].number) {
|
if (0xffff==numbers[number].number) {
|
||||||
led_tm1637_off();
|
led_tm1637_off();
|
||||||
|
@ -673,7 +678,7 @@ void main(void)
|
||||||
uint16_t buttons_diff = buttons^buttons_new; // get difference
|
uint16_t buttons_diff = buttons^buttons_new; // get difference
|
||||||
buttons = buttons_new; // save new state
|
buttons = buttons_new; // save new state
|
||||||
if (buttons_diff) { // only do something if there is a change
|
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++) {
|
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_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
|
if (buttons&(1<<numbers[number].up) && buttons&(1<<numbers[number].down)) { // both buttons are pressed
|
||||||
|
@ -701,6 +706,11 @@ void main(void)
|
||||||
} else {
|
} else {
|
||||||
led_tm1637_number(numbers[number].number);
|
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
|
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
|
rtc_ds1307_time = rtc_ds1307_read_time(); // get time/date from external RTC
|
||||||
|
|
Loading…
Reference in New Issue