#include #include #include #include "avr-hd44780/lcd.h" #include "i2c_peter/i2cmaster.h" #include "sdi_shield.h" #include uint8_t pgm = 0; uint8_t pvw = 0; typedef struct { uint8_t cam; uint8_t front_enabled; uint8_t pvw_enabled; } settings_t; uint8_t setting_limits[sizeof(settings_t)] = { 16, 2, 2 }; volatile union{ settings_t settings; uint8_t arr[sizeof(settings_t)]; } menu; void* EEMEM settings_saved; volatile uint8_t menu_state = 0; volatile uint8_t update = 1; #define SDI_SHIELD_ADDR 0x84 #define VF_BACK_PVW_TALLY_PIN 0 #define VF_BACK_PGM_TALLY_PIN 1 #define LENS_PGM_TALLY_PIN 2 #define VF_FRONT_PGM_TALLY_PIN 3 void enc_init(){ PORTC |= (1<<2) | (1 << 3); _delay_ms(10); PCMSK1 |= (1< setting_limits[0]) menu.settings.cam = 0; enc_init(); btn_init(); lcd_init(); lcd_on(); lcd_clear(); i2c_init(); // initialize I2C library DDRC |= 1<<0; PORTB |= (1<