From 962d181e89766debc3401742bc19e51fb0f915e4 Mon Sep 17 00:00:00 2001 From: Edward Emelianov Date: Sun, 24 Aug 2025 23:41:10 +0300 Subject: [PATCH] add debug flag, remove one bug (echo to one interface in another's interrupt); still didn't found why there's a trash of output in input buffer of interface 0 --- F1:F103/BISS_C_encoders/encoders.bin | Bin 15628 -> 14364 bytes F1:F103/BISS_C_encoders/encoders.creator.user | 2 +- F1:F103/BISS_C_encoders/flash.h | 1 + F1:F103/BISS_C_encoders/main.c | 17 ++++++++++-- F1:F103/BISS_C_encoders/proto.c | 21 ++++++++++++-- F1:F103/BISS_C_encoders/usb_dev.c | 26 +++++++++++------- F1:F103/BISS_C_encoders/version.inc | 4 +-- 7 files changed, 53 insertions(+), 18 deletions(-) diff --git a/F1:F103/BISS_C_encoders/encoders.bin b/F1:F103/BISS_C_encoders/encoders.bin index 4940f074419e43d1013105bce41e8cbdad6652bb..dcf8cfbae9b3a97fd9e9e632f67c903145456d9a 100755 GIT binary patch literal 14364 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 O{qL6;)Z_mA_rC!?lMKiJ diff --git a/F1:F103/BISS_C_encoders/encoders.creator.user b/F1:F103/BISS_C_encoders/encoders.creator.user index ea04e00..efd9972 100644 --- a/F1:F103/BISS_C_encoders/encoders.creator.user +++ b/F1:F103/BISS_C_encoders/encoders.creator.user @@ -1,6 +1,6 @@ - + EnvironmentId diff --git a/F1:F103/BISS_C_encoders/flash.h b/F1:F103/BISS_C_encoders/flash.h index 99a164f..2a8266a 100644 --- a/F1:F103/BISS_C_encoders/flash.h +++ b/F1:F103/BISS_C_encoders/flash.h @@ -38,6 +38,7 @@ typedef struct{ uint8_t CPHA : 1; uint8_t BR : 3; uint8_t monit: 1; // auto monitoring of encoder each `monittime` milliseconds + uint8_t debug: 1; // debug output of read data } flags_t; /* diff --git a/F1:F103/BISS_C_encoders/main.c b/F1:F103/BISS_C_encoders/main.c index c75c52d..2cbf7d5 100644 --- a/F1:F103/BISS_C_encoders/main.c +++ b/F1:F103/BISS_C_encoders/main.c @@ -54,7 +54,7 @@ static void proc_enc(uint8_t idx){ char ifacechr = idx ? 'Y' : 'X'; if(CDCready[iface]){ int l = USB_receivestr(iface, inbuff, RBINSZ); - if(CDCready[I_CMD]){ + if(CDCready[I_CMD] && the_conf.flags.debug){ if(l){ CMDWR("Enc"); USB_putbyte(I_CMD, ifacechr); CMDWR(": "); @@ -96,7 +96,7 @@ static void proc_enc(uint8_t idx){ if(str) ++gotgood[idx]; else ++gotwrong[idx]; } - }else if(!the_conf.flags.monit){ + }else if(!the_conf.flags.monit && the_conf.flags.debug){ printResult(&result); CMDWR("ENC"); USB_putbyte(I_CMD, ifacechr); USB_putbyte(I_CMD, '='); @@ -118,6 +118,7 @@ static void proc_enc(uint8_t idx){ int main(){ uint32_t lastT = 0, usartT = 0; + uint8_t oldCDCready[bTotNumEndpoints] = {0}; StartHSE(); flashstorage_init(); hw_setup(); @@ -139,6 +140,18 @@ int main(){ int l = USB_receivestr(I_CMD, inbuff, RBINSZ); if(l < 0) CMDWRn("ERROR: CMD USB buffer overflow or string was too long"); else if(l) parse_cmd(inbuff); + // check if interface connected/disconnected + // (we CAN'T do much debug output in interrupt functions like linecoding_handler etc, so do it here) + for(int i = 0; i < bTotNumEndpoints; ++i){ + if(oldCDCready[i] != CDCready[i]){ + CMDWR("Interface "); + CMDWR(u2str(i)); + USB_putbyte(I_CMD, ' '); + if(CDCready[i] == 0) CMDWR("dis"); + CMDWRn("connected"); + oldCDCready[i] = CDCready[i]; + } + } } proc_enc(0); proc_enc(1); diff --git a/F1:F103/BISS_C_encoders/proto.c b/F1:F103/BISS_C_encoders/proto.c index 2a7b315..4fea9ce 100644 --- a/F1:F103/BISS_C_encoders/proto.c +++ b/F1:F103/BISS_C_encoders/proto.c @@ -80,6 +80,7 @@ typedef enum{ C_amperiod, C_usart, C_ssii, + C_debug, C_AMOUNT } cmd_e; @@ -268,8 +269,6 @@ static errcode_e setuintpar(cmd_e idx, char *par){ return ERR_BADCMD; } } - CMDWR(commands[idx].cmd); - USB_putbyte(I_CMD, '='); switch(idx){ case C_br: val = the_conf.flags.BR; @@ -295,6 +294,8 @@ static errcode_e setuintpar(cmd_e idx, char *par){ default: return ERR_BADCMD; } + CMDWR(commands[idx].cmd); + USB_putbyte(I_CMD, '='); CMDWR(u2str(val)); CMDn(); return ERR_SILENCE; @@ -323,6 +324,9 @@ static errcode_e setboolpar(cmd_e idx, char *par){ case C_autom: the_conf.flags.monit = val; break; + case C_debug: + the_conf.flags.debug = val; + break; default: return ERR_BADCMD; } @@ -343,6 +347,9 @@ static errcode_e setboolpar(cmd_e idx, char *par){ case C_autom: val = the_conf.flags.monit; break; + case C_debug: + val = the_conf.flags.debug; + break; default: return ERR_BADCMD; } @@ -364,6 +371,7 @@ static errcode_e dumpconf(cmd_e _U_ idx, char _U_ *par){ setuintpar(C_br, NULL); setboolpar(C_cpha, NULL); setboolpar(C_cpol, NULL); + setboolpar(C_debug, NULL); setuintpar(C_encbits, NULL); setuintpar(C_encbufsz, NULL); setuintpar(C_maxzeros, NULL); @@ -410,6 +418,7 @@ static const funcdescr_t commands[C_AMOUNT] = { [C_amperiod] = {"amperiod", setuintpar}, [C_usart] = {"usart", usart}, [C_ssii] = {"ssii", setuintpar}, + [C_debug] = {"debug", setboolpar}, }; typedef struct{ @@ -434,6 +443,7 @@ static const help_t helpmessages[] = { {C_br, "change SPI BR register (1 - 18MHz ... 7 - 281kHz)"}, {C_cpha, "change CPHA value (0/1)"}, {C_cpol, "change CPOL value (0/1)"}, + {C_debug, "turn on debugging output of read encoders' values"}, {C_dumpconf, "dump current configuration"}, {C_encbits, "set encoder data bits amount (26/32)"}, {C_encbufsz, "change encoder auxiliary buffer size (8..32 bytes)"}, @@ -486,6 +496,7 @@ static errcode_e help(_U_ cmd_e idx, _U_ char* par){ void parse_cmd(char *cmd){ errcode_e ecode = ERR_BADCMD; // command and its parameter +CMDWRn(cmd); char *cmdstart = omit_spaces(cmd), *parstart = NULL; if(!cmdstart) goto retn; char *ptr = cmdstart; @@ -506,5 +517,9 @@ void parse_cmd(char *cmd){ if(idx >= C_AMOUNT) goto retn; // not found ecode = commands[idx].handler(idx, parstart); retn: - if(ecode != ERR_SILENCE) CMDWRn(errors[ecode]); + if(ecode == ERR_BADCMD){ + CMDWR(cmd); + USB_putbyte(I_CMD, '='); + CMDWRn(errors[ERR_BADCMD]); + } else if(ecode != ERR_SILENCE) CMDWRn(errors[ecode]); } diff --git a/F1:F103/BISS_C_encoders/usb_dev.c b/F1:F103/BISS_C_encoders/usb_dev.c index aa668a3..fd596e2 100644 --- a/F1:F103/BISS_C_encoders/usb_dev.c +++ b/F1:F103/BISS_C_encoders/usb_dev.c @@ -38,6 +38,8 @@ #define CONTROL_DTR 0x01 #define CONTROL_RTS 0x02 +// It's good to use debug here ONLY to debug into USART! +// never try to debug USB into USB!!! #undef DBG #define DBG(x) #undef DBGs @@ -141,8 +143,17 @@ void WEAK linecoding_handler(uint8_t ifno, usb_LineCoding *lc){ lineCoding[ifno] = *lc; DBG("linecoding_handler"); DBGs(uhex2str(ifno)); - CMDWR("Interface "); CMDWR(u2str(ifno)); - CMDWR(" got linecoding with speed "); CMDWRn(u2str(lc->dwDTERate)); +} + +static void clearbufs(uint8_t ifno){ + uint32_t T0 = Tms; + while(Tms - T0 < 10){ // wait no more than 10ms + if(1 == RB_clearbuf((ringbuffer*)&rbin[ifno])) break; + } + T0 = Tms; + while(Tms - T0 < 10){ + if(1 == RB_clearbuf((ringbuffer*)&rbout[ifno])) break; + } } // SET_CONTROL_LINE_STATE @@ -152,19 +163,14 @@ void WEAK clstate_handler(uint8_t ifno, uint16_t val){ DBGs(uhex2str(val)); CDCready[ifno] = val; // CONTROL_DTR | CONTROL_RTS -> interface connected; 0 -> disconnected lastdsz[ifno] = -1; - if(val == 0) CMDWR("dis"); - CMDWR("connected interface "); - CMDWRn(u2str(ifno)); + if(val) clearbufs(ifno); } -// SEND_BREAK +// SEND_BREAK - disconnect interface and clear its buffers void WEAK break_handler(uint8_t ifno){ CDCready[ifno] = 0; - lastdsz[ifno] = -1; DBG("break_handler()"); DBGs(uhex2str(ifno)); - CMDWR("Disconnected interface "); - CMDWRn(u2str(ifno)); } @@ -297,7 +303,7 @@ int USB_receive(uint8_t ifno, uint8_t *buf, int len){ if(bufovrfl[ifno]){ DBG("Buffer overflow"); DBGs(uhex2str(ifno)); - while(1 != RB_clearbuf((ringbuffer*)&rbin[ifno])); + while(1 != RB_clearbuf((ringbuffer*)&rbin[ifno])); // run watchdog in case of problems bufovrfl[ifno] = 0; return -1; } diff --git a/F1:F103/BISS_C_encoders/version.inc b/F1:F103/BISS_C_encoders/version.inc index 2f05971..d66eb33 100644 --- a/F1:F103/BISS_C_encoders/version.inc +++ b/F1:F103/BISS_C_encoders/version.inc @@ -1,2 +1,2 @@ -#define BUILD_NUMBER "111" -#define BUILD_DATE "2025-07-15" +#define BUILD_NUMBER "126" +#define BUILD_DATE "2025-08-24"