43,8 → 43,8 |
|
const displaymode_t * mode; |
|
const char ee_message0[] PROGMEM = "Loading Data from EEPROM"; |
const char ee_message1[] PROGMEM = "No saved Data in EEPROM"; |
const char ee_message0[] PROGMEM = "Loading from EEPROM"; |
const char ee_message1[] PROGMEM = "No Data in EEPROM"; |
const char* ee_msg[] PROGMEM = {ee_message0, ee_message1}; |
|
/** |
52,13 → 52,13 |
*/ |
void get_eeprom(uint8_t verbose) { |
if (eeprom_read_byte(&ee_checkbyte1) == CHECKBYTE1 && eeprom_read_byte(&ee_checkbyte2) == CHECKBYTE2) { |
if (verbose) write_ascii_string_pgm(2, 9, ee_msg[0]); // Loading data |
if (verbose) write_ascii_string_pgm(2, 2, ee_msg[0]); // Loading data |
COSD_FLAGS_MODES = eeprom_read_byte(&ee_COSD_FLAGS_MODES); |
COSD_FLAGS_CONFIG = eeprom_read_byte(&ee_COSD_FLAGS_CONFIG); |
COSD_DISPLAYMODE = eeprom_read_byte(&ee_COSD_DISPLAYMODE); |
//if (verbose) write_ndigit_number_u(23, 11, COSD_DISPLAYMODE, 2, 0); |
} else { |
if (verbose) write_ascii_string_pgm(2, 9, ee_msg[1]); // Loading data |
if (verbose) write_ascii_string_pgm(2, 2, ee_msg[1]); // Loading data |
} |
} |
|
79,58 → 79,82 |
*/ |
void init_cosd(uint8_t UBat) { |
clear(); |
write_ascii_string_pgm(2, 1, PSTR("C-OSD Initialisation")); // C-OSD Initialisation |
write_ascii_string_pgm(2, 1, PSTR("C-OSD Init")); |
write_ascii_string_pgm(2, 4, PSTR(BUILDDATE)); |
|
#if FCONLY |
write_ascii_string_pgm(2, 2, PSTR("FC only Mode")); // FC only mode |
write_ascii_string_pgm(2, 3, PSTR("FC only Mode")); |
#else |
write_ascii_string_pgm(2, 2, PSTR("NaviCtrl Mode")); // NaviCtrl Mode |
write_ascii_string_pgm(2, 3, PSTR("NaviCtrl Mode")); |
|
usart1_EnableTXD(); |
usart1_puts_pgm(PSTR(REQUEST_UART_TO_FC)); |
usart1_DisableTXD(); |
#endif |
write_ascii_string_pgm(2, 3, PSTR(BUILDDATE)); |
uint8_t cellnum = 0; |
if (CELL_NUM == -1) { |
write_ascii_string_pgm(2, 4, PSTR("Guessing Number of Cells")); // Guessing Number of Cells |
do { |
cellnum++; |
} while (UBat > ((cellnum * CELL_VOLT_MAX) + 23)); |
|
|
usart1_request_blocking('Q', PSTR(REQUEST_CURRENT_SETTING)); |
|
//write_ascii_char(4 + 12 * 30, rxd_buffer[2]); |
|
paramset_serial setting; |
setting = *((paramset_serial*)pRxData); |
|
write_ascii_string_pgm(2, 6, PSTR("Setting: ")); |
write_ndigit_number_u(11, 6, setting.SettingsIndex, 1, 1); |
write_ascii_string_len(13, 6, setting.param.Name, 12); |
|
uint8_t cells = 0; |
write_ascii_string_pgm(2, 8, PSTR("Battery:")); // Guessing Number of Cells |
if (CELL_NUM == -1) { |
#define MAX_CELL_VOLTAGE 43 // max cell volatage for LiPO |
|
if (setting.param.UnterspannungsWarnung < 50) { |
// up to 6s LiPo, less than 2s is technical impossible |
for(cells = 2; cells < 7; cells++) { |
if(UBat < cells * MAX_CELL_VOLTAGE) break; |
} |
|
min_voltage = cells * setting.param.UnterspannungsWarnung; |
} else { |
min_voltage = setting.param.UnterspannungsWarnung; |
cells = min_voltage / CELL_VOLT_MIN; |
} |
//write_ndigit_number_u(10, 13, setting.param.UnterspannungsWarnung, 3, 1); |
} else { |
cellnum = CELL_NUM; |
cells = CELL_NUM; |
min_voltage = cells * CELL_VOLT_MIN; |
} |
min_voltage = cellnum * CELL_VOLT_MIN; |
max_voltage = cellnum * CELL_VOLT_MAX; |
write_ascii_string_pgm(2, 5, PSTR("Number of Cells:")); // Number of Cells |
write_ndigit_number_u(21, 5, cellnum, 1, 0); |
write_ascii_string_pgm(2, 6, PSTR("Warn Voltage :")); // Warn Voltage |
write_ndigit_number_s_10th(20, 6, min_voltage, 3, 0); |
write_ascii_string_pgm(2, 7, PSTR("Max Voltage :")); // Max Voltage |
write_ndigit_number_s_10th(20, 7, max_voltage, 3, 0); |
|
max_voltage = cells * CELL_VOLT_MAX; |
|
write_ndigit_number_u(11, 8, cells, 1, 0); |
write_ascii_string_pgm(13, 8, PSTR("Cells")); // Number of Cells |
write_ascii_string_pgm(2, 9, PSTR("Warn:")); // Warn Voltage |
write_ndigit_number_s_10th(8, 9, min_voltage, 3, 0); |
write_ascii_string_pgm(14, 9, PSTR("Max:")); // Max Voltage |
write_ndigit_number_s_10th(20, 9, max_voltage, 3, 0); |
|
get_eeprom(1); |
|
//write_ascii_string_pgm(23, 2, vm[COSD_FLAGS & COSD_FLAG_NTSC]); |
if (COSD_FLAGS_CONFIG & COSD_FLAG_NTSC) { |
write_ascii_string_pgm(23, 2, VM_NTSC); |
write_ascii_string_pgm(23, 1, VM_NTSC); |
} else { |
write_ascii_string_pgm(23, 2, VM_PAL); |
write_ascii_string_pgm(23, 1, VM_PAL); |
} |
|
// request version from board |
rxd_buffer_locked = 0; |
usart1_EnableTXD(); |
#if FCONLY |
//usart1_request_mk_data(0, 'v', 0); |
write_ascii_string_pgm(2, 11, PSTR("FC VERSION: ........")); |
usart1_puts_pgm(PSTR(REQUEST_FC_VERSION)); |
usart1_request_blocking('V', PSTR(REQUEST_FC_VERSION)); |
#else |
usart1_request_nc_uart(); |
//usart1_request_mk_data(1, 'v', 0); |
usart1_puts_pgm(PSTR(REQUEST_NC_VERSION)); |
write_ascii_string_pgm(2, 11, PSTR("NC VERSION: ........")); |
usart1_request_blocking('V', PSTR(REQUEST_NC_VERSION)); |
#endif |
usart1_DisableTXD(); |
// wait for response |
while (rxd_buffer_locked == 0) { |
asm("nop"); |
} |
Decode64(); |
str_VersionInfo VersionInfo; |
VersionInfo = *((str_VersionInfo*)pRxData); |
|
140,6 → 164,8 |
// end version request |
|
|
|
|
#if FCONLY |
COSD_DISPLAYMODE %= (sizeof (fcdisplaymodes) / sizeof (displaymode_t)); |
mode = fcdisplaymodes; |
156,7 → 182,7 |
//usart1_request_mk_data(1, 'o', 100); |
#endif |
|
_delay_ms(3000); |
_delay_ms(5000); |
clear(); |
// update flags to paint display again because of clear |
COSD_FLAGS_RUNTIME &= ~COSD_ICONS_WRITTEN; |