From 01216baaf93b8798c1d185d9bf986978eaef4bc0 Mon Sep 17 00:00:00 2001 From: cnlohr Date: Tue, 8 Oct 2024 21:25:10 -0700 Subject: [PATCH] Update oscope code + autoreconnect in webpageo --- ch32v/ch32v003fun | 2 +- ch32v/ch32v203-goertzel/adcgoertzel.c | 307 ++++-------------- ch32v/ch32v203-iirgoertzel/ttest/demo_run.ods | Bin 81893 -> 0 bytes ch32v/lib/webhidcontrol.js | 5 +- 4 files changed, 71 insertions(+), 243 deletions(-) delete mode 100644 ch32v/ch32v203-iirgoertzel/ttest/demo_run.ods diff --git a/ch32v/ch32v003fun b/ch32v/ch32v003fun index b987542..7b3d90e 160000 --- a/ch32v/ch32v003fun +++ b/ch32v/ch32v003fun @@ -1 +1 @@ -Subproject commit b987542621b715eacca818dcf3ef6856777d7d75 +Subproject commit 7b3d90e829372e082ba30fd7fedacb797a616f3b diff --git a/ch32v/ch32v203-goertzel/adcgoertzel.c b/ch32v/ch32v203-goertzel/adcgoertzel.c index 13f1152..54f3bac 100644 --- a/ch32v/ch32v203-goertzel/adcgoertzel.c +++ b/ch32v/ch32v203-goertzel/adcgoertzel.c @@ -79,6 +79,7 @@ SOFTWARE. #define SSD1306_DC_PIN PA6 #define SSD1306_MOSI_PIN PA7 #define SSD1306_SCK_PIN PA5 +#define SSD1306_BAUD_RATE_PRESCALER SPI_BaudRatePrescaler_4 #include "ssd1306_spi.h" #include "ssd1306.h" #endif @@ -112,14 +113,6 @@ int32_t g_goertzel_phasor_i = 0; int32_t g_goertzel_advance_r = 32768; int32_t g_goertzel_advance_i = 0; -#if 0 -int g_pwm_period = (30-1); -int g_goertzel_buffer = (752); -int g_exactcompute = (0); -int32_t g_goertzel_omega_per_sample = 2485087396; // 0.368351 of whole per step / 27.031915MHz -int32_t g_goertzel_coefficient = -1453756170; -int32_t g_goertzel_coefficient_s = 1580594514; -#endif #if 1 int g_pwm_period = (30-1); @@ -130,52 +123,6 @@ int32_t g_goertzel_coefficient = 873460290; int32_t g_goertzel_coefficient_s = -1961823932; #endif -#if 0 -int g_pwm_period = (31-1); -int g_goertzel_buffer = (412); -int g_exactcompute = (0); -const int32_t g_goertzel_omega_per_sample = 1670254667; // 0.247573 of whole per step / 1.150016MHz -const int32_t g_goertzel_coefficient = 32748822; -const int32_t g_goertzel_coefficient_s = 2147233926; -#endif - -#if 0 -int g_pwm_period = (30-1); -int g_goertzel_buffer = (576); -int g_exactcompute = (0); -int32_t g_goertzel_omega_per_sample = 1264972285; // 0.187500 of whole per step / 90.300000MHz -int32_t g_goertzel_coefficient = 821806413; -int32_t g_goertzel_coefficient_s = 1984016189; -#endif - -#if 0 -int g_pwm_period = (30-1); -int g_goertzel_buffer = (320); -int g_exactcompute = (0); -const int32_t g_goertzel_omega_per_sample = 990894956; // 0.146875 of whole per step / 101.505000MHz -const int32_t g_goertzel_coefficient = 1296126516; -const int32_t g_goertzel_coefficient_s = 1712233066; -#endif - -#if 0 -int g_pwm_period = (30-1); -int g_goertzel_buffer = (384); -int g_exactcompute = (0); -const int32_t g_goertzel_omega_per_sample = 4251712402; // 0.630208 of whole per step / 27.025000MHz -const int32_t g_goertzel_coefficient = -1468003291; -const int32_t g_goertzel_coefficient_s = -1567371161; -#endif - -#if 0 -int g_pwm_period = (30-1); -int g_goertzel_buffer = (336); -int g_exactcompute = (0); -const int32_t g_goertzel_omega_per_sample = 1827182189; // 0.270833 of whole per step / 89.900000MHz -const int32_t g_goertzel_coefficient = -280302863; -const int32_t g_goertzel_coefficient_s = 2129111628; -#endif - - int intensity_average = 1; #define LOG_GOERTZEL_LIST 512 @@ -226,7 +173,8 @@ void SetupADC() // ADC_SCAN: Allow scanning. ADC1->CTLR1 = //ADC_SCAN; - ADC_SCAN | ADC_BUFEN ; + ADC_SCAN ; + //| ADC_BUFEN ; //ADC_Pga_16 | ADC_SCAN | ADC_BUFEN ; //ADC_Pga_64 | ADC_SCAN; @@ -298,6 +246,41 @@ static void SetupTimer1() TIM1->CTLR1 = TIM_CEN; } +#ifdef ENABLE_OLED_SCOPE + +uint8_t ssd1306_send_turbo(uint8_t *data, uint8_t sz) +{ + funDigitalWrite( SSD1306_DC_PIN, FUN_LOW ); + funDigitalWrite( SSD1306_CS_PIN, FUN_LOW ); + + // send data + while(sz--) + { + // wait for TXE + while(!(SPI1->STATR & SPI_STATR_TXE)); + + // Send byte + SPI1->DATAR = *data++; + } + + // wait for not busy before exiting + while(SPI1->STATR & SPI_STATR_BSY); + + funDigitalWrite( SSD1306_CS_PIN, FUN_HIGH ); + + // we're happy + return 0; +} +static void PlotPoint( int x, int y ) +{ + // Set X, Pause, Set Y, Start + uint8_t cmdxy[16] = { 0x00, 0xd3, 0x30, 0x00, 0xd5, 0xff, 0x00, 0x00, 0xdc, 0x30, 0x00, 0xd5, 0xf0 }; + cmdxy[2] = x; + cmdxy[9] = y; + //ssd1306_i2c_send(SSD1306_I2C_ADDR, cmdxy+1, sizeof(cmdxy)-1); + ssd1306_send_turbo(cmdxy, sizeof(cmdxy)); +} +#endif void InnerLoop() __attribute__((noreturn)); @@ -485,6 +468,27 @@ void DMA1_Channel1_IRQHandler( void ) adc_offset -= accumulate_over_window / g_goertzel_buffer; accumulate_over_window = 0; +#ifdef ENABLE_OLED_SCOPE + + // glread = ( glread + 1 ) & ( LOG_GOERTZEL_LIST -1 ); + + // int16_t rr = combiq & 0xffff; + // int16_t ri = combiq >> 16; + + int rrplot = rr * 2048 / (intensity_average); + int riplot = ri * 2048 / (intensity_average); + + rrplot += 64; + riplot += 64; + + if( rrplot < 1 ) rrplot = 1; + if( riplot < 1 ) riplot = 1; + if( rrplot > 126 ) rrplot = 126; + if( riplot > 126 ) riplot = 126; + + PlotPoint( rrplot, riplot ); +#endif + #ifdef PROFILING_PIN funDigitalWrite( PROFILING_PIN, 1 ); #endif @@ -517,7 +521,6 @@ static inline uint32_t gets2() return ret; } - void InnerLoop() { while(1){ @@ -617,143 +620,6 @@ void setup_i2c_dma(void) printf( "INTO\n" ); } -uint8_t ssd1306_i2c_send_turbo(uint8_t *data, uint8_t sz) -{ - - int32_t timeout; - volatile uint32_t dump = 0; - static int notfirst = 0; - - if( notfirst == 1 ) - { - timeout = 100; - while((!ssd1306_i2c_chk_evt(SSD1306_I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED)) && (timeout--)); - - while(DMA1_Channel6->CNTR); - - // This one is reliable. - timeout = TIMEOUT_MAX*10; - while((!ssd1306_i2c_chk_evt(SSD1306_I2C_EVENT_MASTER_BYTE_TRANSMITTED)) && (timeout--)); - - I2C1->CTLR1 |= I2C_CTLR1_STOP; - } - notfirst = 1; - - -/* - // wait for previous packet to finish - while(DMA1_Channel6->CNTR) - { - printf( "*%d / %08x %08x %08x\n", DMA1_Channel6->CNTR, DMA1_Channel6->CFGR, I2C1->CTLR1, I2C1->CTLR2 ); - } -*/ - // init buffer for sending - memcpy((uint8_t *)i2c_send_buffer, data, sz); - - // wait for not busy - timeout = TIMEOUT_MAX*10; - while((I2C1->STAR2 & I2C_STAR2_BUSY) && (timeout--)); -// if(timeout==-1) -// return ssd1306_i2c_error(0); - - DMA1_Channel6->CNTR = sz-3; - I2C1->CTLR1 |= I2C_CTLR1_START; - - // wait for master mode select (This one is reliable) - timeout = TIMEOUT_MAX*10; - while((!ssd1306_i2c_chk_evt(SSD1306_I2C_EVENT_MASTER_MODE_SELECT)) && (timeout--)); - - //printf( "%08x\n", I2C1->STAR1 | (I2C1->STAR2<<16) ); - - //if(timeout==-1) - // return ssd1306_i2c_error(1); - - - I2C1->DATAR = data[0]; - - // wait for transmit condition (this seems to not be reliable) -// printf( "W2: %d\n", timeout ); - //if(timeout==-1) - // return ssd1306_i2c_error(2); - - -// { -// printf( "K%d / %08x %08x %08x\n", DMA1_Channel6->CNTR, DMA1_Channel6->CFGR, I2C1->CTLR1, I2C1->CTLR2 ); -// } - - - // wait for transmit condition -// timeout = TIMEOUT_MAX; -// while((!ssd1306_i2c_chk_evt(SSD1306_I2C_EVENT_MASTER_BYTE_TRANSMITTED)) && (timeout--)); -// printf( "TO: %d\n", timeout ); -// if(timeout==-1) - // return ssd1306_i2c_error(2); - - - //Delay_Us(200); -#if 0 - int32_t timeout; - -#ifdef IRQ_DIAG - GPIOC->BSHR = (1<<(3)); -#endif - - // error out if buffer under/overflow - if((sz > sizeof(ssd1306_i2c_send_buffer)) || !sz) - return 2; - - // wait for previous packet to finish - while(ssd1306_i2c_irq_state); - -#ifdef IRQ_DIAG - GPIOC->BSHR = (1<<(16+3)); - GPIOC->BSHR = (1<<(4)); -#endif - - // init buffer for sending - ssd1306_i2c_send_sz = sz; - ssd1306_i2c_send_ptr = ssd1306_i2c_send_buffer; - memcpy((uint8_t *)ssd1306_i2c_send_buffer, data, sz); - - // wait for not busy - timeout = TIMEOUT_MAX; - while((I2C1->STAR2 & I2C_STAR2_BUSY) && (timeout--)); - if(timeout==-1) - return ssd1306_i2c_error(0); - - // Set START condition - I2C1->CTLR1 |= I2C_CTLR1_START; - I2C1->DATAR = data[0]; - -/* - // wait for master mode select - timeout = TIMEOUT_MAX; - while((!ssd1306_i2c_chk_evt(SSD1306_I2C_EVENT_MASTER_MODE_SELECT)) && (timeout--)); - if(timeout==-1) - return ssd1306_i2c_error(1); - - // send 7-bit address + write flag - I2C1->DATAR = data[0]; - - // wait for transmit condition - timeout = TIMEOUT_MAX; - while((!ssd1306_i2c_chk_evt(SSD1306_I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED)) && (timeout--)); - if(timeout==-1) - return ssd1306_i2c_error(2); -*/ - // Enable TXE interrupt - I2C1->CTLR2 |= I2C_CTLR2_ITBUFEN | I2C_CTLR2_ITEVTEN; - ssd1306_i2c_irq_state = 1; - -#ifdef IRQ_DIAG - GPIOC->BSHR = (1<<(16+4)); -#endif - printf( "...\n" ); - // exit - return 0; -#endif -} - int main() { @@ -819,74 +685,33 @@ int main() else printf( "Initialized OLED\n" ); - ssd1306_setbuf(1); - ssd1306_refresh(); - - while(1) - { - printf( "OK\n" ); - } -/* ssd1306_setbuf(0); // Setup a diagonal to allow for vector mode. for( i = 0; i < 128; i++ ) { ssd1306_drawPixel( i, i, 1 ); - ssd1306_drawPixel( i+1, i, 1 ); + //ssd1306_drawPixel( i+1, i, 1 ); } ssd1306_refresh(); - int rframe = 0; - uint8_t force_two_row_mode[] = { - 0x00, 0xa8, 0, // Set MUX ratio (Actually # of lines to scan) (But it's this + 1) You can make this 1 for wider. + 0xa8, 0, // Set MUX ratio (Actually # of lines to scan) (But it's this + 1) You can make this 1 for wider. }; - ssd1306_i2c_send(SSD1306_I2C_ADDR, force_two_row_mode, sizeof(force_two_row_mode)); - // Last thing before normal operation - setup_i2c_dma(); + ssd1306_pkt_send(force_two_row_mode, sizeof( force_two_row_mode ) , 1); +#if 0 // Test streaking + int rframe = 0; while(1) { - // Set X, Pause, Set Y, Start - uint8_t cmdxy[17] = { SSD1306_I2C_ADDR<<1, 0x00, 0xd3, 0x30, 0x00, 0xd5, 0xff, 0x00, 0x00, 0xdc, 0x30, 0x00, 0xd5, 0xf0 }; - cmdxy[3] = rframe; - cmdxy[10] = rframe>>8; - //ssd1306_i2c_send(SSD1306_I2C_ADDR, cmdxy+1, sizeof(cmdxy)-1); - ssd1306_i2c_send_turbo(cmdxy, sizeof(cmdxy)); + PlotPoint( rframe & 0xff, rframe>>8 ); rframe++; + //Delay_Ms(1); } -*/ #endif -#if 0 - int i = 0; - int k = 0; - int frame = 0; - while( 1) - { -// ssd1306_drawLine( (frame)%128, (0)%128, (0)%128, (127-frame)%128, 1 ); - ssd1306_drawstr( frame%128, frame%128, "hello", 1 ); - - ssd1306_refresh(); - ssd1306_setbuf(0); - frame++; - } - - while(1); -#endif - -#if 0 - // turn on the op-amp - EXTEN->EXTEN_CTR |= EXTEN_OPA_EN; - - // select op-amp pos pin: 0 = PA2, 1 = PD7 - EXTEN->EXTEN_CTR |= EXTEN_OPA_PSEL; - - // select op-amp neg pin: 0 = PA1, 1 = PD0 - EXTEN->EXTEN_CTR |= EXTEN_OPA_NSEL; #endif #ifdef PROFILING_PIN diff --git a/ch32v/ch32v203-iirgoertzel/ttest/demo_run.ods b/ch32v/ch32v203-iirgoertzel/ttest/demo_run.ods deleted file mode 100644 index b1b13b30cf01c9ccbd516e28b7f8244658e63c0d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 81893 zcmbSxby!sG6E=tvl7fh|AR!*Ac*d1juOd+wR@aAYMB9zTbJLxzJhd%vXOXU-AC00#&6&j)r3&cejP zz|Q%zfzId8<|cYNb|zMqj1HFi3|2a}CbkS#pA9Vat@P|I3@q&!Y(Lu==;+%T8yMKh z{<|hJGV;G`!j^gXA%y)UqibrQXD4s)*<44@;2%|6#{b=V^?oM>H6q3+)?Wre@EdCD zjL|p3_h_#cs~52~v7exzk$L~%6!7EhQ>2swpR%pV_LQxWPPyiaA3H>h4FLCR{*jIy+0apZ|7wpn5@RdAfy8 zP5(7X)skFuTe_C~SW*+M{kE0tY>*bxF?U_b+5l=eeSY(dujrFNlbUR{lk2FN(qD9Q ziBO_9wgEYMn|-58Mi{TbyJ4v>e|EiSvR#ud$${FQ=cvUoBo8qe$#uBC=(W(Q&cCsW z(;W3UpgbD6-E5@2;K1iYl90o>CCKtf_Z+nUUUyo;Uu6l}D#LJDqPL&1>JSFgRNw=2 z;2^2WUmw*iJSJ^G|6sy;<*%%xD(@^%G_^KR4*4)Od$GC$jK~I4T&Nb5c8QVf;xD!u zHKhbgn-14ZpA@Vfiz%AybhB(s@3M9=#FGTlmS`qWxi@I?l}dyQ z#g3PLif)=MwOHAR%pabLHG%2do0$Ao34J5|`&)p1@!uB#NXOg!7_X}7MzXDH%q(bm zqN-?g8Pc$IfhG{i~eWVJld_nCR@|R zTj5V>=^(`3R1=&SWIV!fIdIQLp2P}q!H>q~>65Vk zppGm@qfrWuxXqK|F9C`mtUDON9Vd36e@B#*Cd=8pzU&=VgAY@x)!fkuUVX*#Mbgn4XB5 z{8kC4oDYpDOk4^9d0yzX<9|@t=RzkhijY5P z6}w{$`2l-ct$SfiVu;fGBohsEGTsM*{3b&mSO9RApl4E--P`zIOX zW|8vt=)=uwq@$Z=zg@n?k-tTzQECo2#vDVcx(qjdi1M6&Ojd+iRStH8&Ix}>X*c|R zol*3Rn^lX!Ga7wX!Z}5A`Tg{6&r~+&i=8k`Fs0Y5vQuziacJ&xaj;Pw{QPR%l|ac z#U_JB3(?2Ow+Ot|G-K^Jy0)b2lA$c&gxY-BnjtZTsFAnf_@*cAzt?K^irIoie_5=# zjtPc}Ay~j@)&x>uut@$==}4ZlNiXK9qaa%}{~H$jo&+Nez`~@6+Y?ysn^PVVrVRrU z0gV!0&@oq%kD5E{Z^sBD9H`_An-Df27^tQv3BS!VicDpFn2>W9WWT28FY$duX3kcm7r2~9$22`*{vCV(`3~+%)Ve|aRMnHJOWaBt-1~AlBU>qD7Pmth<{f`A zy4hen^7OtcZ{caeF(QTLKTbiW{s}X}Jz%vxvs1!i3Kb%6js4Z!Ie%|oP^FJ8P9if+ zWXi|lZ@6&D-)euSxco3YHxIK?Nc2#xdE^E-@`dB%H_+;IWvk5JIKm~`*3cpk^muC0 z%)*^Nro{08%G*L=Xmb$d&^-B0aLHe0WCtcJ-$fD(Emxmc$axNj22J> z0z>#E#-54IH&f=1bqqdKj2pV-t$QTJ<n0PgRw zb(jeQMI^@XB0OX?Ws90W{pO5d)|d41MWv)~%d6P($JmGZ+iL$KGjIt3p=-9XyK6yb zC@XBaXFD4C_b9MXBJUF`QDYZ^mTtm=nyV>ob6=gHSaMvLDD$pGT}ieGFvzfe&yGaF zF`+Pt0t0h7ZT=XciLLI;f9!l~>(}`lR=HkRrQI+}5lD(%y{8nzY>kkHO#zDL4CeeX zypdJE`_;g>C=jx;&5p922^IX&%`Ibvt$SGUhQ*wbS8cLwd+ZdTnVz_sXffJ0C}2SU ztwsMzu1K{L!VhqlTZQS$fEBn0UUALd7BC%4sUim{KKYA2v|jBvWGgo|OGDSj{zAk4 zn_-Vf1xkEuiqO!+zZbJC)@_Yct11IRm+JqPXlBpCpndlGrp6z}#SXtyPAasNC01~W zxa&C$W86PFkuqygC0T(fPE(EjCoS3pK^mnaK0U&IZE}?p1b$rUXAM z$nkuwoPP-mb%3$aL*~NpDG%jCDK5E(!<=A-nuWOVHvdcAXY}FS(l{Yf{;B>UST{;? zU~Rc?NAzOTs+57iuu8&ybkh^*sgsAU6HjizpF=T)uE|W5KZa@yfZqFXi$P;WA1`#` z`P|O<6O2S9l13lejz#?xdZbWzOyDOX!qLsyO6QDw>Y*lEVa=KT+||q0KWy@l01#;ck(?`;V(gklPNC_%WSWgMp%KQIXAWYJg4d zWnZG!v&61QU;jmc3yaF&7c@%Y0-o<-u9Pi2Df;loyK)kX^4BCJAcU9OFbiT+|zR@V_L>2T_b4T6Luf8`$h#35d zCQ^ucp{bfBe=KjX6zPEjH1589qEO-qfszuy3P9BOZX)Gg3#6N54L6N8b~CX)55OMX zL^A$|Z(`mvNyElLY0>VzWd-$<>4}|0HJETduTR4EKPNv_eYjzq&UaY+VPqpNTeO$a zhidYebXqS5=#fh(wJTumxXN?seYd$qntQ55OXk8UJ%-=>G~9 z#c5J=NKVn*^xMM`7-9ZFVjoZ%RL@`w#_5nRoBo5R<5^_Te-qu+_oNdB7|V`%?})&< zz#k~o2$tChfXy!a*;*qo>cRYHcKP2#n;cBJ2OC0X#pdT=0e1Zjjj)ePgeQ0WPjAq6 z`(Q27FGf0djRxBk{iGn%lBA|5O;Lb;5TC#g}!ip zCR$WDu>O3-76vHcsW0IBR942G%>Ir(&Mga6L&Mflb6|AE)YV#49repnB2XYK>uR1zq>HUSw|%({v7| zaI!kf{}ov<77d>)c_0JHTbtYLbmcoZ3&RIohwBPz0Vx7s;03$s>&h0zk2Dc3-g76K zLls8q>%d#xh|aG^u*u-n&X&QyNW0K_k=|7MMEzo!6>1@aQ|38yd=b^_Cec+h{g+J>M>r@PtZr z(epHJ{zB(g=n!#22d1yS|K3Te2azraiSM$RE4!=A9i#hf)moJL)15A^9*)=N`?p4f zV_a2FpP@}@Q=I|hX}sRvZMAWQ0$`fj@Rh>*tCL&BySX%i!7GI)jeM-%A$hAOyrq5# zG8=)*g*cN&#WZCgGEKh(v(D@h6+x;MNJNDTdV)%1o&P89P*#0i4|EPQ2$s~Htey+H z9K{-?XJ&YPlxUt9H+v!*VSP6JEQ{usFi!>aPo`5%W8aAbR&KD*7=Idc!MVpBI9y6L z8QBCJ$oxY56)hdev@FOv@a?Blf6Nc3LmDQ-ZM8N0_YPlPj0S}elQ={T@P(#8j|M($ zT{FmPn0=LQ?2p)W|yU|&pd)zb$x(U(69SBt(z?-0qTIj|6M?WxpHR)0VB z{eNdcgU2$ml1RwFTq68QY&f`ZA$Yj|-xD%s*a_KZP5Y`}fW*}sY3VtWVMmi_w!SQy zOkqJ}iwwr;=bYmi{&gja>2m3^2SMq$*-z18hcUcAr)((Yp~-iTWoRh+hZ#rq+F7O) za>vlBbOfn9r+r#Cf0Cpl@Wf

>ZfheFTfhtVIgsZHj;mhDE@W) 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 HrUHHg7bh`G diff --git a/ch32v/lib/webhidcontrol.js b/ch32v/lib/webhidcontrol.js index e3b2f98..a70a5f1 100644 --- a/ch32v/lib/webhidcontrol.js +++ b/ch32v/lib/webhidcontrol.js @@ -57,6 +57,7 @@ async function closeDeviceTool() { loopAbort = false; setStatusError( "Disconnected" ); + dev = null; } var playingAudioProcessor = null; @@ -267,6 +268,7 @@ let receiveReport = null; async function sendLoopError( e ) { +console.log( "SEND LOOP ERROR" ); sendReport = null; receiveReport = null; if( dev ) await dev.close(); @@ -308,7 +310,7 @@ async function sendLoop() while( true ) { - if( dev && !loopAbort ) + if( dev && dev !== null && !loopAbort ) { receiveReport = dev.receiveFeatureReport( 0xAD ).catch( sendLoopError ); if( !receiveReport ) sendLoopError( "error creating receiveReport" ); @@ -494,5 +496,6 @@ async function sendLoop() } } } + console.log( "ABORT\n" ); }