Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed LCD_DISCO_F469NI BSP_DISCO_F469NI
Revision 1:23e3deac03b1, committed 2022-03-05
- Comitter:
- dkm1978
- Date:
- Sat Mar 05 17:29:25 2022 +0000
- Parent:
- 0:dc8fbcb55376
- Commit message:
- q
Changed in this revision
--- a/BSP_DISCO_F469NI.lib Thu Mar 03 18:13:47 2022 +0000 +++ b/BSP_DISCO_F469NI.lib Sat Mar 05 17:29:25 2022 +0000 @@ -1,1 +1,1 @@ -https://developer.mbed.org/teams/ST/code/BSP_DISCO_F469NI/#27609b3a44ed +https://os.mbed.com/users/dkm1978/code/BSP_DISCO_F469NI/#bca478ba7b93
--- a/main.cpp Thu Mar 03 18:13:47 2022 +0000
+++ b/main.cpp Sat Mar 05 17:29:25 2022 +0000
@@ -1,50 +1,304 @@
+/*******************************************************************************/
+
#include "mbed.h"
#include "LCD_DISCO_F469NI.h"
+#include "table.h"
+
+/*******************************************************************************/
LCD_DISCO_F469NI lcd;
+DigitalOut led1(LED1);
-DigitalOut led1(LED1);
+/*******************************************************************************/
+
+volatile uint8_t mat_A, mat_B, mat_C, mat_D, mat_E, mat_F ;
+
+uint8_t tb_fact1[4]; // circle prescale factors 4 circles top and 4 mirroring to bottom
+uint8_t tb_fact2[4]; //
+
+uint8_t multable[128][256]; // a prescale table
+
+uint8_t wynik_X[8]; // X poss first 8 plots
+uint8_t wynik_Y[8]; // Y poss first 8 plots
+
+uint8_t plot_1X[128]; // first buffer 128 plot X values
+uint8_t plot_1Y[128]; // first buffer 128 plot Y values
+uint8_t plot_2X[128]; // 2nd buffer 128 plot X values
+uint8_t plot_2Y[128]; // 2nd buffer 128 plot Y values
+
+void calculate_matrix()
+{
+ volatile uint8_t t1, t2, t3, t4, t5, t6, t7, t8, t9, t10 ;
+ static volatile uint16_t delta_x = 0x0100;
+ static volatile uint16_t delta_y = 0xff00;
+ static volatile uint16_t delta_z = 0xff00;
+
+ static volatile uint16_t angle_x = 0x00;
+ static volatile uint16_t angle_y = 0x00;
+ static volatile uint16_t angle_z = 0x00;
+
+ static volatile uint8_t sx;
+ static volatile uint8_t sy;
+ static volatile uint8_t sz;
+
+
+
+ /* update_angles */
+ angle_x = angle_x + delta_x;
+ angle_y = angle_y + delta_y;
+ angle_z = angle_z + delta_z;
+
+ sx = (uint8_t) ((angle_x)>>8) & 0xFF;
+ sy = (uint8_t) ((angle_y)>>8) & 0xFF;
+ sz = (uint8_t) ((angle_z)>>8) & 0xFF;
+
+ t1 = sy-sz;
+ t2 = sy+sz;
+ t3 = sx+sz;
+ t4 = sx-sz;
+ t5 = sx+sy+sz;
+ t6 = sx-sy+sz;
+ t7 = sx+sy-sz;
+ t8 = sy+sz-sx;
+ t9 = sy-sx;
+ t10 = sy+sx;
+
+
+
+
+ mat_A = (uint8_t) ((sinus[64 + t1] + sinus[64 + t2]) >> 8) & 0xFF;
+ mat_B = (uint8_t) ((sinus[t1] - sinus[t2]) >> 8) & 0xFF;
+ mat_C = (uint8_t) ((sinus[128+sy] + sinus[128+sy]) >> 8) & 0xFF;
+ mat_D = (uint8_t) ((sinus[t3] - sinus[t4] + ((sinus[64+t6] - sinus[64+t5] + sinus[64+t8] - sinus[64+t7]) / 2)) >> 8) & 0xFF;
+ mat_E = (uint8_t) ((sinus[64+t3] + sinus[64+t4] + ((sinus[t5] - sinus[t6] - sinus[t7] - sinus[t8]) / 2)) >> 8) & 0xFF;
+ mat_F = (uint8_t) ((sinus[128 + t9] - sinus[128 + t10]) >> 8) & 0xFF;
+
+
+
+}
+//====================================================================================================
+void insert_dots()
+{
+ volatile uint8_t i, i2, i3, dana, t9, t10, sx, sy, sz;
+ volatile uint8_t t_x;
+ volatile uint16_t wynik;
+
+
+ t_x = 0x48;
+ i2 = 0;
+ for(i=3 ; i!=0xff ; i--)
+ {
+ t_x = t_x - 0x10;
+ sx = t_x & 0x3F;
+ sy = 0;
+ sz = 0;
+
+//;---------------------
+//; F = invsin(t9)-invsin(t10)
+//;---------------------
+ t9 = sy-sx;
+ t10 = sy+sx;
+ mat_F = (uint8_t) ((sinus[128 + t9] - sinus[128 + t10]) >> 8) & 0xFF;
+
+#ifdef debug_matrix
+ printf("mat_F = 0x%X \n", mat_F);
+#endif
+
+ tb_fact1[i] = mat_F;
+ tb_fact2[i2] = tb_fact1[i];
+ i2++;
+ };
+ for(i=0 ; i<128 ; i++)
+ {
+ plot_1X[i];
+ plot_1Y[i];
+ plot_2X[i];
+ plot_2Y[i];
+ }
+ dana = 0;
+ for(i=0 ; i<128 ; i++)
+ {
+ wynik = 0;
+ i3 = 0;
+ for(i2=0 ; i2<128 ; i2++)
+ {
+ multable[i][i2] = (uint8_t) (((wynik) >> 8) & 0xFF);
+ wynik = wynik + dana;
+ i3--;
+ multable[i][i3] = (uint8_t) (0 - multable[i][i2]);
+ }
+ dana = dana +2;
+ };
+}
+//===========================================================================
+void calc_all_dots_01()
+{
+ volatile uint8_t row1, row2, i, i2, i3;
+ volatile uint8_t add_x , add_y ;
+
+ i2 = 0;
+ for(i3 = 0; i3 < 4 ; i3++)
+ {
+ row1 = tb_fact1[i3];
+
+ add_x = multable[row1][mat_C];
+ add_y = multable[row1][mat_F];
+
+ row2 = tb_fact2[i3];
+
+
+ for(i = 0; i < 8 ; i++)
+ {
+ plot_1X[i2] = ((multable[row2][wynik_X[i]] + add_x) ^ 128);
+ plot_1X[i2+1] = (plot_1X[i2] ^ 255);
+ plot_1Y[i2] = ((multable[row2][wynik_Y[i]] + add_y) ^ 128);
+ plot_1Y[i2+1] = (plot_1Y[i2] ^ 255);
+
+ plot_1X[i2+2] = ((multable[row2][wynik_X[i]] - add_x) ^ 128);
+ plot_1X[i2+3] = (plot_1X[i2+2] ^ 255);
+ plot_1Y[i2+2] = ((multable[row2][wynik_Y[i]] - add_y) ^ 128);
+ plot_1Y[i2+3] = (plot_1Y[i2+2] ^ 255);
+
+ i2 = i2 + 4;
+ }
+ }
+}
+//================================================================================
+void calc_all_dots_02()
+{
+ volatile uint8_t row1, row2, i, i2, i3;
+ volatile uint8_t add_x , add_y ;
+
+ i2 = 0;
+ // 4 times calculate and mirroring circles = 4*16*2 = 128 vectordots
+ for(i3 = 0; i3 < 4 ; i3++)
+ {
+ row1 = tb_fact1[i3]; // prescale factor for X/Y offset data (add_x;add_y)
+
+ add_x = multable[row1][mat_C]; // X offset after prescale circle = possitoin X;Y 0;0
+ add_y = multable[row1][mat_F]; // Y offset after prescale circle
+
+ row2 = tb_fact2[i3]; // prescale factor for actual circle
+
+ // calculate 32 X;Y values of plots in mirroring 2nd circles
+ for(i = 0; i < 8 ; i++)
+ {
+ plot_2X[i2] = ((multable[row2][wynik_X[i]] + add_x) ^ 128);
+ plot_2X[i2+1] = (plot_2X[i2] ^ 255);
+ plot_2Y[i2] = ((multable[row2][wynik_Y[i]] + add_y) ^ 128);
+ plot_2Y[i2+1] = (plot_2Y[i2] ^ 255);
+
+ plot_2X[i2+2] = ((multable[row2][wynik_X[i]] - add_x) ^ 128);
+ plot_2X[i2+3] = (plot_2X[i2+2] ^ 255);
+ plot_2Y[i2+2] = ((multable[row2][wynik_Y[i]] - add_y) ^ 128);
+ plot_2Y[i2+3] = (plot_2Y[i2+2] ^ 255);
+
+ i2 = i2 + 4;
+ }
+ }
+}
+//==================================================================================
+void calculate_8_dots()
+{
+ volatile uint8_t row1, row2;
+ volatile uint8_t v1, v2, v4, v5;
+ volatile uint8_t i, i2;
+
+ // calculate first 8 dots to following prescale and mirroring
+
+ i2 = 0;
+ for(i = 0 ; i < 4 ; i++)
+ {
+
+ row1 = tb_fact1[i];
+ row2 = tb_fact2[i];
+
+ v5 = multable[row1][mat_E];
+ v2 = multable[row1][mat_B];
+ v4 = multable[row2][mat_D];
+ v1 = multable[row2][mat_A];
+
+ wynik_X[i2] = v1 + v2;
+ wynik_Y[i2] = v4 + v5;
+ wynik_X[i2+1] = v1 - v2;
+ wynik_Y[i2+1] = v4 - v5;
+
+ #ifdef debug_matrix
+ printf("wynik_X[%d] = 0x%X \n", i2 , wynik_X[i2]);
+ printf("wynik_Y[%d] = 0x%X \n", i2 , wynik_Y[i2]);
+ printf("wynik_X[%d] = 0x%X \n", i2+1 , wynik_X[i2+1]);
+ printf("wynik_Y[%d] = 0x%X \n", i2+1 , wynik_Y[i2+1]);
+ #endif
+
+ #ifdef show_first_pixels
+ putpixel(wynik_X[i2] ^ 128 , wynik_Y[i2] ^ 128 , WHITE);
+ putpixel(wynik_X[i2+1] ^ 128 , wynik_Y[i2+1] ^ 128 , WHITE);
+ #endif
+/*
+ $7A $15 ; $7A $E7 ; $68 $42 ; $66 $BA
+ $46 $66 ; $42 $98 ; $19 $7A ; $15 $86
+*/
+ i2 = i2 +2;
+
+ }
+}
+
+
int main()
{
led1 = 1;
+ lcd.Clear(0);
+ lcd.SetTextColor(LCD_COLOR_WHITE);
+ int x, y, color, angle = 0;
+ uint8_t i, wait=10;
+ insert_dots();
+
- lcd.DisplayStringAt(0, LINE(1), (uint8_t *)"MBED EXAMPLE", CENTER_MODE);
- wait(1);
+
while(1)
{
- lcd.Clear(LCD_COLOR_BLUE);
- lcd.SetBackColor(LCD_COLOR_BLUE);
- lcd.SetTextColor(LCD_COLOR_WHITE);
- wait(0.3);
- lcd.DisplayStringAt(0, LINE(4), (uint8_t *)"DISCOVERY", CENTER_MODE);
- lcd.DisplayStringAt(0, LINE(5), (uint8_t *)"STM32F469NI", CENTER_MODE);
- wait(1);
+
+ calculate_matrix();
+ calculate_8_dots();
+ calc_all_dots_01(); // store plots values in first buffer
+
+
+ // clear old plots
+ for(i = 0; i < 128 ; i++)
+ {
+ lcd.DrawPixel(plot_2X[i] +272 , plot_2Y[i]+112 , 0);
+ }
+ // set the new plots
+ for(i = 0; i < 128 ; i++)
+ {
+ lcd.DrawPixel(plot_1X[i] +272 , plot_1Y[i]+112, LCD_COLOR_WHITE);
+ }
+
+ calculate_matrix();
+ calculate_8_dots();
+ calc_all_dots_02(); // store plots values in 2nd buffer
+ wait_ms(10);
+
+ // clear old plots
+ for(i = 0; i < 128 ; i++)
+ {
+ lcd.DrawPixel(plot_1X[i]+272 , plot_1Y[i]+112 , 0);
+ }
+ // set the new plots
+ for(i = 0; i < 128 ; i++)
+ {
+ lcd.DrawPixel(plot_2X[i]+272 , plot_2Y[i]+112 , LCD_COLOR_WHITE);
+ }
+
+ while (!(LTDC->CDSR & LTDC_CDSR_VSYNCS));
- lcd.Clear(LCD_COLOR_GREEN);
+
- lcd.SetTextColor(LCD_COLOR_BLUE);
- lcd.FillRect(10, 20, 50, 50);
- wait(0.1);
- lcd.SetTextColor(LCD_COLOR_BROWN);
- lcd.FillCircle(80, 80, 50);
- wait(0.1);
- lcd.SetTextColor(LCD_COLOR_YELLOW);
- lcd.FillEllipse(150, 150, 50, 100);
- wait(0.1);
- lcd.SetTextColor(LCD_COLOR_RED);
- lcd.FillCircle(200, 200, 40);
- wait(1);
-
- lcd.SetBackColor(LCD_COLOR_ORANGE);
- lcd.SetTextColor(LCD_COLOR_CYAN);
- BSP_LCD_SetFont(&Font20);
- lcd.DisplayStringAt(0, LINE(7), (uint8_t *)"HAVE FUN !!!", CENTER_MODE);
- wait(1);
-
led1 = !led1;
- wait(0.5);
+ wait_ms(25);
+
}
}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/table.h Sat Mar 05 17:29:25 2022 +0000
@@ -0,0 +1,67 @@
+static const signed int sinus[] =
+{
+0x000000C7, 0x00000256, 0x000003E5, 0x00000573, 0x00000700, 0x0000088C, 0x00000A16, 0x00000B9F,
+0x00000D27, 0x00000EAC, 0x0000102F, 0x000011B0, 0x0000132D, 0x000014A8, 0x00001620, 0x00001794,
+0x00001905, 0x00001A71, 0x00001BDA, 0x00001D3F, 0x00001E9E, 0x00001FFA, 0x00002150, 0x000022A1,
+0x000023ED, 0x00002533, 0x00002673, 0x000027AE, 0x000028E2, 0x00002A10, 0x00002B38, 0x00002C59,
+0x00002D73, 0x00002E86, 0x00002F92, 0x00003097, 0x00003194, 0x00003289, 0x00003377, 0x0000345D,
+0x0000353A, 0x00003610, 0x000036DD, 0x000037A1, 0x0000385D, 0x00003911, 0x000039BB, 0x00003A5D,
+0x00003AF6, 0x00003B85, 0x00003C0C, 0x00003C89, 0x00003CFD, 0x00003D67, 0x00003DC8, 0x00003E20,
+0x00003E6D, 0x00003EB2, 0x00003EEC, 0x00003F1D, 0x00003F44, 0x00003F61, 0x00003F75, 0x00003F7F,
+0x00003F7F, 0x00003F75, 0x00003F61, 0x00003F44, 0x00003F1D, 0x00003EEC, 0x00003EB2, 0x00003E6D,
+0x00003E20, 0x00003DC8, 0x00003D67, 0x00003CFD, 0x00003C89, 0x00003C0C, 0x00003B85, 0x00003AF6,
+0x00003A5D, 0x000039BB, 0x00003911, 0x0000385D, 0x000037A1, 0x000036DD, 0x00003610, 0x0000353A,
+0x0000345D, 0x00003377, 0x00003289, 0x00003194, 0x00003097, 0x00002F92, 0x00002E86, 0x00002D73,
+0x00002C59, 0x00002B38, 0x00002A10, 0x000028E2, 0x000027AE, 0x00002673, 0x00002533, 0x000023ED,
+0x000022A1, 0x00002150, 0x00001FFA, 0x00001E9E, 0x00001D3F, 0x00001BDA, 0x00001A71, 0x00001905,
+0x00001794, 0x00001620, 0x000014A8, 0x0000132D, 0x000011B0, 0x0000102F, 0x00000EAC, 0x00000D27,
+0x00000B9F, 0x00000A16, 0x0000088C, 0x00000700, 0x00000573, 0x000003E5, 0x00000256, 0x000000C7,
+0xFFFFFF39, 0xFFFFFDAA, 0xFFFFFC1B, 0xFFFFFA8D, 0xFFFFF900, 0xFFFFF774, 0xFFFFF5EA, 0xFFFFF461,
+0xFFFFF2D9, 0xFFFFF154, 0xFFFFEFD1, 0xFFFFEE50, 0xFFFFECD3, 0xFFFFEB58, 0xFFFFE9E0, 0xFFFFE86C,
+0xFFFFE6FB, 0xFFFFE58F, 0xFFFFE426, 0xFFFFE2C1, 0xFFFFE162, 0xFFFFE006, 0xFFFFDEB0, 0xFFFFDD5F,
+0xFFFFDC13, 0xFFFFDACD, 0xFFFFD98D, 0xFFFFD852, 0xFFFFD71E, 0xFFFFD5F0, 0xFFFFD4C8, 0xFFFFD3A7,
+0xFFFFD28D, 0xFFFFD17A, 0xFFFFD06E, 0xFFFFCF69, 0xFFFFCE6C, 0xFFFFCD77, 0xFFFFCC89, 0xFFFFCBA3,
+0xFFFFCAC6, 0xFFFFC9F0, 0xFFFFC923, 0xFFFFC85F, 0xFFFFC7A3, 0xFFFFC6EF, 0xFFFFC645, 0xFFFFC5A3,
+0xFFFFC50A, 0xFFFFC47B, 0xFFFFC3F4, 0xFFFFC377, 0xFFFFC303, 0xFFFFC299, 0xFFFFC238, 0xFFFFC1E0,
+0xFFFFC193, 0xFFFFC14E, 0xFFFFC114, 0xFFFFC0E3, 0xFFFFC0BC, 0xFFFFC09F, 0xFFFFC08B, 0xFFFFC081,
+0xFFFFC081, 0xFFFFC08B, 0xFFFFC09F, 0xFFFFC0BC, 0xFFFFC0E3, 0xFFFFC114, 0xFFFFC14E, 0xFFFFC193,
+0xFFFFC1E0, 0xFFFFC238, 0xFFFFC299, 0xFFFFC303, 0xFFFFC377, 0xFFFFC3F4, 0xFFFFC47B, 0xFFFFC50A,
+0xFFFFC5A3, 0xFFFFC645, 0xFFFFC6EF, 0xFFFFC7A3, 0xFFFFC85F, 0xFFFFC923, 0xFFFFC9F0, 0xFFFFCAC6,
+0xFFFFCBA3, 0xFFFFCC89, 0xFFFFCD77, 0xFFFFCE6C, 0xFFFFCF69, 0xFFFFD06E, 0xFFFFD17A, 0xFFFFD28D,
+0xFFFFD3A7, 0xFFFFD4C8, 0xFFFFD5F0, 0xFFFFD71E, 0xFFFFD852, 0xFFFFD98D, 0xFFFFDACD, 0xFFFFDC13,
+0xFFFFDD5F, 0xFFFFDEB0, 0xFFFFE006, 0xFFFFE162, 0xFFFFE2C1, 0xFFFFE426, 0xFFFFE58F, 0xFFFFE6FB,
+0xFFFFE86C, 0xFFFFE9E0, 0xFFFFEB58, 0xFFFFECD3, 0xFFFFEE50, 0xFFFFEFD1, 0xFFFFF154, 0xFFFFF2D9,
+0xFFFFF461, 0xFFFFF5EA, 0xFFFFF774, 0xFFFFF900, 0xFFFFFA8D, 0xFFFFFC1B, 0xFFFFFDAA, 0xFFFFFF39,
+0x000000C7, 0x00000256, 0x000003E5, 0x00000573, 0x00000700, 0x0000088C, 0x00000A16, 0x00000B9F,
+0x00000D27, 0x00000EAC, 0x0000102F, 0x000011B0, 0x0000132D, 0x000014A8, 0x00001620, 0x00001794,
+0x00001905, 0x00001A71, 0x00001BDA, 0x00001D3F, 0x00001E9E, 0x00001FFA, 0x00002150, 0x000022A1,
+0x000023ED, 0x00002533, 0x00002673, 0x000027AE, 0x000028E2, 0x00002A10, 0x00002B38, 0x00002C59,
+0x00002D73, 0x00002E86, 0x00002F92, 0x00003097, 0x00003194, 0x00003289, 0x00003377, 0x0000345D,
+0x0000353A, 0x00003610, 0x000036DD, 0x000037A1, 0x0000385D, 0x00003911, 0x000039BB, 0x00003A5D,
+0x00003AF6, 0x00003B85, 0x00003C0C, 0x00003C89, 0x00003CFD, 0x00003D67, 0x00003DC8, 0x00003E20,
+0x00003E6D, 0x00003EB2, 0x00003EEC, 0x00003F1D, 0x00003F44, 0x00003F61, 0x00003F75, 0x00003F7F,
+0x00003F7F, 0x00003F75, 0x00003F61, 0x00003F44, 0x00003F1D, 0x00003EEC, 0x00003EB2, 0x00003E6D,
+0x00003E20, 0x00003DC8, 0x00003D67, 0x00003CFD, 0x00003C89, 0x00003C0C, 0x00003B85, 0x00003AF6,
+0x00003A5D, 0x000039BB, 0x00003911, 0x0000385D, 0x000037A1, 0x000036DD, 0x00003610, 0x0000353A,
+0x0000345D, 0x00003377, 0x00003289, 0x00003194, 0x00003097, 0x00002F92, 0x00002E86, 0x00002D73,
+0x00002C59, 0x00002B38, 0x00002A10, 0x000028E2, 0x000027AE, 0x00002673, 0x00002533, 0x000023ED,
+0x000022A1, 0x00002150, 0x00001FFA, 0x00001E9E, 0x00001D3F, 0x00001BDA, 0x00001A71, 0x00001905,
+0x00001794, 0x00001620, 0x000014A8, 0x0000132D, 0x000011B0, 0x0000102F, 0x00000EAC, 0x00000D27,
+0x00000B9F, 0x00000A16, 0x0000088C, 0x00000700, 0x00000573, 0x000003E5, 0x00000256, 0x000000C7,
+0xFFFFFF39, 0xFFFFFDAA, 0xFFFFFC1B, 0xFFFFFA8D, 0xFFFFF900, 0xFFFFF774, 0xFFFFF5EA, 0xFFFFF461,
+0xFFFFF2D9, 0xFFFFF154, 0xFFFFEFD1, 0xFFFFEE50, 0xFFFFECD3, 0xFFFFEB58, 0xFFFFE9E0, 0xFFFFE86C,
+0xFFFFE6FB, 0xFFFFE58F, 0xFFFFE426, 0xFFFFE2C1, 0xFFFFE162, 0xFFFFE006, 0xFFFFDEB0, 0xFFFFDD5F,
+0xFFFFDC13, 0xFFFFDACD, 0xFFFFD98D, 0xFFFFD852, 0xFFFFD71E, 0xFFFFD5F0, 0xFFFFD4C8, 0xFFFFD3A7,
+0xFFFFD28D, 0xFFFFD17A, 0xFFFFD06E, 0xFFFFCF69, 0xFFFFCE6C, 0xFFFFCD77, 0xFFFFCC89, 0xFFFFCBA3,
+0xFFFFCAC6, 0xFFFFC9F0, 0xFFFFC923, 0xFFFFC85F, 0xFFFFC7A3, 0xFFFFC6EF, 0xFFFFC645, 0xFFFFC5A3,
+0xFFFFC50A, 0xFFFFC47B, 0xFFFFC3F4, 0xFFFFC377, 0xFFFFC303, 0xFFFFC299, 0xFFFFC238, 0xFFFFC1E0,
+0xFFFFC193, 0xFFFFC14E, 0xFFFFC114, 0xFFFFC0E3, 0xFFFFC0BC, 0xFFFFC09F, 0xFFFFC08B, 0xFFFFC081,
+0xFFFFC081, 0xFFFFC08B, 0xFFFFC09F, 0xFFFFC0BC, 0xFFFFC0E3, 0xFFFFC114, 0xFFFFC14E, 0xFFFFC193,
+0xFFFFC1E0, 0xFFFFC238, 0xFFFFC299, 0xFFFFC303, 0xFFFFC377, 0xFFFFC3F4, 0xFFFFC47B, 0xFFFFC50A,
+0xFFFFC5A3, 0xFFFFC645, 0xFFFFC6EF, 0xFFFFC7A3, 0xFFFFC85F, 0xFFFFC923, 0xFFFFC9F0, 0xFFFFCAC6,
+0xFFFFCBA3, 0xFFFFCC89, 0xFFFFCD77, 0xFFFFCE6C, 0xFFFFCF69, 0xFFFFD06E, 0xFFFFD17A, 0xFFFFD28D,
+0xFFFFD3A7, 0xFFFFD4C8, 0xFFFFD5F0, 0xFFFFD71E, 0xFFFFD852, 0xFFFFD98D, 0xFFFFDACD, 0xFFFFDC13,
+0xFFFFDD5F, 0xFFFFDEB0, 0xFFFFE006, 0xFFFFE162, 0xFFFFE2C1, 0xFFFFE426, 0xFFFFE58F, 0xFFFFE6FB,
+0xFFFFE86C, 0xFFFFE9E0, 0xFFFFEB58, 0xFFFFECD3, 0xFFFFEE50, 0xFFFFEFD1, 0xFFFFF154, 0xFFFFF2D9,
+0xFFFFF461, 0xFFFFF5EA, 0xFFFFF774, 0xFFFFF900, 0xFFFFFA8D, 0xFFFFFC1B, 0xFFFFFDAA, 0xFFFFFF39,
+}; // end of signed int My_Data_Table[]