LCD, Power Button, Rotary Encoder now OK

This commit is contained in:
bsongis
2015-02-20 19:01:42 +01:00
parent 8047fcbd92
commit fcafb4d374
4 changed files with 48 additions and 19 deletions
+1 -1
View File
@@ -244,7 +244,7 @@ void turnBacklightOff(void);
#define setBacklight(xx) turnBacklightOn(xx, g_eeGeneral.backlightColor)
#define __BACKLIGHT_ON turnBacklightOn(g_eeGeneral.backlightBright, g_eeGeneral.backlightColor)
#define __BACKLIGHT_OFF turnBacklightOff()
#define IS_BACKLIGHT_ON() (TIM4->CCR4 != 0) || (TIM4->CCR2 != 0)
#define IS_BACKLIGHT_ON() (TIM_BL->CCR4 != 0) || (TIM_BL->CCR2 != 0)
#else
#define setBacklight(xx) TIM10->CCR1 = 100-xx
#define __BACKLIGHT_ON TIM10->CCR1 = 100-g_eeGeneral.backlightBright
+17 -6
View File
@@ -324,14 +324,25 @@
#define PIN_FS_DP GPIO_Pin_12 // PA.12
// BackLight
#if defined (REVPLUS)
#define RCC_AHB1Periph_GPIOBL RCC_AHB1Periph_GPIOD
#define GPIO_Pin_BL GPIO_Pin_15 // PD.15
#define Pin_BL_AF GPIO_AF_TIM4
#if defined(REV9E)
#define TIM_BL TIM9
#define GPIOBL GPIOE
#define RCC_AHB1Periph_GPIOBL RCC_AHB1Periph_GPIOE
#define Pin_BL_AF GPIO_AF_TIM9
#define GPIO_Pin_BL GPIO_Pin_6 // PE.06
#define GPIO_PinSource_BL GPIO_PinSource6
#define Pin_BLW_AF GPIO_AF_TIM9
#define GPIO_Pin_BLW GPIO_Pin_5 // PE.05
#define GPIO_PinSource_BLW GPIO_PinSource5
#elif defined (REVPLUS)
#define TIM_BL TIM4
#define GPIOBL GPIOD
#define RCC_AHB1Periph_GPIOBL RCC_AHB1Periph_GPIOD
#define Pin_BL_AF GPIO_AF_TIM4
#define GPIO_Pin_BL GPIO_Pin_15 // PD.15
#define GPIO_PinSource_BL GPIO_PinSource15
#define GPIO_Pin_BLW GPIO_Pin_13 // PD.13
#define Pin_BLW_AF GPIO_AF_TIM4
#define GPIO_Pin_BLW GPIO_Pin_13 // PD.13
#define GPIO_PinSource_BLW GPIO_PinSource13
#else
#define RCC_AHB1Periph_GPIOBL RCC_AHB1Periph_GPIOB
@@ -353,7 +364,7 @@
#define PIN_LCD_CLK GPIO_Pin_10 // PC.10
#define PIN_LCD_NCS GPIO_Pin_15 // PA.15
#define PIN_LCD_A0 GPIO_Pin_11 // PC.11
#define PIN_LCD_RST GPIO_Pin_12 // PD.12
#define PIN_LCD_RST GPIO_Pin_15 // TOTO PD.12
#else
#define RCC_AHB1Periph_LCD RCC_AHB1Periph_GPIOD
#define GPIO_LCD_SPI GPIOD
+25 -7
View File
@@ -271,8 +271,26 @@ static void LCD_BL_Config()
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOBL, ENABLE);
GPIO_InitTypeDef GPIO_InitStructure;
#if defined(REVPLUS)
// RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);
#if defined(REV9E)
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_BL|GPIO_Pin_BLW;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIOBL, &GPIO_InitStructure);
GPIO_PinAFConfig(GPIOBL, GPIO_PinSource_BL, Pin_BL_AF);
GPIO_PinAFConfig(GPIOBL, GPIO_PinSource_BLW, Pin_BL_AF);
RCC->APB2ENR |= RCC_APB2ENR_TIM9EN ; // Enable clock
TIM9->ARR = 100 ;
TIM9->PSC = (PERI2_FREQUENCY * TIMER_MULT_APB2) / 50000 - 1; // 20us * 100 = 2ms => 500Hz
TIM9->CCMR1 = TIM_CCMR1_OC2M_1 | TIM_CCMR1_OC2M_2 ; // PWM
TIM9->CCMR2 = TIM_CCMR2_OC4M_1 | TIM_CCMR2_OC4M_2 ; // PWM
TIM9->CCER = TIM_CCER_CC4E | TIM_CCER_CC2E ;
TIM9->CCR2 = 0 ;
TIM9->CCR4 = 80 ;
TIM9->EGR = 0 ;
TIM9->CR1 = TIM_CR1_CEN ; // Counter enable
#elif defined(REVPLUS)
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_BL|GPIO_Pin_BLW;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
@@ -430,16 +448,16 @@ void lcdSetRefVolt(uint8_t val)
AspiCmd(val+CONTRAST_OFS); //0--255
}
#if defined(REVPLUS)
#if defined(REV9E) || defined(REVPLUS)
void turnBacklightOn(uint8_t level, uint8_t color)
{
TIM4->CCR4 = ((100-level)*(20-color))/20;
TIM4->CCR2 = ((100-level)*color)/20;
TIM_BL->CCR4 = ((100-level)*(20-color))/20;
TIM_BL->CCR2 = ((100-level)*color)/20;
}
void turnBacklightOff(void)
{
TIM4->CCR4 = 0;
TIM4->CCR2 = 0;
TIM_BL->CCR4 = 0;
TIM_BL->CCR2 = 0;
}
#endif
+5 -5
View File
@@ -38,7 +38,7 @@
void rotencInit()
{
configure_pins( 0x0060, PIN_INPUT | PIN_PULLUP | PIN_PORTE ) ;
configure_pins( GPIO_Pin_12|GPIO_Pin_13, PIN_INPUT | PIN_PULLUP | PIN_PORTD ) ;
}
void rotencEnd()
@@ -51,18 +51,18 @@ void checkRotaryEncoder()
{
register uint32_t dummy ;
dummy = GPIOE->IDR ; // Read Rotary encoder ( PE6, PE5 )
dummy >>= 5 ;
dummy = GPIOD->IDR ; // Read Rotary encoder ( PE6, PE5 )
dummy >>= 12 ;
dummy &= 0x03 ; // pick out the two bits
if ( dummy != ( Rotary_position & 0x03 ) )
{
if ( ( Rotary_position & 0x01 ) ^ ( ( dummy & 0x02) >> 1 ) )
{
++x9de_rotenc;
--x9de_rotenc;
}
else
{
--x9de_rotenc;
++x9de_rotenc;
}
Rotary_position &= ~0x03 ;
Rotary_position |= dummy ;