]> git.donarmstrong.com Git - kiibohd-controller.git/blobdiff - Scan/STLcd/lcd_scan.c
Adding 16-bit brightness control to LCD backlight
[kiibohd-controller.git] / Scan / STLcd / lcd_scan.c
index b5123c97334d5082515cc932876867b06b91192d..49a1b82e6f6ed547c0e3d2f66085d2f18c06c29a 100644 (file)
@@ -21,6 +21,7 @@
 
 // Project Includes
 #include <cli.h>
+#include <kll.h>
 #include <led.h>
 #include <print.h>
 
@@ -258,7 +259,6 @@ inline void LCD_setup()
        // Initialize SPI
        SPI_setup();
 
-
        // Setup Register Control Signal (A0)
        // Start in display register mode (1)
        GPIOC_PDDR |= (1<<7);
@@ -274,6 +274,52 @@ inline void LCD_setup()
 
        // Run LCD intialization sequence
        LCD_initialize();
+
+       // Setup Backlight
+       // TODO Expose default settings
+       SIM_SCGC6 |= SIM_SCGC6_FTM0;
+       FTM0_CNT = 0; // Reset counter
+
+       // PWM Period
+       // 16-bit maximum
+       FTM0_MOD = 0xFFFF;
+
+       // Set FTM to PWM output - Edge Aligned, Low-true pulses
+       FTM0_C0SC = 0x24; // MSnB:MSnA = 10, ELSnB:ELSnA = 01
+       FTM0_C1SC = 0x24;
+       FTM0_C2SC = 0x24;
+
+       // Base FTM clock selection (72 MHz system clock)
+       // Pre-scalar calculations
+       // 0 -      72 MHz - Highest power usage/best result
+       // 1 -      36 MHz
+       // 2 -      18 MHz
+       // 3 -       9 MHz - Slightly visible flicker (peripheral vision)
+       // 4 -   4 500 kHz - Visible flickering
+       // 5 -   2 250 kHz
+       // 6 -   1 125 kHz
+       // 7 - 562 500  Hz
+       // System clock, /w prescalar setting
+       FTM0_SC = FTM_SC_CLKS(1) | FTM_SC_PS( STLcdBacklightPrescalar_define );
+
+       /* Write frequency TODO API
+       FTM0_SC = 0;
+       FTM0_CNT = 0;
+       FTM0_MOD = mod;
+       FTM0_SC = FTM_SC_CLKS(1) | FTM_SC_PS(prescale);
+       */
+
+       // Red
+       FTM0_C0V = STLcdBacklightRed_define;
+       PORTC_PCR1 = PORT_PCR_SRE | PORT_PCR_DSE | PORT_PCR_MUX(4);
+
+       // Green
+       FTM0_C1V = STLcdBacklightGreen_define;
+       PORTC_PCR2 = PORT_PCR_SRE | PORT_PCR_DSE | PORT_PCR_MUX(4);
+
+       // Blue
+       FTM0_C2V = STLcdBacklightBlue_define;
+       PORTC_PCR3 = PORT_PCR_SRE | PORT_PCR_DSE | PORT_PCR_MUX(4);
 }