add setting for dots

master
Eggert Jung 6 years ago
parent 5ed19b564c
commit 64d6e89619

@ -6,12 +6,15 @@ extern int8_t menu_val_timezone_ee EEMEM;
extern uint8_t menu_val_format;
extern uint8_t menu_val_format_ee EEMEM;
extern uint8_t menu_val_leds_ee EEMEM;
extern uint8_t menu_val_dots;
extern uint8_t menu_val_dots_ee EEMEM;
typedef enum {
OFF,
TIMEZONE,
FORMAT,
LEDS,
DOTS,
EXIT
} menu_state_t;

@ -37,7 +37,7 @@ LDFLAGS = -Wl,-Map=$(BUILDDIR)/$(TARGET).map,--cref
LDFLAGS += -lm
#LDFLAGS += -nostdlib
AVRDUDE_FLAGS = -p $(MCU) -C ./avrdude.conf -c $(AVRDUDE_PROGRAMMER) -U flash:w:$(BUILDDIR)/$(TARGET).hex
AVRDUDE_FLAGS = -p $(MCU) -C ./avrdude.conf -c $(AVRDUDE_PROGRAMMER) -U flash:w:$(BUILDDIR)/$(TARGET).hex -U eeprom:w:settings.eep
#### Define programs and commands. ####
CC = avr-gcc

@ -44,9 +44,9 @@ int8_t parse_nmea_gps(char input_string[RX_INPUT_BUFFER_SIZE], uint8_t output_bu
void encoder_action(uint8_t dir){
if(get_menu_active())
if (dir) {
menu_up_down(1);
} else {
menu_up_down(-1);
} else {
menu_up_down(1);
}
}
@ -78,7 +78,10 @@ int main(void){
clock_to_buffer(clock);
PORTC = (PORTC & (~DOT)) | (clock[0]%2) << 4; // blink dots
if(menu_val_dots)
PORTC = (PORTC & (~DOT)) | (clock[0]%2) << 4; // blink dots
else
PORTC &= ~DOT;
_delay_ms(100);
}
print_SR_Buffer();
@ -105,20 +108,25 @@ void setup(){
eeprom_write_byte(&menu_val_format_ee, menu_val_format);
}
OCR2A = eeprom_read_byte(&menu_val_leds_ee);
menu_val_dots = eeprom_read_byte(&menu_val_dots_ee);
if(menu_val_dots == 0xFF){
menu_val_dots = 0x01;
eeprom_write_byte((uint8_t*)&menu_val_dots_ee, menu_val_dots);
}
DDRA = ENABLE_TUBE_SUPPLY;
DDRA = ENABLE_TUBE_SUPPLY;
DDRB = STATUS_LED_B
DDRB = STATUS_LED_B
| STATUS_LED_C
| MOSI
| CLK;
DDRC = LATCH_SR
DDRC = LATCH_SR
| ENABLE_SR
| DOT
| ENABLE_TUBE_PSU;
DDRD = RESET_SR
DDRD = RESET_SR
| TUBE_LED;
//--------------------------

@ -10,6 +10,8 @@ int8_t menu_val_timezone;
uint8_t menu_val_format_ee EEMEM;
uint8_t menu_val_format;
uint8_t menu_val_leds_ee EEMEM;
uint8_t menu_val_dots;
uint8_t menu_val_dots_ee EEMEM;
uint8_t get_menu_active(){
if(state != OFF)
@ -29,7 +31,6 @@ void enter_menu(){
selected ^= 1;
break;
}
//debug_menu();
}
const char* get_menu_text(){
@ -40,7 +41,6 @@ const char* get_menu_text(){
switch(state){
case TIMEZONE:
res = " ";
menu_val_timezone = eeprom_read_byte((uint8_t*)&menu_val_timezone_ee);
if(menu_val_timezone < 0)
res[3] = '-';
else
@ -58,6 +58,12 @@ const char* get_menu_text(){
res[4] = (OCR2A / 10 % 10) + 0x30;
res[5] = (OCR2A % 10) + 0x30;
break;
case DOTS:
if(menu_val_dots)
res = " AN ";
else
res = " AUS";
break;
default:
res = "ERROR ";
break;
@ -66,6 +72,7 @@ const char* get_menu_text(){
switch(state){
case TIMEZONE:
res = "ZONE ";
eeprom_write_byte((uint8_t*)&menu_val_timezone_ee, menu_val_timezone);
break;
case FORMAT:
res = "FORMAT";
@ -74,6 +81,10 @@ const char* get_menu_text(){
res = "LED ";
eeprom_write_byte(&menu_val_leds_ee, OCR2A);
break;
case DOTS:
res = "PUNKTE";
eeprom_write_byte((uint8_t*)&menu_val_dots_ee, menu_val_dots);
break;
case EXIT:
res = "ZURUEK";
break;
@ -93,7 +104,6 @@ void menu_up_down(uint8_t up_down){
menu_val_timezone = 12;
if(menu_val_timezone > 12)
menu_val_timezone = -12;
eeprom_write_byte((uint8_t*)&menu_val_timezone_ee, menu_val_timezone);
break;
case FORMAT:
if(menu_val_format == 12)
@ -104,6 +114,9 @@ void menu_up_down(uint8_t up_down){
case LEDS:
OCR2A += up_down;
break;
case DOTS:
menu_val_dots ^= 0x01;
break;
default:
break;
}

Loading…
Cancel
Save