From 51a665cec71457604c8c5c0fcd6c56cceeeced64 Mon Sep 17 00:00:00 2001 From: "bernet.andre@gmail.com" Date: Fri, 11 Jan 2013 21:38:04 +0000 Subject: [PATCH] [X9D] Trims working, RTC driver fix --- src/x9d/hal.h | 28 ++++++++++++++-------------- src/x9d/keys_driver.cpp | 38 +++++++++++++++++++------------------- src/x9d/rtc_driver.cpp | 20 +++++++++++--------- 3 files changed, 44 insertions(+), 42 deletions(-) diff --git a/src/x9d/hal.h b/src/x9d/hal.h index 54ef385ac..e09577bac 100644 --- a/src/x9d/hal.h +++ b/src/x9d/hal.h @@ -8,22 +8,22 @@ #define RCC_AHB1Periph_GPIOBUTTON (RCC_AHB1Periph_GPIOA|RCC_AHB1Periph_GPIOB|RCC_AHB1Periph_GPIOC|RCC_AHB1Periph_GPIOD|RCC_AHB1Periph_GPIOE) // Keys -#define PIN_BUTTON_PLUS GPIO_Pin_10 //SW3 PE.10 -#define PIN_BUTTON_MINUS GPIO_Pin_11 //SW1 PE.12 -#define PIN_BUTTON_ENTER GPIO_Pin_12 //SW2 PE.11 -#define PIN_BUTTON_MENU GPIO_Pin_7 //SW4 PD.07 -#define PIN_BUTTON_PAGE GPIO_Pin_3 //SW6 PD.02 -#define PIN_BUTTON_EXIT GPIO_Pin_2 //SW5 PD.03 +#define PIN_BUTTON_PLUS GPIO_Pin_10 //SW3 PE.10 +#define PIN_BUTTON_MINUS GPIO_Pin_11 //SW1 PE.12 +#define PIN_BUTTON_ENTER GPIO_Pin_12 //SW2 PE.11 +#define PIN_BUTTON_MENU GPIO_Pin_7 //SW4 PD.07 +#define PIN_BUTTON_PAGE GPIO_Pin_3 //SW6 PD.02 +#define PIN_BUTTON_EXIT GPIO_Pin_2 //SW5 PD.03 // Trims -#define PIN_TRIM1_UP GPIO_Pin_3 //PE.03 -#define PIN_TRIM1_DN GPIO_Pin_4 //PE.04 -#define PIN_TRIM2_UP GPIO_Pin_6 //PE.06 -#define PIN_TRIM2_DN GPIO_Pin_5 //PE.05 -#define PIN_TRIM3_UP GPIO_Pin_2 //PC.02 -#define PIN_TRIM3_DN GPIO_Pin_3 //PC.03 -#define PIN_TRIM4_UP GPIO_Pin_1 //PC.01 -#define PIN_TRIM4_DN GPIO_Pin_13 //PC.13 +#define PIN_TRIM_RV_DN GPIO_Pin_3 //PC.03 +#define PIN_TRIM_RV_UP GPIO_Pin_2 //PC.02 +#define PIN_TRIM_RH_L GPIO_Pin_1 //PC.01 +#define PIN_TRIM_RH_R GPIO_Pin_13 //PC.13 +#define PIN_TRIM_LH_R GPIO_Pin_4 //PE.04 +#define PIN_TRIM_LH_L GPIO_Pin_3 //PE.03 +#define PIN_TRIM_LV_DN GPIO_Pin_6 //PE.06 +#define PIN_TRIM_LV_UP GPIO_Pin_5 //PE.05 // Switchs #define PIN_SW_F GPIO_Pin_14 //PE.14 diff --git a/src/x9d/keys_driver.cpp b/src/x9d/keys_driver.cpp index 68c8d933f..2d5270392 100644 --- a/src/x9d/keys_driver.cpp +++ b/src/x9d/keys_driver.cpp @@ -67,23 +67,23 @@ uint32_t readTrims() register uint32_t e = GPIOE->IDR; register uint32_t result = 0; - if (e & PIN_TRIM1_DN) - result |= 0x01; - if (e & PIN_TRIM1_UP) - result |= 0x02; - if (e & PIN_TRIM2_UP) - result |= 0x04; - if (e & PIN_TRIM2_DN) - result |= 0x08; + if (~e & PIN_TRIM_LH_L) + result |= 0x01; // LH_L + if (~e & PIN_TRIM_LH_R) + result |= 0x02; // LH_R + if (~e & PIN_TRIM_LV_DN) + result |= 0x04; // LV_DN + if (~e & PIN_TRIM_LV_UP) + result |= 0x08; // LV_UP - if (c & PIN_TRIM3_UP) - result |= 0x10; - if (c & PIN_TRIM3_DN) - result |= 0x20; - if (c & PIN_TRIM4_UP) - result |= 0x80; - if (c & PIN_TRIM4_DN) - result |= 0x40; + if (~c & PIN_TRIM_RV_DN) + result |= 0x10; // RV_DN + if (~c & PIN_TRIM_RV_UP) + result |= 0x20; // RV_UP + if (~c & PIN_TRIM_RH_L) + result |= 0x40; // RH_L + if (~c & PIN_TRIM_RH_R) + result |= 0x80; // RH_R return result; } @@ -217,8 +217,8 @@ void keysInit() RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOBUTTON, ENABLE); /* GPIO Configuration*/ - GPIO_InitStructure.GPIO_Pin = PIN_BUTTON_PLUS | PIN_BUTTON_ENTER | PIN_BUTTON_MINUS | PIN_TRIM3_UP | PIN_TRIM3_DN - | PIN_TRIM4_UP |PIN_TRIM4_DN | PIN_SW_A_L | PIN_SW_D_L | PIN_SW_F | PIN_SW_C_L + GPIO_InitStructure.GPIO_Pin = PIN_BUTTON_PLUS | PIN_BUTTON_ENTER | PIN_BUTTON_MINUS | PIN_TRIM_LH_R | PIN_TRIM_LH_L + | PIN_TRIM_LV_DN | PIN_TRIM_LV_UP | PIN_SW_A_L | PIN_SW_D_L | PIN_SW_F | PIN_SW_C_L | PIN_SW_D_H | PIN_SW_H; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; @@ -233,7 +233,7 @@ void keysInit() GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP ; GPIO_Init(GPIOD, &GPIO_InitStructure); - GPIO_InitStructure.GPIO_Pin = PIN_TRIM1_UP | PIN_TRIM1_DN | PIN_TRIM2_UP | PIN_TRIM2_DN; + GPIO_InitStructure.GPIO_Pin = PIN_TRIM_RV_DN | PIN_TRIM_RV_UP | PIN_TRIM_RH_L | PIN_TRIM_RH_R; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; diff --git a/src/x9d/rtc_driver.cpp b/src/x9d/rtc_driver.cpp index 3e76edb6b..a6735712c 100644 --- a/src/x9d/rtc_driver.cpp +++ b/src/x9d/rtc_driver.cpp @@ -46,8 +46,8 @@ void rtc_settime(struct gtm * t) RTC_DateStruct.RTC_Month = t->tm_mon; RTC_DateStruct.RTC_Date = t->tm_mday; - RTC_SetTime(RTC_Format_BIN, &RTC_TimeStruct); - RTC_SetDate(RTC_Format_BIN, &RTC_DateStruct); + RTC_SetTime(RTC_Format_BCD, &RTC_TimeStruct); + RTC_SetDate(RTC_Format_BCD, &RTC_DateStruct); } void rtc_gettime(struct gtm * t) @@ -55,8 +55,8 @@ void rtc_gettime(struct gtm * t) RTC_TimeTypeDef RTC_TimeStruct; RTC_DateTypeDef RTC_DateStruct; - RTC_GetTime(RTC_Format_BIN, &RTC_TimeStruct); - RTC_GetDate(RTC_Format_BIN, &RTC_DateStruct); + RTC_GetTime(RTC_Format_BCD, &RTC_TimeStruct); + RTC_GetDate(RTC_Format_BCD, &RTC_DateStruct); t->tm_hour = RTC_TimeStruct.RTC_Hours; t->tm_min = RTC_TimeStruct.RTC_Minutes; @@ -72,16 +72,18 @@ void rtcInit() RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE); PWR_BackupAccessCmd(ENABLE); - + RCC_LSEConfig(RCC_LSE_ON); + while(RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET); RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE); RCC_RTCCLKCmd(ENABLE); + RTC_WaitForSynchro(); + // RTC time base = LSE / ((AsynchPrediv+1) * (SynchPrediv+1)) = 1 Hz*/ RTC_InitStruct.RTC_HourFormat = RTC_HourFormat_24; - RTC_InitStruct.RTC_AsynchPrediv = 128; - RTC_InitStruct.RTC_SynchPrediv = 256; - + RTC_InitStruct.RTC_AsynchPrediv = 127; + RTC_InitStruct.RTC_SynchPrediv = 255; RTC_Init(&RTC_InitStruct); - + struct gtm utm; rtc_gettime(&utm); g_rtcTime = gmktime(&utm);