Test

Dependencies:   mbed LCD_DISCO_F469NI BSP_DISCO_F469NI

Files at this revision

API Documentation at this revision

Comitter:
dkm1978
Date:
Sat Mar 05 17:29:25 2022 +0000
Parent:
0:dc8fbcb55376
Commit message:
q

Changed in this revision

BSP_DISCO_F469NI.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
table.h Show annotated file Show diff for this revision Revisions of this file
--- 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[]