diff --git a/Source/ElektronischeLast.cpp b/Source/ElektronischeLast.cpp index 7b8c04e..def718d 100644 --- a/Source/ElektronischeLast.cpp +++ b/Source/ElektronischeLast.cpp @@ -22,10 +22,12 @@ using namespace ElektronischeLast; uint16_t set_solltrom (CLI_OutFunction pfvOutFunction, char *acCommands[], uint16_t u16ArgCount); +uint16_t ist_werte(CLI_OutFunction pfvOutFunction, char *acCommands[], uint16_t u16ArgCount); static CLI_Command_t commands[] = { - { "isoll", "Zielstrom für Last", set_solltrom } + { "isoll", "Zielstrom für Last", set_solltrom }, + { "ist", "Zeige Istwerte an [-r für wiederholende Anzeige]", ist_werte } }; static std::uint32_t i_soll = 0U; @@ -41,6 +43,9 @@ static PIDController pid = .T = 0.001f, }; static uint32_t dac_value; +static uint32_t strom; +static uint32_t spannung; +static uint32_t temperatur; int main (void) { @@ -70,6 +75,10 @@ int main (void) fan.run(adc.get_temperature()); + strom = adc.get_current(); + spannung = adc.get_voltage(); + temperatur = adc.get_temperature(); + serial_cyclic(); } } @@ -82,13 +91,33 @@ int main (void) * @param [in] u16ArgCount number of Arguments * @return 0 = don't recall, 1 = call again */ -uint16_t set_solltrom (CLI_OutFunction pfvOutFunction, char *acCommands[], uint16_t u16ArgCount) +uint16_t set_solltrom(CLI_OutFunction pfvOutFunction, char *acCommands[], uint16_t u16ArgCount) { char buf[40]; uint32_t in = strtoul(acCommands[0], NULL, 10); uint32_t cur = i_soll; - snprintf(buf, sizeof(buf), "Aktueller Soll-Strom: %" PRIu32 ", Neu: %" PRIu32, cur, in); + snprintf(buf, sizeof(buf), "\r\nAktueller Soll-Strom: %" PRIu32 ", Neu: %" PRIu32, cur, in); pfvOutFunction(buf); i_soll = in; return 0; } + +uint16_t ist_werte(CLI_OutFunction pfvOutFunction, char *acCommands[], uint16_t u16ArgCount) +{ + static uint32_t last_call = 0U; + uint16_t recall = 0U; + if(u16ArgCount == 1U) + { + recall = (acCommands[0][0] == '-' && acCommands[0][1] == 'r' && acCommands[0][2] == '\0'); + } + + if(((recall == 1U) && ((int32_t)(systick - last_call) > 999)) || recall == 0U) + { + char buffer[64]; + snprintf(buffer, sizeof(buffer), "\rI: %5" PRIu32 " U: %5" PRIu32 " T: %5" PRIu32, strom, spannung, temperatur); + pfvOutFunction(buffer); + last_call = systick; + } + + return recall; +}