From 384b908d5f570f445c199f1678e95918eb72fe7c Mon Sep 17 00:00:00 2001 From: Nicholas G Date: Sat, 2 Oct 2021 21:07:58 -0400 Subject: [PATCH] Removed unnecessary encoder rollover logic --- build_uf2/Pico_Game_Controller.uf2 | Bin 74752 -> 74752 bytes src/controller_config.h | 13 ++++++------ src/pico_game_controller.c | 33 ++++++----------------------- 3 files changed, 13 insertions(+), 33 deletions(-) diff --git a/build_uf2/Pico_Game_Controller.uf2 b/build_uf2/Pico_Game_Controller.uf2 index 793d01fd5068d9587e029c6d75e646639af1936d..de2ee7293ba721faaf123ba217cb236655450762 100644 GIT binary patch delta 10847 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 QdtArxOy81ZFMUt(-?@9AF#rGn delta 9116 zcmb_ieRPvmn!h(q(lj*Xr6~~7K;N`Y4Q+t}9ViGG+nS~cU@a&G3Kj&XD3r(m7OkdW z!2-oaE)vA*Fl>i|$TGE3hnYjQu&#p+Iw_*^Q8Y3@k;O5iXhT29{%+o+P2E5C?Ah%( zPw&0YeV*U*aX;VNR-cwvpO!cJWs2iFh|vB{uWTN5wWHcfhs8dMt?T*Amnp~V~@KV#N+lRiEp<@OM2;-XmJ*3%T@iaqhz0S|ZM} z%uk-Rs+5fR+(S)I<}JwEq^l)~j#EWnbTA{m#JZzRE@Hggp_^qckMdm)z#B)DZw|^4 zC|3oB%#{0v`}aG`(fcL1@!;m89D;IjK<%_=5;$;o4Z^x8&g~9b$_7a8%IIsP0K{U8Z+Rsi5&L1-zn!C@|E!K#v5rU(E@+lh&qb z%xanBm~5YJoNSZ%>hE+Jw~{E|Gd*&m@n$*3gFhbpogscj&;H!lHl^=*KlQ1)$>{Gc z{ov_J24+f>??8{QgNJ*#ifn-u$sn@Fl`H{Fd` zlI6jOFLx;%2Is3Ce0cb<@Zp(;q2NPhUPp!sRcPd|BSPdjN!b}>QVY$k!JrjAY_Zx- zzh-Z$R~u`ih?w-dXwnnQmq=ET&`eTkwnze$4&@Lh zpAtjchuPaoJ<0LP;_{CzXQRLST(A?!47SHtlJxJ|V$mCiN%L~<)wb&$YCgV0Gon3% z9QyJ>j(xeZ3+f=avq18Cu*t+{EYC=IM)UM#!AqXPKF^skPU{#H@T4RvtCM%h7c5<{ zu~>IsI=S!{@43Pemd~OF zim?VXnBO#eXdvgdE27QX?;a>Y*ubS^i?zmeFjQNiHAs{wpELCkq!8{d;V9eW>W@s8)M4v+%)jm7qKVflU&Q;kAexw@;7;IW(6~` z1aW#(E>UgXpkUmK(O&G}QNKoBQ&lIQRq#4rDR;1+F7lTY%6<3xqYZMO%fF?Gj1@gu zMDBaYPYpTXrTSkqex#85EPlCfwZF9q1J?h;#?nt&_fYKUvPp7fo@$Tkt#l&!J*g+9 zT#m$O^HR!4s==!?R$~vk*+Eir?b?TfddQ`NvhgAIVAs7pWK|KG&?5qhs(s3GTyFrhKVnTh2@u&s?Wzc#@Y2{v5npnf407D zJ!JK@q&qUf`KbdZeGxxMcVkiQ#P(B$vJqv#|uKWC4=zY-FAXh*IZ5v1jG`?k>K^+~x4ZMKg zfuBwiBFiGFx9#D>i!XJ)De>jcmp$LC5S#Imi!^2YJKjqe;BirAb5?N4I`qV$Ez<0x^f zFl#(obISSZU^rbP(pZjeW=tLQ;*@ZK?a(nM>UI6W8ni4&pEYcu257hi%||J2Ai^}z zxk~oDzJj*1@AQefGB7HU$M1g>s@J>=AInKbx99yInP>>1jWn?wgGcvGJP|B}WE&8! z8XF`OHm-SBTh7E$5oSegjOBdX89R2`|Ym4`x>;%wS@6zr94sUg7|I*;z5qB7Y^Ia`sfVR&g4+S(qDAG7Wjc4jz}yD3rD>L zyzojKF;a42WP}SP&ta!{j?Ku)rO&dBIomUNo}JJ4PxDgLrD@LBzLIE20wJRlJS08A zBLUxwk)66*-LJ^Lm}+O@wEobOB)drwc3IA}nUN|lP20u98GR~DW5KY`u#8*_|7>uf z3T3|qBAh_`Dtl$db|zXvTKB^bOOZZON(IfVkhbtVJ794!WA5;9KA0w7n=E(e@~WGJ zmMDkZUT2hJI7f98Y~6J(BGhjLx!8i-NowA7O3i(_TbP(1GWvii?h{G`FS?IQ-PZgH zx|TKPKgmREL_9XcW8Imi!sp-ZY9iDIg|XjZjM~vYgf?jj1ai@@+sOW5ouH#>%Dgd- zANAuh%;$SM|9F>}Gdx%zb&~sqh}PDS&+$?*=6qunfiX9PYeUH$o&h5`^Qzp^OUz819a4V~ zKFv0mTH%uigk6LZAGI{1&UxHN00jHau?@5DQ=fyES3y;E?9}XZWx^&LX`9#&v&S;A zsLv(sXvz5K0mh3OI?ECp}b2$oDQvhL++Y|645 z%=mcU05VNEWFG&P8OuYw6~HNn&J((zP8ZcO%}U5T0p7|!Y|~`P$H@^s?nFLzgK9xF zJU5$}edQNStO#kX266>ZoFQ*$ympF&G9?0qg1UDA)LKBT4?#T*^Xt*B>zFnJv(HrAN_7T9VLDZE_=Z=n9H3fp<)22P$!b z;ynlRRcJro7d_KdL*{w#szWjxAybX^rU;xG$ZTpzSoi>LfX9a8?$cwXOw~fZUj6{{ zZ89W`wBeR!_cbR}JX|qv^{~}Tt$|J^)`So?n_^Tgs;^I4F=g5PHD5DvO9XbUmgci5 zTNXtZ+7U3xXRmL0VOXr~Zs*%~TCGM{%*WkePCg-Xtie3r*?NySH;0h(ph7Dl^(g0~ z^lZjxZ^4!dV&dK`pl+?jNwqB^);h$o4YAer+1D0G=`R?N{yNCK6q5NDgT%~~MY+o3U^9 zkmJx1nq_#+$?g_#&>v^7?{gU>0o=NA3)T|q)ssuOG^;!>1T9F*;@W&dcHz{GfSUdYPckue&{jdkU2yMMvH)|sZd17kRlN<@R1x(=FnAIqFV<$3tFwbjcvV>*VnOc-o1~B$NR%wBzd=J zfOp4>($*nNuBij<1=S&i^(eVLo&xSIQgHP68Ycd^Z@if11m@+R+cjL3i=Pgv+N!nV_n(H*pdA-&8C}zJL`!AmmJjFKn%A?|So^CVxZYx;D$JjB> z^qcy%Wa`(D3V+PAoHIArp{7`t`Kd;_BmK?vE0RIlMt4N*-CK~>5gr;ROmKMq({F-^ zX>i5BU16&}U8wM5oJID@r;`o5=4<}YN}8*!v1Aw-Nm3qECFkH1)ZE2HPrp+uB&SvY zx8Etx%5)A;5{gl1PQVMM3W&bl||7`sb zF1h1jyo!X7M0V}$y-YlpAg{xlOyA|{Ny&*P2RL!AhSsr`b9wkpKgTusi;&Y_0{V;7 z;?)o&2WmupC2u#sfDi4VB)&2UyWIKyC|5}aRt+$4zKot^ubzLHu4LbzAJ4>#eez7x zj+t`NOn=3eTx=aK{QWVEK6Lt_`FUYck?YUB6s6iE*^B;JZzga=z$eqsa-e@u&)|q%UgmKLjClY@P zwRLx%>}s{v>|oZb7nyiH!o&@jxPF6W-N5Vw1^)nsJ2ReW2qk3QfK=WvGw%-;memu- z#@^PmvKvlG{y$C3bEAlfH#1rF&pKKCdN%v!B-y$3Y|G6_%tXIr-9Y58ctCtQ67l%W zl`Qqva(adxy)|mEg2u>yM>kVN%m_Mq(9j@u*Y|16cWXR*;2(br`<8@v7mlX++*Tvr3z?~i96`(oLQo*7bKFXVd~ zSnZ7otoUxa#0!9Tx8W6$_Stc3WK{b~6>V^fGKuT%j-n=am5j6Gk%CI9byvx0{jv}7 zd9*%6o``yw7g?SN^*2Sx9YVc4hX^l$4u(owsN_6O;rQGd71g@J+;Ca*3+XVw3H&S5 z@Dcm}ORoPFpc)@*A5SF$FaNKOyoZ4N(_~UU+}$zMLKjTbzF+ zB4=kqu1CuAIwmY7Zoi6-ahue1PX8dqVs2Eb=^?imOG`N0-L1has*I)8=9#$s^1tnW zv#HjV9jbrkTbG-Ox<-xLlX=~WinY$QZZS^M<;&Ks5jbQVhZMlZXO8>M5PFZhQsAuk zNXY~)8PC}Xk?diZI4f2zU&d|BEhWPKg+%xYB%sdQoH8ToVcsvxCg{vwhUZbx&p6O! zp>o?}XmbMZAjwdFz*`v#sIoCc~`S|iR z*zC}Di^C+}-QB}^;)YRk{3kfL{sg)Jy1Wv}TJ3HcMy+FSRNyj?GiL$HXF$CDOS*{u zvEc8kaHr{Larg%6*667=CI+K{p_KKwH|pqb-J+fvhE-xTc4DH{@DfC@(Z}v^7wc)7 zG@gmvEj=yMRN+x=Enfb1qV%}0>FG4L(Lm?*Pli!^JPdTEnoH&fCEcGIXt7%yMRjWa zW?Twp{yKN=C^|_3PvYRCXpyT2Dmfu=5hcF_&|@-Njg_7#DWxE-Gc9m7q#c4X6&Z8&nT! z038AGwcy9ge}CA?bodbde=bLGG@>*3bHe?yNax6}r4qq?TcqO1mIs5Yh>S0iN`4NU mz!BaG+V38pOebna&LYAhJl?FxC&G8`r;_Q9@~qWwtN#nRk(PM? diff --git a/src/controller_config.h b/src/controller_config.h index ec9358c..45bfdd3 100644 --- a/src/controller_config.h +++ b/src/controller_config.h @@ -1,13 +1,12 @@ #ifndef CONTROLLER_CONFIG_H #define CONTROLLER_CONFIG_H -#define SW_GPIO_SIZE 11 // Number of switches -#define LED_GPIO_SIZE 10 // Number of switches -#define ENC_GPIO_SIZE 2 // Number of encoders -#define ENC_PPR 600 // Encoder PPR -#define ENC_DEBOUNCE true // Encoder Debouncing -#define ENC_PULSE (ENC_PPR * 4) // 4 pulses per PPR -#define ENC_ROLLOVER (ENC_PULSE * 2) // Delta Rollover threshold +#define SW_GPIO_SIZE 11 // Number of switches +#define LED_GPIO_SIZE 10 // Number of switch LEDs +#define ENC_GPIO_SIZE 2 // Number of encoders +#define ENC_PPR 600 // Encoder PPR +#define ENC_DEBOUNCE true // Encoder Debouncing +#define ENC_PULSE (ENC_PPR * 4) // 4 pulses per PPR #define REACTIVE_TIMEOUT_MAX 500000 // Cycles before HID falls back to reactive #define WS2812B_LED_SIZE 10 // Number of WS2812B LEDs #define WS2812B_LED_ZONES 2 // Number of WS2812B LED Zones diff --git a/src/pico_game_controller.c b/src/pico_game_controller.c index 33cef6f..c18305a 100644 --- a/src/pico_game_controller.c +++ b/src/pico_game_controller.c @@ -9,6 +9,7 @@ #include #include "bsp/board.h" +#include "controller_config.h" #include "encoders.pio.h" #include "hardware/clocks.h" #include "hardware/dma.h" @@ -19,7 +20,6 @@ #include "tusb.h" #include "usb_descriptors.h" #include "ws2812.pio.h" -#include "controller_config.h" PIO pio, pio_1; uint32_t enc_val[ENC_GPIO_SIZE]; @@ -153,35 +153,16 @@ void joy_mode() { // find the delta between previous and current enc_val for (int i = 0; i < ENC_GPIO_SIZE; i++) { - int delta; - int changeType; // -1 for negative 1 for positive - if (enc_val[i] > prev_enc_val[i]) { // if the new value is bigger its - // a positive change - delta = enc_val[i] - prev_enc_val[i]; - changeType = 1; - } else { // otherwise its a negative change - delta = prev_enc_val[i] - enc_val[i]; - changeType = -1; - } - // Overflow / Underflow - if (delta > ENC_ROLLOVER) { - // Reverse the change type due to overflow / underflow - changeType *= -1; - delta = UINT32_MAX - delta + 1; // this should give us how much we - // overflowed / underflowed by - } - - cur_enc_val[i] = - cur_enc_val[i] + ((ENC_REV[i] ? 1 : -1) * delta * changeType); - while (cur_enc_val[i] < 0) { - cur_enc_val[i] = ENC_PULSE - cur_enc_val[i]; - } + cur_enc_val[i] += + ((ENC_REV[i] ? 1 : -1) * (enc_val[i] - prev_enc_val[i])); + while (cur_enc_val[i] < 0) cur_enc_val[i] = ENC_PULSE + cur_enc_val[i]; + cur_enc_val[i] %= ENC_PULSE; prev_enc_val[i] = enc_val[i]; } - report.joy0 = ((double)cur_enc_val[0] / ENC_PULSE) * 256; - report.joy1 = ((double)cur_enc_val[1] / ENC_PULSE) * 256; + report.joy0 = ((double)cur_enc_val[0] / ENC_PULSE) * (UINT8_MAX + 1); + report.joy1 = ((double)cur_enc_val[1] / ENC_PULSE) * (UINT8_MAX + 1); tud_hid_n_report(0x00, REPORT_ID_JOYSTICK, &report, sizeof(report)); }