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.

This commit is contained in:
Michael Colton 2014-08-02 01:26:47 -06:00
parent 4d89e8ab01
commit 003beac9e3
7 changed files with 172 additions and 8 deletions

BIN
Hardware/Block Diagram.vsd Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
Hardware/PSDR1_BOM.xlsx Normal file

Binary file not shown.

View file

@ -29,3 +29,4 @@ extern const unsigned short bitmapZero[];
extern const unsigned short bitmapIronGradient[];
extern const unsigned short bitmapWebSdrGradient[];
extern const unsigned short bitmapFilter[];
extern const unsigned short bitmapHadLogo[];

View file

@ -2,6 +2,7 @@
//This site seems to generate output that is correct
// http://www.henningkarlsen.com/electronics/t_imageconverter565.php
//BUT it will round down to the nearest 16 words, so you need to pad the image, and then delete the excess!!
//86x20
const const unsigned short psdrLogo[]={
@ -517,3 +518,137 @@ const unsigned short bitmapFilter[]={
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0230 (560) pixels
0xFFFF, 0x7BEF, 0x0000, 0x0000
};
//45x46
const unsigned short bitmapHadLogo[]={
0x0000, 0x0000, 0x0000, 0x0000, 0x630C, 0xFFFF, 0xFFFF, 0x9492, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0010 (16) pixels
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0020 (32) pixels
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3186, 0xD69A, 0xFFFF, 0xF7BE, 0x0020, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0030 (48) pixels
0x0000, 0x0000, 0x52AA, 0xFFFF, 0xFFFF, 0xF79E, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0040 (64) pixels
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0050 (80) pixels
0x0000, 0x630C, 0xFFFF, 0xFFFF, 0xE71C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0060 (96) pixels
0x4A49, 0xFFFF, 0xFFFF, 0xB596, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0070 (112) pixels
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x10A2, 0xFFFF, 0xFFFF, // 0x0080 (128) pixels
0xCE79, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0861, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x18E3, 0xFFFF, 0xFFFF, // 0x0090 (144) pixels
0xFFFF, 0x0861, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x00A0 (160) pixels
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9492, 0xFFFF, 0xFFFF, 0xAD75, 0x0000, 0x0000, // 0x00B0 (176) pixels
0x0000, 0x0000, 0x0000, 0x0841, 0x7BEF, 0x9CF3, 0x0000, 0x0000, 0x0000, 0x2945, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x3186, 0x0000, // 0x00C0 (192) pixels
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x00D0 (208) pixels
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xBDF7, 0xFFFF, 0xFFFF, 0xFFFF, 0xBDD7, 0x0000, 0x0000, 0x0000, 0x0841, // 0x00E0 (224) pixels
0xFFFF, 0x630C, 0xFFFF, 0x8C51, 0x0000, 0x2945, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x18C3, 0x0000, 0x0000, 0x0000, 0x0000, // 0x00F0 (240) pixels
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0100 (256) pixels
0x0000, 0x0000, 0x0000, 0x0000, 0xAD75, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xBDD7, 0x0000, 0x0841, 0xFFDF, 0xFFFF, 0x18C3, 0xFFFF, // 0x0110 (272) pixels
0xFFFF, 0xA514, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xC638, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0120 (288) pixels
0x18C3, 0x630C, 0xA514, 0xCE59, 0xDEFB, 0xD6BA, 0xBDF7, 0x8C51, 0x4A49, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0130 (304) pixels
0x39E7, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xBDD7, 0xE73C, 0xFFFF, 0xBDD7, 0x0000, 0xA514, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0140 (320) pixels
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xCE59, 0x0000, 0x0000, 0x0000, 0x0000, 0x4A69, 0xDEDB, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0150 (336) pixels
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xA534, 0x10A2, 0x0000, 0x0000, 0x0000, 0x39E7, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0160 (352) pixels
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x18E3, 0x0000, 0x0000, 0xAD75, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0170 (368) pixels
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xD6BA, 0x0000, 0x18C3, 0xDEDB, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0180 (384) pixels
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x9492, 0x0000, 0x4228, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0190 (400) pixels
0xFFFF, 0xFFFF, 0xFFFF, 0x4208, 0x0000, 0x0000, 0x0000, 0x0000, 0x2965, 0x9492, 0xA534, 0xB596, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x01A0 (416) pixels
0xFFFF, 0x8430, 0x52AA, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xAD55, 0x528A, 0x2945, 0x0841, 0x0841, 0x2124, 0x5AEB, 0xAD55, // 0x01B0 (432) pixels
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xD6BA, 0x2104, 0xEF7D, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0x94B2, 0xAD55, 0x6B6D, 0x0000, // 0x01C0 (448) pixels
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C51, 0xFFFF, 0xFFFF, 0xFFFF, 0x8410, 0x52AA, 0xFFFF, // 0x01D0 (464) pixels
0xFFFF, 0xFFFF, 0xFFFF, 0x738E, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7BCF, 0xFFFF, // 0x01E0 (480) pixels
0xFFFF, 0xFFFF, 0xE73C, 0x18C3, 0xEF7D, 0xFFFF, 0xFFFF, 0xFFFF, 0x18C3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x01F0 (496) pixels
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C51, 0xFFFF, 0xCE59, 0x31A6, 0xFFFF, 0xFFFF, 0xFFFF, 0xCE79, 0x0861, // 0x0200 (512) pixels
0x0000, 0x0000, 0x0000, 0x0000, 0x2124, 0x39E7, 0x31A6, 0x10A2, 0x0000, 0x0000, 0x0000, 0x0000, 0x1082, 0xDEFB, 0xFFFF, 0xFFFF, // 0x0210 (528) pixels
0xD69A, 0x2945, 0xFFFF, 0xFFFF, 0x18C3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0220 (544) pixels
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8430, 0x2965, 0xF79E, 0xFFFF, 0xFFFF, 0xB5B6, 0x0000, 0x0000, 0x0000, 0x1082, 0x9CF3, // 0x0230 (560) pixels
0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xDEFB, 0x5AEB, 0x0000, 0x0000, 0x0000, 0x0000, 0xCE59, 0xFFFF, 0xFFFF, 0x9492, 0x632C, // 0x0240 (576) pixels
0x2124, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0250 (592) pixels
0x0000, 0x0000, 0x0000, 0x9CF3, 0xFFFF, 0xFFFF, 0xCE59, 0x0000, 0x0000, 0x0000, 0x632C, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0260 (608) pixels
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xD6BA, 0x0861, 0x0000, 0x0000, 0x0000, 0xE71C, 0xFFFF, 0xFFFF, 0x2124, 0x0000, 0x0000, 0x0000, // 0x0270 (624) pixels
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2104, // 0x0280 (640) pixels
0xFFFF, 0xFFFF, 0xF7BE, 0x0841, 0x0000, 0x0000, 0x7BCF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0290 (656) pixels
0xFFFF, 0xFFFF, 0xF79E, 0x1082, 0x0000, 0x0000, 0x2104, 0xFFFF, 0xFFFF, 0xCE79, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x02A0 (672) pixels
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9492, 0xFFFF, 0xFFFF, 0x4A69, // 0x02B0 (688) pixels
0x0000, 0x0000, 0x4A49, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x02C0 (704) pixels
0xDEDB, 0x0000, 0x0000, 0x0000, 0x7BEF, 0xFFFF, 0xFFFF, 0x2104, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x02D0 (720) pixels
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xEF5D, 0xFFFF, 0xCE59, 0x0000, 0x0000, 0x0000, 0xF79E, // 0x02E0 (736) pixels
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x7BEF, 0x0000, // 0x02F0 (752) pixels
0x0000, 0x0000, 0xF7BE, 0xFFFF, 0x73AE, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0300 (768) pixels
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2104, 0xFFFF, 0xFFFF, 0x39E7, 0x0000, 0x0000, 0x6B6D, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0310 (784) pixels
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF7BE, 0x0020, 0x0000, 0x0000, 0x8430, // 0x0320 (800) pixels
0xFFFF, 0xC638, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0330 (816) pixels
0x0000, 0x0000, 0x4A49, 0xFFFF, 0xEF5D, 0x0000, 0x0000, 0x0000, 0xDEDB, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0340 (832) pixels
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x4A69, 0x0000, 0x0000, 0x2104, 0xFFFF, 0xF7BE, 0x0000, // 0x0350 (848) pixels
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x73AE, // 0x0360 (864) pixels
0xFFFF, 0xA534, 0x0000, 0x0000, 0x10A2, 0xFFFF, 0xFFFF, 0xFFFF, 0xA514, 0x2124, 0x39C7, 0xCE59, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0370 (880) pixels
0x7BEF, 0x18E3, 0x4A49, 0xEF7D, 0xFFFF, 0xFFFF, 0xA514, 0x0000, 0x0000, 0x0000, 0xEF7D, 0xFFFF, 0x0861, 0x0000, 0x0000, 0x0000, // 0x0380 (896) pixels
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9CD3, 0xFFFF, 0x6B6D, 0x0000, // 0x0390 (912) pixels
0x0000, 0x2965, 0xFFFF, 0xFFFF, 0xAD75, 0x0000, 0x0000, 0x0000, 0x0000, 0xE71C, 0xFFFF, 0xFFFF, 0x6B4D, 0x0000, 0x0000, 0x0000, // 0x03A0 (928) pixels
0x18E3, 0xFFFF, 0xFFFF, 0xD69A, 0x0000, 0x0000, 0x0000, 0xCE59, 0xFFFF, 0x2124, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x03B0 (944) pixels
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xAD55, 0xFFFF, 0x4208, 0x0000, 0x0000, 0x39E7, 0xFFFF, // 0x03C0 (960) pixels
0xFFFF, 0x2965, 0x0000, 0x0000, 0x0000, 0x0000, 0xE71C, 0xFFFF, 0xFFFF, 0x6B4D, 0x0000, 0x0000, 0x0000, 0x0000, 0xBDF7, 0xFFFF, // 0x03D0 (976) pixels
0xEF5D, 0x0000, 0x0000, 0x0000, 0xB596, 0xFFFF, 0x2965, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x03E0 (992) pixels
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xB5B6, 0xFFFF, 0x31A6, 0x0000, 0x0000, 0x39C7, 0xFFFF, 0xFFFF, 0x2124, 0x0000, // 0x03F0 (1008) pixels
0x0000, 0x4208, 0xD6BA, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x8C71, 0x10A2, 0x0000, 0x0000, 0xBDD7, 0xFFFF, 0xE73C, 0x0000, 0x0000, // 0x0400 (1024) pixels
0x0000, 0xAD55, 0xFFFF, 0x31A6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0410 (1040) pixels
0x0000, 0x0000, 0x0000, 0xB596, 0xFFFF, 0x3186, 0x0000, 0x0000, 0x2124, 0xFFFF, 0xFFFF, 0x9492, 0x0000, 0xC618, 0xFFFF, 0xFFFF, // 0x0420 (1056) pixels
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x4228, 0x0000, 0xF7BE, 0xFFFF, 0xC618, 0x0000, 0x0000, 0x0000, 0xAD75, 0xFFFF, // 0x0430 (1072) pixels
0x31A6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0440 (1088) pixels
0xAD75, 0xFFFF, 0x4228, 0x0000, 0x0000, 0x0000, 0xF79E, 0xFFFF, 0xFFFF, 0xAD75, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xA534, 0xE71C, // 0x0450 (1104) pixels
0xFFFF, 0xFFFF, 0xFFFF, 0xD6BA, 0xD6BA, 0xFFFF, 0xFFFF, 0x7BEF, 0x0000, 0x0000, 0x0000, 0xBDF7, 0xFFFF, 0x3186, 0x0000, 0x0000, // 0x0460 (1120) pixels
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xA514, 0xFFFF, 0x6B4D, // 0x0470 (1136) pixels
0x0000, 0x0000, 0x0000, 0xAD55, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0x8430, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0480 (1152) pixels
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x2945, 0x0000, 0x0000, 0x0000, 0xD6BA, 0xFFFF, 0x2945, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0490 (1168) pixels
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9492, 0xFFFF, 0x9CF3, 0x0000, 0x0000, 0x0000, // 0x04A0 (1184) pixels
0x2945, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xDEDB, 0x4228, 0x630C, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x04B0 (1200) pixels
0xCE59, 0x0000, 0x0000, 0x0000, 0x0000, 0xF7BE, 0xFFFF, 0x18E3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x04C0 (1216) pixels
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7BEF, 0xFFFF, 0xCE79, 0x0000, 0x0000, 0x0000, 0x0000, 0x9CD3, 0xFFFF, // 0x04D0 (1232) pixels
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xEF7D, 0xF7BE, 0xD6BA, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x18E3, 0x0000, 0x0000, // 0x04E0 (1248) pixels
0x0000, 0x18C3, 0xFFFF, 0xFFFF, 0x1082, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x04F0 (1264) pixels
0x0000, 0x0000, 0x0000, 0x0000, 0x632C, 0xFFFF, 0xFFFF, 0x0020, 0x0000, 0x0000, 0x0000, 0x0000, 0xDEDB, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0500 (1280) pixels
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x6B6D, 0x0000, 0x0000, 0x0000, 0x0000, 0x5AEB, 0xFFFF, // 0x0510 (1296) pixels
0xFFDF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0520 (1312) pixels
0x0000, 0x4A49, 0xFFFF, 0xFFFF, 0x7BCF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 0xD69A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0530 (1328) pixels
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x6B6D, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xD69A, 0xFFFF, 0xF7BE, 0x0000, 0x0000, // 0x0540 (1344) pixels
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x31A6, 0xFFFF, // 0x0550 (1360) pixels
0xFFFF, 0xFFFF, 0xB596, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C51, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFDF, 0xFFFF, 0xFFFF, 0xEF5D, 0xFFFF, // 0x0560 (1376) pixels
0xFFFF, 0xFFFF, 0x1082, 0x0000, 0x0000, 0x0000, 0x2965, 0xEF5D, 0xFFFF, 0xFFFF, 0xE73C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0570 (1392) pixels
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x18E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0580 (1408) pixels
0xE73C, 0x39C7, 0x0000, 0x0000, 0x632C, 0xF79E, 0xFFFF, 0xAD75, 0xBDF7, 0xFFFF, 0xFFFF, 0x630C, 0xFFFF, 0xFFDF, 0xDEDB, 0x0020, // 0x0590 (1424) pixels
0x0000, 0x0841, 0x738E, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xC638, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x05A0 (1440) pixels
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xCE59, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xEF5D, // 0x05B0 (1456) pixels
0xB5B6, 0x6B4D, 0x39E7, 0x39E7, 0x10A2, 0x18C3, 0x5ACB, 0x4A69, 0x0000, 0x3186, 0x39E7, 0x4A49, 0x8410, 0xCE59, 0xFFDF, 0xFFFF, // 0x05C0 (1472) pixels
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x630C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x05D0 (1488) pixels
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2945, 0x9492, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x05E0 (1504) pixels
0xFFFF, 0xFFFF, 0xF7BE, 0xE71C, 0xEF5D, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF7BE, // 0x05F0 (1520) pixels
0x4228, 0x2945, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0600 (1536) pixels
0x0000, 0x0000, 0xCE79, 0xFFFF, 0x5ACB, 0x52AA, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xDEFB, 0x8C71, 0x630C, 0x4A69, 0x4228, // 0x0610 (1552) pixels
0x4A49, 0x4228, 0x4A49, 0x52AA, 0x738E, 0xBDD7, 0xF7BE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xD69A, 0x2104, 0xB5B6, 0xFFFF, 0x5AEB, // 0x0620 (1568) pixels
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xCE59, 0xFFFF, // 0x0630 (1584) pixels
0xFFFF, 0xFFFF, 0x9492, 0x2965, 0xE73C, 0xFFFF, 0xFFFF, 0xF7BE, 0x18C3, 0x9CD3, 0xCE59, 0xC618, 0xE73C, 0xD6BA, 0xEF7D, 0xC618, // 0x0640 (1600) pixels
0xD6BA, 0xB5B6, 0x52AA, 0x5AEB, 0xFFFF, 0xFFFF, 0xFFFF, 0x9CF3, 0x2124, 0xEF5D, 0xFFFF, 0xFFFF, 0xFFFF, 0x5AEB, 0x0000, 0x0000, // 0x0650 (1616) pixels
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C51, 0xDEDB, 0xE73C, 0xEF5D, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0660 (1632) pixels
0xDEDB, 0x1082, 0x4228, 0x7BEF, 0x94B2, 0x4A49, 0xFFFF, 0xFFFF, 0x8C71, 0xDEFB, 0x7BCF, 0xF79E, 0x632C, 0xFFFF, 0xFFFF, 0xEF5D, // 0x0670 (1648) pixels
0x31A6, 0xA534, 0x630C, 0x2124, 0x4A49, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xDEDB, 0xE73C, 0xC638, 0x4228, 0x0000, // 0x0680 (1664) pixels
0x0000, 0x0000, 0x1082, 0xEF7D, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x8C51, 0x0000, 0x0000, // 0x0690 (1680) pixels
0x0000, 0x0000, 0x39E7, 0xFFFF, 0xFFFF, 0xA514, 0xE73C, 0x9492, 0xFFDF, 0x7BEF, 0xFFFF, 0xFFFF, 0xF7BE, 0x0000, 0x0000, 0x0000, // 0x06A0 (1696) pixels
0x0000, 0x18C3, 0xEF5D, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x8C71, 0x0000, 0x0000, 0xD6BA, // 0x06B0 (1712) pixels
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x8410, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0841, // 0x06C0 (1728) pixels
0x630C, 0xA514, 0xCE59, 0xE71C, 0xE71C, 0xE73C, 0xDEDB, 0xC618, 0x9492, 0x4228, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0841, // 0x06D0 (1744) pixels
0xE73C, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x4A49, 0x31A6, 0xFFFF, 0xFFFF, 0x4A49, 0xD6BA, // 0x06E0 (1760) pixels
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x8410, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x06F0 (1776) pixels
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 0xEF5D, 0xFFFF, // 0x0700 (1792) pixels
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x6B4D, 0xAD55, 0xFFFF, 0xDEDB, 0x6B6D, 0xFFFF, 0x4208, 0x0000, 0x0000, 0xDEFB, 0xFFFF, 0xFFFF, // 0x0710 (1808) pixels
0xFFFF, 0xFFFF, 0x2104, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0720 (1824) pixels
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xB596, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0730 (1840) pixels
0x738E, 0x0000, 0x0000, 0xBDD7, 0xFFFF, 0x6B4D, 0x528A, 0x0000, 0x0000, 0x0000, 0x0000, 0xDEDB, 0xFFFF, 0xFFFF, 0xFFFF, 0x2945, // 0x0740 (1856) pixels
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0750 (1872) pixels
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xBDD7, 0xFFFF, 0xFFFF, 0xFFFF, 0x6B6D, 0x0000, 0x0000, 0x0000, // 0x0760 (1888) pixels
0x0000, 0xBDF7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xF7BE, 0xFFFF, 0xFFFF, 0x0020, 0x0000, 0x0000, 0x0000, // 0x0770 (1904) pixels
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0780 (1920) pixels
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6B6D, 0xFFFF, 0xFFFF, 0x8C51, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0790 (1936) pixels
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9CD3, 0xFFFF, 0xFFFF, 0x8410, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x07A0 (1952) pixels
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x07B0 (1968) pixels
0x0000, 0x0000, 0x0000, 0xF7BE, 0xFFFF, 0xFFDF, 0x2965, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x07C0 (1984) pixels
0x0000, 0xA534, 0xFFFF, 0xFFFF, 0xA534, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x07D0 (2000) pixels
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x07E0 (2016) pixels
0x2124, 0xF7BE, 0xFFFF, 0xFFFF, 0x31A6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5AEB, 0xE73C, 0xAD75, // 0x07F0 (2032) pixels
0x39E7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0800 (2048) pixels
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x73AE, // 0x0810 (2064) pixels
0xCE59, 0xCE79, 0x0841, 0x0000, 0x0000, 0x0000
};

View file

@ -52,7 +52,12 @@ void dac2SetValue(uint16_t value);
__IO long long millis = 0;
float gain = 1;
float afGain = 1.0;
float afGainLast = 2.0;
float afGainStep = 0.1;
float afGainMax = 25.0;
uint16_t maxAmplitude = 0;
float fftFilterCoeficient[FFT_BUFFER_SIZE];
float filterTemp[FFT_BUFFER_SIZE];
@ -61,7 +66,7 @@ uint16_t filterKernelLength = 100; //what's a good value? How does it relate to
uint16_t menuPos = 0;
uint16_t menuEncoderTicks = 0;
uint16_t menuLastPos = 1;
uint16_t menuCount = 10;
uint16_t menuCount = 11;
uint32_t frequencyDialMultiplier = 1;
long vfoAFrequency = 7236400;
@ -78,6 +83,7 @@ uint8_t modeLast = 2;
float agcLevel = 0;
float agcScale = 160; //Higher is lower volume.. for now
int ifShift = 0;
float fftMaxMaxMax = 20;
@ -343,6 +349,9 @@ int isFwd;
samplesA[sampleIndex*2] = ((uhADCxConvertedValue - 2048)/4096.0); // - 2048;
samplesA[sampleIndex*2 + 1] = ((uhADCxConvertedValue2 - 2048)/4096.0); // - 2048;//0.0;
if(uhADCxConvertedValue > 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;
}