From 002ec200ad6df0d4f5eccbf5b2da74dc1e9aae84 Mon Sep 17 00:00:00 2001 From: Piotr Esden-Tempski Date: Mon, 22 Feb 2010 12:59:15 +0100 Subject: Added proper gamma correction tables. --- examples/mb525/pwmleds/pwmleds.c | 146 ++++++++++++++++++++++++++++++--------- 1 file changed, 114 insertions(+), 32 deletions(-) diff --git a/examples/mb525/pwmleds/pwmleds.c b/examples/mb525/pwmleds/pwmleds.c index c297f0d..f8a609e 100644 --- a/examples/mb525/pwmleds/pwmleds.c +++ b/examples/mb525/pwmleds/pwmleds.c @@ -21,39 +21,121 @@ #include #include +#define GAMMA_3_0 + +/* + * Gamma correction table + * + * The nonlinear tables are calculating with the function: + * Iout = Iin ** gamma + */ static const uint16_t gamma_table[] = { - 1, 4, 9, 17, 26, 37, 51, 67, - 84, 104, 126, 149, 175, 203, 233, 265, - 299, 334, 372, 412, 454, 499, 545, 593, - 643, 695, 749, 805, 864, 924, 986, 1050, - 1116, 1185, 1255, 1327, 1402, 1478, 1556, 1637, - 1719, 1803, 1890, 1978, 2068, 2161, 2255, 2352, - 2450, 2550, 2653, 2757, 2864, 2972, 3082, 3195, - 3309, 3426, 3544, 3664, 3787, 3911, 4038, 4166, - 4296, 4429, 4563, 4700, 4838, 4978, 5121, 5265, - 5411, 5560, 5710, 5862, 6017, 6173, 6331, 6492, - 6654, 6818, 6985, 7153, 7323, 7495, 7670, 7846, - 8024, 8204, 8387, 8571, 8757, 8945, 9135, 9327, - 9521, 9718, 9916, 10116, 10318, 10522, 10728, 10936, - 11146, 11358, 11572, 11788, 12006, 12226, 12448, 12672, - 12897, 13125, 13355, 13587, 13821, 14057, 14294, 14534, - 14776, 15020, 15265, 15513, 15763, 16014, 16268, 16524, - 16781, 17041, 17302, 17566, 17831, 18099, 18368, 18640, - 18913, 19189, 19466, 19745, 20027, 20310, 20595, 20883, - 21172, 21463, 21756, 22051, 22349, 22648, 22949, 23252, - 23557, 23864, 24173, 24484, 24797, 25112, 25429, 25748, - 26069, 26391, 26716, 27043, 27372, 27702, 28035, 28370, - 28707, 29045, 29386, 29728, 30073, 30419, 30768, 31118, - 31471, 31825, 32182, 32540, 32900, 33263, 33627, 33993, - 34361, 34731, 35104, 35478, 35854, 36232, 36612, 36994, - 37378, 37764, 38152, 38542, 38933, 39327, 39723, 40121, - 40521, 40922, 41326, 41732, 42139, 42549, 42960, 43374, - 43789, 44207, 44626, 45048, 45471, 45896, 46324, 46753, - 47184, 47617, 48052, 48490, 48929, 49370, 49813, 50258, - 50705, 51154, 51604, 52057, 52512, 52969, 53428, 53888, - 54351, 54816, 55282, 55751, 56222, 56694, 57169, 57645, - 58123, 58604, 59086, 59570, 60057, 60545, 61035, 61527, - 62021, 62517, 63016, 63516, 64018, 64521, 65027, 65535 +#ifdef GAMMA_LINEAR + 1, 4, 9, 17, 26, 37, 51, 67, + 84, 104, 126, 149, 175, 203, 233, 265, + 299, 334, 372, 412, 454, 499, 545, 593, + 643, 695, 749, 805, 864, 924, 986, 1050, + 1116, 1185, 1255, 1327, 1402, 1478, 1556, 1637, + 1719, 1803, 1890, 1978, 2068, 2161, 2255, 2352, + 2450, 2550, 2653, 2757, 2864, 2972, 3082, 3195, + 3309, 3426, 3544, 3664, 3787, 3911, 4038, 4166, + 4296, 4429, 4563, 4700, 4838, 4978, 5121, 5265, + 5411, 5560, 5710, 5862, 6017, 6173, 6331, 6492, + 6654, 6818, 6985, 7153, 7323, 7495, 7670, 7846, + 8024, 8204, 8387, 8571, 8757, 8945, 9135, 9327, + 9521, 9718, 9916, 10116, 10318, 10522, 10728, 10936, + 11146, 11358, 11572, 11788, 12006, 12226, 12448, 12672, + 12897, 13125, 13355, 13587, 13821, 14057, 14294, 14534, + 14776, 15020, 15265, 15513, 15763, 16014, 16268, 16524, + 16781, 17041, 17302, 17566, 17831, 18099, 18368, 18640, + 18913, 19189, 19466, 19745, 20027, 20310, 20595, 20883, + 21172, 21463, 21756, 22051, 22349, 22648, 22949, 23252, + 23557, 23864, 24173, 24484, 24797, 25112, 25429, 25748, + 26069, 26391, 26716, 27043, 27372, 27702, 28035, 28370, + 28707, 29045, 29386, 29728, 30073, 30419, 30768, 31118, + 31471, 31825, 32182, 32540, 32900, 33263, 33627, 33993, + 34361, 34731, 35104, 35478, 35854, 36232, 36612, 36994, + 37378, 37764, 38152, 38542, 38933, 39327, 39723, 40121, + 40521, 40922, 41326, 41732, 42139, 42549, 42960, 43374, + 43789, 44207, 44626, 45048, 45471, 45896, 46324, 46753, + 47184, 47617, 48052, 48490, 48929, 49370, 49813, 50258, + 50705, 51154, 51604, 52057, 52512, 52969, 53428, 53888, + 54351, 54816, 55282, 55751, 56222, 56694, 57169, 57645, + 58123, 58604, 59086, 59570, 60057, 60545, 61035, 61527, + 62021, 62517, 63016, 63516, 64018, 64521, 65027, 65535 +#else +#ifdef GAMMA_1_3 + // Gamma 1.3 + 0, 1, 2, 4, 6, 8, 10, 13, + 15, 17, 20, 23, 25, 28, 31, 34, + 37, 40, 43, 46, 49, 52, 56, 59, + 62, 66, 69, 73, 76, 80, 83, 87, + 91, 94, 98, 102, 105, 109, 113, 117, + 121, 125, 129, 133, 137, 141, 145, 149, + 153, 157, 162, 166, 170, 174, 179, 183, + 187, 192, 196, 200, 205, 209, 214, 218, + 223, 227, 232, 237, 241, 246, 250, 255, + 260, 264, 269, 274, 279, 283, 288, 293, + 298, 303, 308, 312, 317, 322, 327, 332, + 337, 342, 347, 352, 357, 362, 367, 372, + 378, 383, 388, 393, 398, 403, 408, 414, + 419, 424, 429, 435, 440, 445, 451, 456, + 461, 467, 472, 477, 483, 488, 494, 499, + 505, 510, 516, 521, 527, 532, 538, 543, + 549, 554, 560, 566, 571, 577, 582, 588, + 594, 599, 605, 611, 617, 622, 628, 634, + 640, 645, 651, 657, 663, 669, 674, 680, + 686, 692, 698, 704, 710, 716, 722, 727, + 733, 739, 745, 751, 757, 763, 769, 775, + 781, 788, 794, 800, 806, 812, 818, 824, + 830, 836, 842, 849, 855, 861, 867, 873, + 880, 886, 892, 898, 904, 911, 917, 923, + 930, 936, 942, 949, 955, 961, 968, 974, + 980, 987, 993, 999, 1006, 1012, 1019, 1025, + 1032, 1038, 1044, 1051, 1057, 1064, 1070, 1077, + 1083, 1090, 1096, 1103, 1110, 1116, 1123, 1129, + 1136, 1142, 1149, 1156, 1162, 1169, 1176, 1182, + 1189, 1196, 1202, 1209, 1216, 1222, 1229, 1236, + 1242, 1249, 1256, 1263, 1269, 1276, 1283, 1290, + 1297, 1303, 1310, 1317, 1324, 1331, 1337, 1344 +#else +#ifdef GAMMA_3_0 + // gamma = 3.0014 + 0, 1, 4, 9, 16, 25, 36, 49, + 64, 81, 100, 121, 145, 170, 197, 226, + 257, 290, 325, 362, 402, 443, 486, 531, + 579, 628, 679, 732, 788, 845, 904, 966, + 1029, 1094, 1162, 1231, 1303, 1376, 1451, 1529, + 1608, 1690, 1773, 1859, 1946, 2036, 2127, 2221, + 2317, 2414, 2514, 2615, 2719, 2825, 2932, 3042, + 3154, 3267, 3383, 3501, 3621, 3742, 3866, 3992, + 4120, 4250, 4382, 4516, 4651, 4789, 4929, 5071, + 5215, 5361, 5509, 5659, 5811, 5965, 6121, 6279, + 6439, 6601, 6766, 6932, 7100, 7270, 7442, 7616, + 7793, 7971, 8151, 8333, 8518, 8704, 8892, 9083, + 9275, 9469, 9666, 9864, 10065, 10267, 10472, 10678, + 10887, 11097, 11310, 11524, 11741, 11959, 12180, 12403, + 12627, 12854, 13082, 13313, 13546, 13781, 14017, 14256, + 14497, 14740, 14984, 15231, 15480, 15731, 15984, 16239, + 16496, 16755, 17016, 17279, 17544, 17811, 18080, 18351, + 18624, 18899, 19176, 19455, 19736, 20019, 20304, 20592, + 20881, 21172, 21465, 21761, 22058, 22357, 22658, 22962, + 23267, 23574, 23884, 24195, 24509, 24824, 25142, 25461, + 25783, 26106, 26432, 26759, 27089, 27420, 27754, 28090, + 28427, 28767, 29109, 29452, 29798, 30146, 30495, 30847, + 31201, 31557, 31915, 32275, 32636, 33000, 33366, 33734, + 34104, 34476, 34850, 35226, 35604, 35984, 36366, 36750, + 37136, 37524, 37915, 38307, 38701, 39097, 39495, 39896, + 40298, 40702, 41108, 41517, 41927, 42339, 42754, 43170, + 43589, 44009, 44431, 44856, 45282, 45711, 46141, 46574, + 47008, 47445, 47884, 48324, 48767, 49212, 49658, 50107, + 50558, 51010, 51465, 51922, 52381, 52841, 53304, 53769, + 54236, 54705, 55176, 55649, 56124, 56601, 57080, 57561, + 58044, 58529, 59016, 59505, 59996, 60489, 60984, 61481, + 61981, 62482, 62985, 63490, 63998, 64507, 65018, 65531 +#endif +#endif +#endif }; /* Set STM32 to 72 MHz. */ -- cgit v1.2.3