X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=Scan%2FSTLcd%2Flcd_scan.c;h=49a1b82e6f6ed547c0e3d2f66085d2f18c06c29a;hb=64b232c87808fd2016831604f42cee9d30e10d8b;hp=b5123c97334d5082515cc932876867b06b91192d;hpb=a6657c8aed1cd73fd361f93c0f8506e281e7c5e0;p=kiibohd-controller.git diff --git a/Scan/STLcd/lcd_scan.c b/Scan/STLcd/lcd_scan.c index b5123c9..49a1b82 100644 --- a/Scan/STLcd/lcd_scan.c +++ b/Scan/STLcd/lcd_scan.c @@ -21,6 +21,7 @@ // Project Includes #include +#include #include #include @@ -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); }