Fixes #1964 and possibly #1963: TIM13 was used bootloader and delays.c, lcdInitFinish() was missing from lcdSetRefVolt(), simplified LCD init interface for Taranis, delaysInit() was missing from Bootloader
This commit is contained in:
@@ -281,28 +281,6 @@ extern "C" void TIM8_TRG_COM_TIM14_IRQHandler()
|
||||
TIM14->SR &= ~TIM_SR_UIF;
|
||||
interrupt10ms();
|
||||
}
|
||||
|
||||
void init_hw_timer()
|
||||
{
|
||||
// Timer13
|
||||
RCC->APB1ENR |= RCC_APB1ENR_TIM13EN; // Enable clock
|
||||
TIM13->ARR = 65535;
|
||||
TIM13->PSC = (PERI1_FREQUENCY * TIMER_MULT_APB1) / 10000000 - 1;// 0.1uS from 12MHz
|
||||
TIM13->CCER = 0;
|
||||
TIM13->CCMR1 = 0;
|
||||
TIM13->EGR = 0;
|
||||
TIM13->CR1 = 1;
|
||||
}
|
||||
|
||||
// delay in units of 0.1 uS up to 6.5535 mS
|
||||
void hw_delay(uint16_t time)
|
||||
{
|
||||
TIM13->CNT = 0;
|
||||
TIM13->EGR = 1; // Re-start counter
|
||||
while ( TIM13->CNT < time) {
|
||||
// wait
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
FRESULT readBinDir(DIR *dj, FILINFO *fno)
|
||||
@@ -507,13 +485,9 @@ int main()
|
||||
#endif
|
||||
|
||||
#if defined(PCBTARANIS)
|
||||
init_hw_timer(); //needed for lcdInitxxx()
|
||||
lcdInitStart();
|
||||
//nothing to do here
|
||||
lcdInitFinish();
|
||||
#else
|
||||
lcdInit();
|
||||
delaysInit(); //needed for lcdInit()
|
||||
#endif
|
||||
lcdInit();
|
||||
|
||||
#if defined(PCBSKY9X)
|
||||
extern uint8_t OptrexDisplay;
|
||||
|
||||
+1
-3
@@ -298,12 +298,10 @@ void lcd_img(coord_t x, coord_t y, const pm_uchar * img, uint8_t idx, LcdFlags a
|
||||
void lcdSetRefVolt(unsigned char val);
|
||||
void lcd_clear();
|
||||
void lcdSetContrast();
|
||||
void lcdInit();
|
||||
#if defined(PCBTARANIS)
|
||||
void lcdInitStart();
|
||||
void lcdInitFinish();
|
||||
void lcdOff();
|
||||
#else
|
||||
void lcdInit();
|
||||
#define lcdOff()
|
||||
#endif
|
||||
|
||||
|
||||
@@ -125,7 +125,7 @@ void boardInit()
|
||||
keysInit();
|
||||
adcInit();
|
||||
delaysInit();
|
||||
lcdInitStart();
|
||||
lcdInit(); // delaysInit() must be called before
|
||||
audioInit();
|
||||
init2MhzTimer();
|
||||
init5msTimer();
|
||||
|
||||
@@ -111,10 +111,14 @@ extern uint16_t sessionTimer;
|
||||
#define SLAVE_MODE() (g_model.trainerMode == TRAINER_MODE_SLAVE)
|
||||
#define TRAINER_CONNECTED() (GPIO_ReadInputDataBit(GPIOTRNDET, PIN_TRNDET) == Bit_RESET)
|
||||
|
||||
void delaysInit(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
void delaysInit(void);
|
||||
void delay_01us(uint16_t nb);
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
// SD driver
|
||||
#if defined(SIMU)
|
||||
|
||||
@@ -28,22 +28,16 @@
|
||||
extern void hw_delay(uint16_t time);
|
||||
#endif
|
||||
|
||||
#if !defined(BOOT)
|
||||
bool lcdInitFinished = false;
|
||||
#endif
|
||||
bool lcdInitFinished = false;
|
||||
void lcdInitFinish();
|
||||
|
||||
/*
|
||||
In boot-loader: init_hw_timer() must be called before the first call to this function!
|
||||
In opentx: delaysInit() must be called before the first call to this function!
|
||||
delaysInit() must be called before the first call to this function!
|
||||
*/
|
||||
static void Delay(uint32_t ms)
|
||||
{
|
||||
while(ms--) {
|
||||
#if !defined(BOOT)
|
||||
delay_01us(10000);
|
||||
#else
|
||||
hw_delay(10000);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
@@ -192,11 +186,9 @@ void lcdRefreshWait()
|
||||
|
||||
void lcdRefresh(bool wait)
|
||||
{
|
||||
#if !defined(BOOT)
|
||||
if (!lcdInitFinished) {
|
||||
lcdInitFinish();
|
||||
}
|
||||
#endif
|
||||
|
||||
//wait if previous DMA transfer still active
|
||||
WAIT_FOR_DMA_END();
|
||||
@@ -241,11 +233,9 @@ extern "C" void DMA1_Stream7_IRQHandler()
|
||||
#else // #if defined(REVPLUS)
|
||||
void lcdRefresh()
|
||||
{
|
||||
#if !defined(BOOT)
|
||||
if (!lcdInitFinished) {
|
||||
lcdInitFinish();
|
||||
}
|
||||
#endif
|
||||
|
||||
for (uint32_t y=0; y<LCD_H; y++) {
|
||||
uint8_t *p = &displayBuf[y/2 * LCD_W];
|
||||
@@ -371,7 +361,7 @@ void lcdOff()
|
||||
|
||||
Make sure that Delay() is functional before calling this function!
|
||||
*/
|
||||
void lcdInitStart()
|
||||
void lcdInit()
|
||||
{
|
||||
LCD_BL_Config();
|
||||
LCD_Hardware_Init();
|
||||
@@ -385,13 +375,12 @@ void lcdInitStart()
|
||||
}
|
||||
|
||||
/*
|
||||
Finishes LCD initialization. Must be called after the lcdInitStart().
|
||||
Finishes LCD initialization. It is called auto-magically when first LCD command is
|
||||
issued by the other parts of the code.
|
||||
*/
|
||||
void lcdInitFinish()
|
||||
{
|
||||
#if !defined(BOOT)
|
||||
lcdInitFinished = true;
|
||||
#endif
|
||||
|
||||
#if defined(REVPLUS)
|
||||
initLcdSpi();
|
||||
@@ -425,6 +414,9 @@ void lcdInitFinish()
|
||||
|
||||
void lcdSetRefVolt(uint8_t val)
|
||||
{
|
||||
if (!lcdInitFinished) {
|
||||
lcdInitFinish();
|
||||
}
|
||||
WAIT_FOR_DMA_END();
|
||||
AspiCmd(0x81); //Set Vop
|
||||
AspiCmd(val+CONTRAST_OFS); //0--255
|
||||
|
||||
Reference in New Issue
Block a user