mirror of
https://github.com/opentx/opentx.git
synced 2025-07-22 15:55:26 +03:00
This commit is contained in:
parent
e83b7c3a69
commit
77d3eae4d6
6 changed files with 78 additions and 55 deletions
|
@ -1260,12 +1260,7 @@ void alert(const pm_char * t, const pm_char *s MESSAGE_SOUND_ARG)
|
||||||
#if defined(PCBTARANIS) && defined(REV9E)
|
#if defined(PCBTARANIS) && defined(REV9E)
|
||||||
uint32_t pwr_check = pwrCheck();
|
uint32_t pwr_check = pwrCheck();
|
||||||
if (pwr_check == e_power_off) {
|
if (pwr_check == e_power_off) {
|
||||||
// TODO this is quick & dirty
|
boardOff();
|
||||||
lcdOff();
|
|
||||||
BACKLIGHT_OFF();
|
|
||||||
topLcdOff();
|
|
||||||
SysTick->CTRL = 0; // turn off systick
|
|
||||||
pwrOff();
|
|
||||||
}
|
}
|
||||||
else if (pwr_check == e_power_press) {
|
else if (pwr_check == e_power_press) {
|
||||||
refresh = true;
|
refresh = true;
|
||||||
|
@ -1276,7 +1271,7 @@ void alert(const pm_char * t, const pm_char *s MESSAGE_SOUND_ARG)
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
if (pwrCheck() == e_power_off) {
|
if (pwrCheck() == e_power_off) {
|
||||||
pwrOff(); // turn power off now
|
boardOff(); // turn power off now
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
@ -2577,7 +2572,7 @@ int main(void)
|
||||||
opentxClose();
|
opentxClose();
|
||||||
lcd_clear() ;
|
lcd_clear() ;
|
||||||
lcdRefresh() ;
|
lcdRefresh() ;
|
||||||
pwrOff(); // Only turn power off if necessary
|
boardOff(); // Only turn power off if necessary
|
||||||
wdt_disable();
|
wdt_disable();
|
||||||
while(1); // never return from main() - there is no code to return back, if any delays occurs in physical power it does dead loop.
|
while(1); // never return from main() - there is no code to return back, if any delays occurs in physical power it does dead loop.
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -291,33 +291,39 @@
|
||||||
#include "debug.h"
|
#include "debug.h"
|
||||||
|
|
||||||
#if defined(SIMU)
|
#if defined(SIMU)
|
||||||
#include "targets/simu/simpgmspace.h"
|
#include "targets/simu/simpgmspace.h"
|
||||||
#elif defined(CPUARM)
|
#elif defined(CPUARM)
|
||||||
typedef const unsigned char pm_uchar;
|
typedef const unsigned char pm_uchar;
|
||||||
typedef const char pm_char;
|
typedef const char pm_char;
|
||||||
typedef const uint16_t pm_uint16_t;
|
typedef const uint16_t pm_uint16_t;
|
||||||
typedef const uint8_t pm_uint8_t;
|
typedef const uint8_t pm_uint8_t;
|
||||||
typedef const int16_t pm_int16_t;
|
typedef const int16_t pm_int16_t;
|
||||||
typedef const int8_t pm_int8_t;
|
typedef const int8_t pm_int8_t;
|
||||||
#define pgm_read_byte(address_short) (*(uint8_t*)(address_short))
|
#define pgm_read_byte(address_short) (*(uint8_t*)(address_short))
|
||||||
#define PSTR(adr) adr
|
#define PSTR(adr) adr
|
||||||
#define PROGMEM
|
#define PROGMEM
|
||||||
#define pgm_read_adr(x) *(x)
|
#define pgm_read_adr(x) *(x)
|
||||||
#define cli()
|
#define cli()
|
||||||
#define sei()
|
#define sei()
|
||||||
extern void boardInit();
|
extern void boardInit();
|
||||||
|
#if defined(PCBTARANIS)
|
||||||
|
extern void boardOff();
|
||||||
|
#else
|
||||||
|
#define boardOff() pwrOff();
|
||||||
|
#endif
|
||||||
#else
|
#else
|
||||||
#include <avr/io.h>
|
#define boardOff() pwrOff();
|
||||||
#include <avr/pgmspace.h>
|
#include <avr/io.h>
|
||||||
#include "pgmtypes.h"
|
#include <avr/pgmspace.h>
|
||||||
|
#include "pgmtypes.h"
|
||||||
|
|
||||||
#include <avr/eeprom.h>
|
#include <avr/eeprom.h>
|
||||||
#include <avr/sleep.h>
|
#include <avr/sleep.h>
|
||||||
#include <avr/interrupt.h>
|
#include <avr/interrupt.h>
|
||||||
#define F_CPU 16000000UL // 16 MHz
|
#define F_CPU 16000000UL // 16 MHz
|
||||||
#include <util/delay.h>
|
#include <util/delay.h>
|
||||||
#define pgm_read_adr(address_short) pgm_read_word(address_short)
|
#define pgm_read_adr(address_short) pgm_read_word(address_short)
|
||||||
#include <avr/wdt.h>
|
#include <avr/wdt.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(PCBTARANIS)
|
#if defined(PCBTARANIS)
|
||||||
|
|
|
@ -377,6 +377,7 @@ void eepromReadBlock (uint8_t * pointer_ram, uint32_t address, uint32_t size);
|
||||||
#define wdt_enable(...) sleep(1/*ms*/)
|
#define wdt_enable(...) sleep(1/*ms*/)
|
||||||
#define wdt_reset() sleep(1/*ms*/)
|
#define wdt_reset() sleep(1/*ms*/)
|
||||||
#define boardInit()
|
#define boardInit()
|
||||||
|
#define boardOff()
|
||||||
|
|
||||||
#define OS_MutexID pthread_mutex_t
|
#define OS_MutexID pthread_mutex_t
|
||||||
extern OS_MutexID audioMutex;
|
extern OS_MutexID audioMutex;
|
||||||
|
|
|
@ -187,7 +187,7 @@ void boardInit()
|
||||||
lcdRefreshWait();
|
lcdRefreshWait();
|
||||||
}
|
}
|
||||||
if (duration < PWR_PRESS_DURATION_MIN || duration >= PWR_PRESS_DURATION_MAX) {
|
if (duration < PWR_PRESS_DURATION_MIN || duration >= PWR_PRESS_DURATION_MAX) {
|
||||||
pwrOff();
|
boardOff();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -198,8 +198,27 @@ void boardInit()
|
||||||
backlightInit();
|
backlightInit();
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void boardOff()
|
||||||
|
{
|
||||||
|
BACKLIGHT_OFF();
|
||||||
|
#if defined(REV9E)
|
||||||
|
topLcdOff();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(REV9E)
|
||||||
|
while (pwrPressed()) {
|
||||||
|
wdt_reset();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
lcdOff();
|
||||||
|
SysTick->CTRL = 0; // turn off systick
|
||||||
|
pwrOff();
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // #if !defined(SIMU)
|
||||||
|
|
||||||
|
|
||||||
#if defined(USB_JOYSTICK) && !defined(SIMU)
|
#if defined(USB_JOYSTICK) && !defined(SIMU)
|
||||||
extern USB_OTG_CORE_HANDLE USB_OTG_dev;
|
extern USB_OTG_CORE_HANDLE USB_OTG_dev;
|
||||||
|
|
|
@ -37,9 +37,6 @@
|
||||||
#include "board_taranis.h"
|
#include "board_taranis.h"
|
||||||
#include "../../pwr.h"
|
#include "../../pwr.h"
|
||||||
|
|
||||||
extern volatile uint32_t g_tmr10ms;
|
|
||||||
#define get_tmr10ms() g_tmr10ms
|
|
||||||
|
|
||||||
void pwrInit()
|
void pwrInit()
|
||||||
{
|
{
|
||||||
// if any changes are done to the PWR PIN or pwrOn() function
|
// if any changes are done to the PWR PIN or pwrOn() function
|
||||||
|
@ -87,23 +84,33 @@ void pwrOff()
|
||||||
{
|
{
|
||||||
GPIO_ResetBits(PWR_GPIO, PWR_GPIO_PIN_ON);
|
GPIO_ResetBits(PWR_GPIO, PWR_GPIO_PIN_ON);
|
||||||
|
|
||||||
|
// disable interrupts
|
||||||
|
__disable_irq();
|
||||||
|
|
||||||
|
|
||||||
#if defined(REV9E)
|
#if defined(REV9E)
|
||||||
// 9E needs watchdog reset because CPU is still running while the power
|
// 9E needs watchdog reset because CPU is still running while
|
||||||
// key is held pressed by the user
|
// the power key is held pressed by the user.
|
||||||
while (1) {
|
// The power key should be released by now, but we must make sure
|
||||||
|
while (pwrPressed()) {
|
||||||
wdt_reset();
|
wdt_reset();
|
||||||
#if 0
|
|
||||||
// It doesn't work correctly, if we press long on the pwr button, the radio restarts when the button is released
|
|
||||||
PWR->CR |= PWR_CR_CWUF;
|
|
||||||
/* Select STANDBY mode */
|
|
||||||
PWR->CR |= PWR_CR_PDDS;
|
|
||||||
/* Set SLEEPDEEP bit of Cortex System Control Register */
|
|
||||||
SCB->SCR |= SCB_SCR_SLEEPDEEP_Msk;
|
|
||||||
/* Request Wait For Event */
|
|
||||||
__WFE();
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
// Put the CPU into sleep to reduce the consumption,
|
||||||
|
// it might help with the RTC reset issue
|
||||||
|
PWR->CR |= PWR_CR_CWUF;
|
||||||
|
/* Select STANDBY mode */
|
||||||
|
PWR->CR |= PWR_CR_PDDS;
|
||||||
|
/* Set SLEEPDEEP bit of Cortex System Control Register */
|
||||||
|
SCB->SCR |= SCB_SCR_SLEEPDEEP_Msk;
|
||||||
|
/* Request Wait For Event */
|
||||||
|
__WFE();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
while(1) {
|
||||||
|
wdt_reset();
|
||||||
|
}
|
||||||
|
|
||||||
|
//this function must not return!
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(REV9E)
|
#if defined(REV9E)
|
||||||
|
|
|
@ -196,12 +196,7 @@ void menusTask(void * pdata)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
opentxClose();
|
opentxClose();
|
||||||
|
boardOff(); // Only turn power off if necessary
|
||||||
#if !defined(SIMU)
|
|
||||||
SysTick->CTRL = 0; // turn off systick
|
|
||||||
#endif
|
|
||||||
|
|
||||||
pwrOff(); // Only turn power off if necessary
|
|
||||||
}
|
}
|
||||||
|
|
||||||
extern void audioTask(void* pdata);
|
extern void audioTask(void* pdata);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue