diff --git a/main.c b/main.c index bbcd30a..6290199 100644 --- a/main.c +++ b/main.c @@ -69,7 +69,14 @@ static volatile vna_shellcmd_t shell_function = 0; #define ENABLE_COLOR_COMMAND // Enable I2C command for send data to AIC3204, used for debug //#define ENABLE_I2C_COMMAND +// Enable LCD command for send data to LCD screen, used for debug //#define ENABLE_LCD_COMMAND +// Enable output debug data on screen on hard fault +//#define ENABLE_HARD_FAULT_HANDLER_DEBUG +// Enable stat command, used for debug +//#define ENABLE_STAT_COMMAND +// Enable gain command, used for debug +//#define ENABLE_GAIN_COMMAND static void apply_CH0_error_term_at(int i); static void apply_CH1_error_term_at(int i); @@ -77,23 +84,20 @@ static void apply_edelay(void); static uint16_t get_sweep_mode(void); static void cal_interpolate(int s); -static void update_frequencies(void); +static void update_frequencies(bool interpolate); static void set_frequencies(uint32_t start, uint32_t stop, uint16_t points); static bool sweep(bool break_on_operation, uint16_t sweep_mode); static void transform_domain(void); static int32_t my_atoi(const char *p); static uint32_t my_atoui(const char *p); -// Obsolete, always use interpolate -#define cal_auto_interpolate TRUE - static uint8_t drive_strength = SI5351_CLK_DRIVE_STRENGTH_8MA; int8_t sweep_mode = SWEEP_ENABLE; volatile uint8_t redraw_request = 0; // contains REDRAW_XXX flags // sweep operation variables volatile uint16_t wait_count = 0; - +// current sweep point (used for continue sweep if user break) static uint16_t p_sweep = 0; // ChibiOS i2s buffer must be 2x size (for process one while next buffer filled by DMA) static int16_t rx_buffer[AUDIO_BUFFER_LEN * 2]; @@ -302,10 +306,7 @@ VNA_SHELL_FUNCTION(cmd_resume) (void)argv; // restore frequencies array and cal - update_frequencies(); - if (cal_auto_interpolate && (cal_status & CALSTAT_APPLY)) - cal_interpolate(lastsaveid); - + update_frequencies(cal_status & CALSTAT_APPLY); resume_sweep(); } @@ -332,7 +333,11 @@ VNA_SHELL_FUNCTION(cmd_reset) ; } +#ifdef ENABLE_GAIN_COMMAND +static uint8_t gain_table[][2] = { +#else static const uint8_t gain_table[][2] = { +#endif { 0, 0 }, // 1st: 0 ~ 300MHz { 50, 50 }, // 2nd: 300 ~ 900MHz { 75, 75 }, // 3th: 900 ~ 1500MHz @@ -765,7 +770,7 @@ void load_default_properties(void) int load_properties(uint32_t id){ int r = caldata_recall(id); - update_frequencies(); + update_frequencies(false); return r; } @@ -915,10 +920,8 @@ void set_sweep_points(uint16_t points){ return; sweep_points = points; - update_frequencies(); + update_frequencies(cal_status & CALSTAT_APPLY); - if (cal_auto_interpolate && (cal_status & CALSTAT_APPLY)) - cal_interpolate(lastsaveid); } VNA_SHELL_FUNCTION(cmd_scan) @@ -952,7 +955,7 @@ VNA_SHELL_FUNCTION(cmd_scan) sweep_mode = (mask>>1)&3; } set_frequencies(start, stop, points); - if (cal_auto_interpolate && (cal_status & CALSTAT_APPLY)) + if (cal_status & CALSTAT_APPLY) cal_interpolate(lastsaveid); pause_sweep(); sweep(false, sweep_mode); @@ -1018,7 +1021,7 @@ set_frequencies(uint32_t start, uint32_t stop, uint16_t points) } static void -update_frequencies(void) +update_frequencies(bool interpolate) { uint32_t start, stop; start = get_sweep_frequency(ST_START); @@ -1026,11 +1029,11 @@ update_frequencies(void) set_frequencies(start, stop, sweep_points); // operation_requested|= OP_FREQCHANGE; - update_marker_index(); - // set grid layout update_grid(); + if (interpolate) + cal_interpolate(lastsaveid); RESET_SWEEP; } @@ -1100,9 +1103,7 @@ set_sweep_frequency(int type, uint32_t freq) } break; } - update_frequencies(); - if (cal_auto_interpolate && cal_applied) - cal_interpolate(lastsaveid); + update_frequencies(cal_applied); } uint32_t @@ -1578,8 +1579,8 @@ VNA_SHELL_FUNCTION(cmd_cal) return; } redraw_request|=REDRAW_CAL_STATUS; - // 0 1 2 3 4 5 6 7 8 9 10 - static const char cmd_cal_list[] = "load|open|short|thru|isoln|done|on|off|reset|data|in"; + // 0 1 2 3 4 5 6 7 8 + static const char cmd_cal_list[] = "load|open|short|thru|isoln|done|on|off|reset"; switch (get_str_index(argv[0], cmd_cal_list)) { case 0: cal_collect(CAL_LOAD); @@ -1608,16 +1609,6 @@ VNA_SHELL_FUNCTION(cmd_cal) case 8: cal_status = 0; return; - case 9: - shell_printf("%f %f\r\n", cal_data[CAL_LOAD][0][0], cal_data[CAL_LOAD][0][1]); - shell_printf("%f %f\r\n", cal_data[CAL_OPEN][0][0], cal_data[CAL_OPEN][0][1]); - shell_printf("%f %f\r\n", cal_data[CAL_SHORT][0][0], cal_data[CAL_SHORT][0][1]); - shell_printf("%f %f\r\n", cal_data[CAL_THRU][0][0], cal_data[CAL_THRU][0][1]); - shell_printf("%f %f\r\n", cal_data[CAL_ISOLN][0][0], cal_data[CAL_ISOLN][0][1]); - return; - case 10: - cal_interpolate((argc > 1) ? my_atoi(argv[1]) : 0); - return; default: break; } @@ -1908,9 +1899,7 @@ VNA_SHELL_FUNCTION(cmd_touchtest) { (void)argc; (void)argv; - do { - touch_draw_test(); - } while (argc); + touch_draw_test(); } VNA_SHELL_FUNCTION(cmd_frequencies) @@ -2046,23 +2035,24 @@ VNA_SHELL_FUNCTION(cmd_test) #endif } +#ifdef ENABLE_GAIN_COMMAND VNA_SHELL_FUNCTION(cmd_gain) { int rvalue = 0; int lvalue = 0; - int idx = 0; if (argc < 1 && argc > 3) { shell_printf("usage: gain idx {lgain(0-95)} [rgain(0-95)]\r\n"); return; } - idx = my_atoui(argv[0]); + int idx = my_atoui(argv[0]); lvalue = rvalue = my_atoui(argv[1]); if (argc == 3) rvalue = my_atoui(argv[2]); tlv320aic3204_set_gain(lvalue, rvalue); -// gain_table[idx][0] = lvalue; -// gain_table[idx][1] = rvalue; + gain_table[idx][0] = lvalue; + gain_table[idx][1] = rvalue; } +#endif VNA_SHELL_FUNCTION(cmd_port) { @@ -2075,6 +2065,7 @@ VNA_SHELL_FUNCTION(cmd_port) tlv320aic3204_select(port); } +#ifdef ENABLE_STAT_COMMAND VNA_SHELL_FUNCTION(cmd_stat) { int16_t *p = &rx_buffer[0]; @@ -2129,6 +2120,7 @@ VNA_SHELL_FUNCTION(cmd_stat) // extern int awd_count; // shell_printf("awd: %d\r\n", awd_count); } +#endif #ifndef VERSION #define VERSION "unknown" @@ -2309,8 +2301,12 @@ static const VNAShellCommand commands[] = #endif {"frequencies" , cmd_frequencies , 0}, {"port" , cmd_port , 0}, +#ifdef ENABLE_STAT_COMMAND {"stat" , cmd_stat , CMD_WAIT_MUTEX}, +#endif +#ifdef ENABLE_GAIN_COMMAND {"gain" , cmd_gain , CMD_WAIT_MUTEX}, +#endif {"power" , cmd_power , 0}, {"sample" , cmd_sample , 0}, // {"gamma" , cmd_gamma , 0}, @@ -2625,7 +2621,7 @@ void HardFault_Handler(void) void hard_fault_handler_c(uint32_t *sp) { -#if 0 +#ifdef ENABLE_HARD_FAULT_HANDLER_DEBUG uint32_t r0 = sp[0]; uint32_t r1 = sp[1]; uint32_t r2 = sp[2];