Hello,
I've been using printf to print out a menu to the terminal, so that I can interact with the program at run time. It has been working like a charm...until today.
I have this function that has been working great all along. Until I tried it today.
This is the function:
Code:
void PIM_Int_PrintPIDMenu(void) {
//Print out the menu.
printf("PID ADJUSTMENT MENU:\r\n");
printf("Steering PID:\r\n");
printf("P: %d / %d, I: %d / %d, D: %d / %d, Max I: %d\r\n",EEPROM_Read2Byte(EEPROM_ADDRESS_P_NUMERATOR),EEPROM_Read2Byte(EEPROM_ADDRESS_P_DENOMINATOR),EEPROM_Read2Byte(EEPROM_ADDRESS_I_NUMERATOR),EEPROM_Read2Byte(EEPROM_ADDRESS_I_DENOMINATOR),EEPROM_Read2Byte(EEPROM_ADDRESS_D_NUMERATOR),EEPROM_Read(EEPROM_ADDRESS_D_DENOMINATOR),EEPROM_Read(EEPROM_ADDRESS_I_MAX_PWM));
printf("For P term:\r\n");
printf("[a] Reset Num to 0 and Denom to 1\r\n");
printf("[b]/[c] (Inc/Dec)rement Num\r\n");
printf("[d]/[e] (Inc/Dec)rement Denom\r\n");
printf("[f] Double Num and Denom\r\n");
printf("For I term:\r\n");
printf("[g] Reset Num to 0 and Denom to 1\r\n");
printf("[h]/[i] (Inc/Dec)rement Num\r\n");
printf("[j]/[k] (Inc/Dec)rement Denom\r\n");
printf("[l] Double Num and Denom\r\n");
printf("For D term:\r\n");
printf("[m] Reset Num to 0 and Denom to 1\r\n");
printf("[n]/[o] (Inc/Dec)rement Num\r\n");
printf("[p]/[q] (Inc/Dec)rement Denom\r\n");
printf("[r] Double Num and Denom\r\n");
printf("[s] Refresh this menu (ALWAYS do before reading numbers!!!)\r\n");
printf("Misc:\r\n");
printf("[t]/[u] (Inc/Dec)rement I max PWM\r\n");
printf("[v] Reset I max PWM to 0\r\n");
printf("[w] Toggle anti-windup (currently %d)\r\n",EEPROM_Read(EEPROM_ADDRESS_I_ANTIWINDUP));
}
I should be getting each one's output in my terminal...but I get
Code:
PID ADJUSTMENT MENU:
Steering PID:
PF[[[[F[[[[F[[[[[M[[[
instead.
Has anyone seen this before? I'm seriously considering writing a homebrewn function to print each character independently...but I'd like to stay away from that route if at all possible.
Please help...
JBot