From 003beac9e34c5a2ea6790e4b088cbe53e45c8835 Mon Sep 17 00:00:00 2001 From: Michael Colton Date: Sat, 2 Aug 2014 01:26:47 -0600 Subject: [PATCH] Added basic volume control (not sure why I didn't do that a long time ago!) also a HackADayPrize logo, can't hurt, right? A few other small things. --- Hardware/Block Diagram.vsd | Bin 0 -> 38912 bytes Hardware/PSDR BOM.xlsx | Bin 13667 -> 0 bytes Hardware/PSDR.sch | Bin 286922 -> 286368 bytes Hardware/PSDR1_BOM.xlsx | Bin 0 -> 13194 bytes Source/include/images.h | 1 + Source/src/images.c | 135 +++++++++++++++++++++++++++++++++++++ Source/src/main.c | 44 +++++++++--- 7 files changed, 172 insertions(+), 8 deletions(-) create mode 100644 Hardware/Block Diagram.vsd delete mode 100644 Hardware/PSDR BOM.xlsx create mode 100644 Hardware/PSDR1_BOM.xlsx diff --git a/Hardware/Block Diagram.vsd b/Hardware/Block Diagram.vsd new file mode 100644 index 0000000000000000000000000000000000000000..a470d03d616aa2d86116414549392a21a0ab1d69 GIT binary patch literal 38912 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 diff --git a/Hardware/PSDR.sch b/Hardware/PSDR.sch index 1784859e69fdb8a8c47e5769e0ce0192c419f3fc..8c0ac0422f1ee0d6db6667192cec273ae26fb513 100644 GIT binary patch delta 10893 zcmZu%3tUu1+n+gSV_m$VfUY-KwUkN`^AcVGHE*DzsF_z*SYQ=d+ywGSU+v3Fc2jh}|1)QS#qZns9p*ptf983fd1lTzGiNyZ zRilD08?B76M1R)Gk9mJBDK}J=7+bxwmEWp(vwGeAVAb?yy|)~w5se_JI*e`Lj15#7 z`_vtxt3h)G)JoJRd-KAjA%3fh&4&0_k)JpBzP;jsiJFrsX>A;1Yf&ud##rKKA%0iaRYM>S*qj14C436$4|_~l1%v!Ot1<(D7F&AoFPhf1r_kRaz*4`l3tH_vOPb0|s; z>}|&2D7%domc&rM`~qkSy9cn3H}5f)C>DTA2Ej-r{g?S?Z5ze#tm^l-VQhXwrI{h; zA=GqG%xb{Z$vX!r1M4a6TIR24@QmX4Eq`x=aKCRtRn~t({w>thd3k4xhCL7Uj$d0( z4;XaGAeb3j1e^yS{{G~FDHB16M%jXk0_}njUFJ zgQUxO5SD7|K?`sR!WR8oI}v-EH!}>r-_9?epE4V^+-hpfZ*|JtEAo=wjE1Z^#95#o zgJKwp4hohkqfs449P~bgY#;hRxP5Sb=BZ|e_>RHG{5PO++@xTm2)M(|mc)5_Gg3+6 zq|O~eMpxSV5WjrNT!$TbU@9Qr`RSl1a}EU?3u(w93AY(*%xJ9GrTXZ2y-HIFI8kti z2R*s$pJ3y4lt^y}l7ve(Wc$!Ez7lr(LgmcULFwa^CPp&~(I73jSa0MsZXMxNNTn$P zTpo&HxJY0roQ(`(EOULZaWFV?9x+F>8Eb(o0Ab7wZ(>aJwu?aBx%}|xX{FOo?7VaO zh`)O@CaT9nO&AM@rTItJl@YGbCh)OrEF0s)_X7X=H+OzyjI$@1mA!~G)`y=0e&sjH zVQNqOIHVVS_=VsfemnFywf6`A5_`!Fks1fykPZYwKzCp~8xNrxehv6}>=@kjLrP{7 z*hE(8so@JGzgF^f!B1pMJih#P@O!Q-DkuGQ(ZNZ~Jqadi6zqn;eO4qDDDZGHn^Ma_ zq2!lU^HbR3S_X=$+bb9fD@(-X>j2Hc`;6M_yw%MX)l#q@0>2))dx<C`V;E!G1biRsr+b|K6eFUyRAmZGdA4s4D zLX^T%AW>uBA^2UTZNDbIKRd`$ky3p4Xw1N6m)ByB=p9I7X^^1yi=u5;~cymIABfy$aCY^;r8P@b8@NUO^EW!G`fHmW4s68N$!O4?oxY0`cx=AdtT&S5uv)OD&)bO`u`?;sd0NrLeEC&)b`~%tkgP+L0 zoaMPJ7a}zR2E5evT&Ynohs}XR4c`#_v8z&nZ2vNQ84@+T8N8w5?Qh9}F6iJ~HWv~# zd@T5v%GMtu`>Y>svw28!eFWZsK**IJz99u2Sp}PqG|z`G0*`k;<_JAKPbVfHdF7z;y_ij^>^uGXucCg0#Sg?|?VQuJ8Wm1o4Bw zFGPApwD$1!V%TeH9r2@wx6HqNHAobNt8MeoU;Sj~uh-VsxG+)A?l4ybCh7wxkQ67OK=?;_fKE#ArfjU95!|nXj0INZ@wvukq2mAve{-sLp1= z{H|C(hPM!1$M9sOJ`-!k@Fl!~)_N>=7)>qN6KFk)T@luiys7wf5>Ml;v}Tj}*(Xe4 zct^RQ;f%0O1s9Oa(~M7}b1wFd7`c(GCG$JVvrN2Z<4a5(B(sX0)TJX*psAzwZVEh6 zIx(>=6;>m(&S~V?b9is%vX$%y@l_gcBBt26-PlEXyI8E>sx%ehv$>!6)y|W7S21!L zU#fIt;@mW7=&o6(lZHqji0 zc2Kl-@aAG?2Dd4Fm}u^RXkTr;gVaS!nH_Auh?&WoiIbT;MTude=S;}-)4rO?kJmR% zlpUv%t6GIompJZw4 z5nCfp*fA{k7NVCn@zNr`)RZErMtrsIhO!uLq%tvWF<+vjG41YRej|hizG5Q}QA|uc zLeBj~tB-h;QjdwrAE8)Z%=?I6RDw|4gkrFmw~2=;O_=xqMWrbd`>EP2E^I=h=1hca zMs*7&`cmE!t&n31%-hUExzY~JwxHZze7OZ$!eAOji(N6g&EZ>jT9PWlpr8{l;Uc>p^JEC47c z@CtysA7CNCvji3aBmnTmB6mNuypHnp10a?I|3bO#S0DsHEC43W%&+(ebq&gghZ*UC zBDMs~-vBNG{{Xy4;6A`10uKOgmhg58^1u_QcnHu7fIkw}6Hss9Fn1Ef696w0@B`RD zzzFa?fjR)c6EFd^I0fJj(4RnEfaw6do>+AXQEG^C-P0ff0J;!p1TcX>V}OMO0s*!Y z2m&|-fP3bj(}+`3lw*GaVFqvk;K}grPas;Le3OWl0D)%!S^@MT5W*j7NoRO!5ci1h zZ}3i>32S3DSPQtxdvb0RGn=bV8}D3fV8I4J#Gs&U{1wj+-bfaVKVNJKrm<+&n>Y$bzt^3d^Y!>!3=F*ik9=0$B2X*Y|39kboapu`))R zhBRygBM(%XXltiN->MX==Bv%r!3{Cx?(k+4(@fr-byZ&mV7ZBArR^EZx&P2q;_b^a zugX7=&#jC7`^bl;>)@(4da#)Q?g;jomPwT+7USLMP0VbG{ToUFU^|ca3J7$OoG z+Qb+EE)QktG=y@1Swlpx(?io>aM37QaM1?uF0vAAT=V)qG9{9QfV(`X>#~$brW};8 z?5N)9jfP|~v?MNgXjINjUON0o?DWivmU)k_G%6mCP%3#}Jn>>Gc@!V6 zEvV!NxZ8J=vJ9$2zEi%01{Q_I(UiwFL5IP|fA_&Y;={owBKfxe1AM{P4fYZr2HuL~ z%eTTbiTHL~5%G<{V~?XkKpcF;C#w(?3&PbNZ(XZHYnLarWgdS2O$GF#HF=Pvp7#4YN~l8hL96xpwa9s6 z(e_(z+omNW0B7TiBjktYls<}z*s?H_8r*l8NSIwocUvw^Wt@L@H# zn3dAfp@}&0p&q8*8>+cQSgpxET-uzr#O*ol#l!oZ%PA`L7H*VXFFfzX;b%t`UiRWS<>!m4l=eGci*gzI|{K}s4;{%H-Jspk*;ZBr~c5uWO zVn-2(+VbN$k{{^9+wt7lht0hC=$Cuv9!=O+=^1+TjJ(tFEcCW7!e`6CZ1W)zv&qeOaFL$rqRq2^iK5bWx04ewm3Qm;WEJ{81Ivi+u&MAAK z%TNS<#J+5B`K`S>$~E+GPI;Yui&Q++!Y4QE3xHs908 zeQExlO3&1baXt|s2Y!MBBPvq0|5O+YD?Mu}e)H)8@n^vIDs%5VQ5FgVOUir=5MKs9 zrqo(^wvb!@XxcaJr%1kQ!Y{7QM+}S?$GD8PCqMuDLhuRzp9Mj!^CXLV#Q&~ zMvA7_kR^!JYszdsMqH$9oc7{%C6)7u+JXO)retlzO)5Jz?N>a>`9f{VEy|Y(<6Y$z ze_#9SE{PRrOYbTFgusynfoekqo3d5G>McB87c@~1V0RVMRQ-hWP;tkM+Gn-P%}A)5 zxYGi~NDb?~P|jln4^da}N-?vM8Z0)2sLiYJ86WHyT2tR0nBH5XLe+4}U-9Ojd-E&a zys<^+`+0LG@+#fCEj9YC0uQhB(0At`L>wQfWnQx3v7-g7kj8*3z?Z?>6&}+T-xU%* zb1y|hx}u-L5_5QKwRw*}O~qcBcp6D8G-$2*C$4~IP2}Xu1C|R~EWt8?3vgeD*(=5R z)>tWyi+U)&1nBkmZ&*v<7mX{OKv()8&DbbBrdF?iBst8X>azy}xCn3sKRptS+CbB# zeh)=Q0K=B+kM!l}r)H1794(CWhy^5beegr^K0s9QIFG5+>vz@KQ)-0PBXc~a>)YTB zD&(pW&ZFzB7+1;XsNe1pt=(#{F(SLtWJaM;TQzt>X`#myvE5_JgOqGVO}xKL`#q+? z;G$8sP#q0{_m>&=rzz3fE{y6h0#(06cF&Xp0}EileEnOGX{A>%0uqbbZi`w{cIs61 zQZr9ASbn%sA%;G!wsfyQd0l>~YJv~O9g*mhPSv4<8?A?)o>@X>x?wdKj?~eIr$_6( z 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 diff --git a/Hardware/PSDR1_BOM.xlsx b/Hardware/PSDR1_BOM.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..16d8ba539a75d33352fb750cce8bf28b4db51dc8 GIT binary patch literal 13194 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 maxAmplitude) maxAmplitude = uhADCxConvertedValue; + if(uhADCxConvertedValue2 > maxAmplitude) maxAmplitude = uhADCxConvertedValue2; + if(samplesB[sampleIndex*2] > agcLevel) agcLevel = samplesB[sampleIndex*2]; if(samplesB[sampleIndex*2+1] > agcLevel) agcLevel = samplesB[sampleIndex*2+1]; // if(sampleIndex < filterKernelLength) @@ -352,8 +361,8 @@ int isFwd; // dac2SetValue(samplesB[sampleIndex*2+1] + samplesA[(FFT_SIZE - filterKernelLength) // + sampleIndex * 2] /*/ (agcLevel * agcScale)*/ * 4096 * gain + 2048); // } else { - dac1SetValue(samplesB[sampleIndex*2] /*/ (agcLevel * agcScale)*/ * 4096 * gain + 2048); - dac2SetValue(samplesB[sampleIndex*2+1] /*/ (agcLevel * agcScale)*/ * 4096 * gain + 2048); + dac1SetValue(samplesB[sampleIndex*2] /*/ (agcLevel * agcScale)*/ * 4096 * afGain + 2048); + dac2SetValue(samplesB[sampleIndex*2+1] /*/ (agcLevel * agcScale)*/ * 4096 * afGain + 2048); // } if(sampleIndex > FFT_SIZE - filterKernelLength - 1) @@ -369,6 +378,9 @@ int isFwd; samplesB[sampleIndex*2] = ((uhADCxConvertedValue - 2048)/4096.0); // - 2048; samplesB[sampleIndex*2 + 1] = ((uhADCxConvertedValue2 - 2048)/4096.0); // - 2048;//0.0; + if(uhADCxConvertedValue > maxAmplitude) maxAmplitude = uhADCxConvertedValue; + if(uhADCxConvertedValue2 > maxAmplitude) maxAmplitude = uhADCxConvertedValue2; + if(samplesC[sampleIndex*2] > agcLevel) agcLevel =samplesC[sampleIndex*2]; if(samplesC[sampleIndex*2+1] > agcLevel) agcLevel = samplesC[sampleIndex*2+1]; // if(sampleIndex < filterKernelLength) @@ -378,8 +390,8 @@ int isFwd; // dac2SetValue(samplesC[sampleIndex*2+1] + samplesB[(FFT_SIZE - filterKernelLength) // + sampleIndex * 2] /*/ (agcLevel * agcScale)*/ * 4096 * gain + 2048); // } else { - dac1SetValue(samplesC[sampleIndex*2] /*/ (agcLevel * agcScale)*/ * 4096 * gain + 2048); - dac2SetValue(samplesC[sampleIndex*2+1] /*/ (agcLevel * agcScale)*/ * 4096 * gain + 2048); + dac1SetValue(samplesC[sampleIndex*2] /*/ (agcLevel * agcScale)*/ * 4096 * afGain + 2048); + dac2SetValue(samplesC[sampleIndex*2+1] /*/ (agcLevel * agcScale)*/ * 4096 * afGain + 2048); // } if(sampleIndex > FFT_SIZE - filterKernelLength - 1) @@ -395,6 +407,9 @@ int isFwd; samplesC[sampleIndex*2] = ((uhADCxConvertedValue - 2048)/4096.0); // - 2048; samplesC[sampleIndex*2 + 1] = ((uhADCxConvertedValue2 - 2048)/4096.0); // - 2048;//0.0; + if(uhADCxConvertedValue > maxAmplitude) maxAmplitude = uhADCxConvertedValue; + if(uhADCxConvertedValue2 > maxAmplitude) maxAmplitude = uhADCxConvertedValue2; + if(samplesA[sampleIndex*2] > agcLevel) agcLevel = samplesA[sampleIndex*2]; if(samplesA[sampleIndex*2+1] > agcLevel) agcLevel = samplesA[sampleIndex*2+1]; // if(sampleIndex < filterKernelLength) @@ -404,8 +419,8 @@ int isFwd; // dac2SetValue(samplesA[sampleIndex*2+1] + samplesC[(FFT_SIZE - filterKernelLength) // + sampleIndex * 2] /*/ (agcLevel * agcScale)*/ * 4096 * gain + 2048); // } else { - dac1SetValue(samplesA[sampleIndex*2] /*/ (agcLevel * agcScale)*/ * 4096 * gain + 2048); - dac2SetValue(samplesA[sampleIndex*2+1] /*/ (agcLevel * agcScale)*/ * 4096 * gain + 2048); + dac1SetValue(samplesA[sampleIndex*2] /*/ (agcLevel * agcScale)*/ * 4096 * afGain + 2048); + dac2SetValue(samplesA[sampleIndex*2+1] /*/ (agcLevel * agcScale)*/ * 4096 * afGain + 2048); // } if(sampleIndex > FFT_SIZE - filterKernelLength - 1) @@ -621,6 +636,16 @@ void updateMenu() //Right now all this does is turns the AM decoder on and off, I guess. } break; + case 10: //Volume + encoderPos = getPos(); + if(encoderPos != encoderLastPos) + { + afGain += afGainStep * (encoderLastPos - encoderPos); + if(afGain > afGainMax) afGain = afGainMax; + if(afGain <= 0) afGain = 0; + encoderLastPos = encoderPos; + } + break; default: break; } @@ -642,6 +667,7 @@ void updateDisplay(uint8_t force) Adafruit_GFX_drawColorBitmap(150, 136, bitmapFilter, 47,12, MASKWHITE); drawNumber('.', freqHOffset + 16*2, freqVOffset + 0, MASKWHITE); drawNumber('.', freqHOffset + 16*6, freqVOffset + 0, MASKWHITE); + Adafruit_GFX_drawColorBitmap(320 - 45 - 2, 240 - 46 - 2, bitmapHadLogo, 45, 46, MASKWHITE); } sprintf(&freqChar, "%8d", vfoAFrequency); @@ -739,6 +765,8 @@ void updateDisplay(uint8_t force) modeLast = mode; } + if(afGain * 0.99 ) + menuLastPos = menuPos; }