
MAX32625PICO LP1 mode
Dependencies: SX1276GenericLib USBDevice
Fork of PICO_LP1 by
main.cpp@7:8875c4d513bb, 2020-10-16 (annotated)
- Committer:
- walterluu
- Date:
- Fri Oct 16 06:46:00 2020 +0000
- Revision:
- 7:8875c4d513bb
- Parent:
- 6:51f492ca61a2
MAX32625PICO LP1 mode;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
walterluu | 0:664d9df11a00 | 1 | #include "mbed.h" |
walterluu | 3:85fc843a9d7d | 2 | |
walterluu | 7:8875c4d513bb | 3 | // Low Power Mode |
walterluu | 7:8875c4d513bb | 4 | #include "lp.h" |
walterluu | 7:8875c4d513bb | 5 | #include "mxc_config.h" |
walterluu | 7:8875c4d513bb | 6 | #include "lp.h" |
walterluu | 7:8875c4d513bb | 7 | #include "rtc.h" |
walterluu | 7:8875c4d513bb | 8 | #define LP1_WakeTime 3 //seconds |
walterluu | 3:85fc843a9d7d | 9 | |
walterluu | 3:85fc843a9d7d | 10 | /*************************************************************************** |
walterluu | 3:85fc843a9d7d | 11 | * LEDs Instantiation |
walterluu | 3:85fc843a9d7d | 12 | **************************************************************************/ |
walterluu | 7:8875c4d513bb | 13 | //DigitalOut gLED(LED2); // green LED |
walterluu | 7:8875c4d513bb | 14 | //DigitalOut rLED(LED1); // red LED |
walterluu | 7:8875c4d513bb | 15 | //DigitalOut bLED(LED3); // blue LED |
walterluu | 0:664d9df11a00 | 16 | |
walterluu | 0:664d9df11a00 | 17 | |
walterluu | 7:8875c4d513bb | 18 | // ***************************************************************************** |
walterluu | 7:8875c4d513bb | 19 | void RTC_Setup() |
walterluu | 7:8875c4d513bb | 20 | { |
walterluu | 7:8875c4d513bb | 21 | rtc_cfg_t RTCconfig; |
walterluu | 0:664d9df11a00 | 22 | |
walterluu | 7:8875c4d513bb | 23 | // RTCconfig.compareCount[0] = 3;//3 second timer |
walterluu | 7:8875c4d513bb | 24 | RTCconfig.compareCount[1] = LP1_WakeTime; //3 second timer |
walterluu | 7:8875c4d513bb | 25 | RTCconfig.prescaler = RTC_PRESCALE_DIV_2_12; //1Hz clock |
walterluu | 7:8875c4d513bb | 26 | RTCconfig.prescalerMask = RTC_PRESCALE_DIV_2_12;//used for prescaler compare |
walterluu | 7:8875c4d513bb | 27 | RTCconfig.snoozeCount = 0; |
walterluu | 7:8875c4d513bb | 28 | RTCconfig.snoozeMode = RTC_SNOOZE_DISABLE; |
walterluu | 0:664d9df11a00 | 29 | |
walterluu | 7:8875c4d513bb | 30 | RTC_Init(&RTCconfig); |
walterluu | 7:8875c4d513bb | 31 | |
walterluu | 7:8875c4d513bb | 32 | RTC_Start(); |
walterluu | 6:51f492ca61a2 | 33 | } |
walterluu | 6:51f492ca61a2 | 34 | |
walterluu | 0:664d9df11a00 | 35 | int main() { |
walterluu | 3:85fc843a9d7d | 36 | |
walterluu | 7:8875c4d513bb | 37 | // Set all LEDs off |
walterluu | 7:8875c4d513bb | 38 | // gLED = LED_OFF; |
walterluu | 7:8875c4d513bb | 39 | // rLED = LED_OFF; |
walterluu | 7:8875c4d513bb | 40 | // bLED = LED_OFF; |
walterluu | 3:85fc843a9d7d | 41 | |
walterluu | 7:8875c4d513bb | 42 | //configure RTC and start |
walterluu | 7:8875c4d513bb | 43 | RTC_Setup(); |
walterluu | 6:51f492ca61a2 | 44 | |
walterluu | 7:8875c4d513bb | 45 | while (1) { |
walterluu | 7:8875c4d513bb | 46 | |
walterluu | 7:8875c4d513bb | 47 | // Set all LEDs off |
walterluu | 7:8875c4d513bb | 48 | // gLED = LED_OFF; |
walterluu | 7:8875c4d513bb | 49 | // rLED = LED_OFF; |
walterluu | 7:8875c4d513bb | 50 | // bLED = LED_OFF; |
walterluu | 7:8875c4d513bb | 51 | |
walterluu | 3:85fc843a9d7d | 52 | |
walterluu | 3:85fc843a9d7d | 53 | /*************************************************************************** |
walterluu | 7:8875c4d513bb | 54 | * LP1 Experiment |
walterluu | 3:85fc843a9d7d | 55 | **************************************************************************/ |
walterluu | 7:8875c4d513bb | 56 | //Clear existing wake-up config |
walterluu | 7:8875c4d513bb | 57 | LP_ClearWakeUpConfig(); |
walterluu | 7:8875c4d513bb | 58 | |
walterluu | 7:8875c4d513bb | 59 | //Clear any event flags |
walterluu | 7:8875c4d513bb | 60 | LP_ClearWakeUpFlags(); |
walterluu | 7:8875c4d513bb | 61 | |
walterluu | 7:8875c4d513bb | 62 | //configure wake-up on RTC compare 1 |
walterluu | 7:8875c4d513bb | 63 | LP_ConfigRTCWakeUp(0, 1, 0, 0); |
walterluu | 7:8875c4d513bb | 64 | |
walterluu | 7:8875c4d513bb | 65 | |
walterluu | 7:8875c4d513bb | 66 | //set RTC compare 1 value |
walterluu | 7:8875c4d513bb | 67 | uint32_t cmp = RTC_GetCount() + LP1_WakeTime; |
walterluu | 7:8875c4d513bb | 68 | RTC_SetCompare(1,cmp); |
walterluu | 7:8875c4d513bb | 69 | RTC_ClearFlags(MXC_F_RTC_FLAGS_COMP1); |
walterluu | 7:8875c4d513bb | 70 | |
walterluu | 7:8875c4d513bb | 71 | //global disable interrupt |
walterluu | 7:8875c4d513bb | 72 | __disable_irq(); |
walterluu | 7:8875c4d513bb | 73 | |
walterluu | 7:8875c4d513bb | 74 | LP_EnterLP1(); |
walterluu | 7:8875c4d513bb | 75 | |
walterluu | 7:8875c4d513bb | 76 | //global enable interrupt |
walterluu | 7:8875c4d513bb | 77 | __enable_irq(); |
walterluu | 3:85fc843a9d7d | 78 | |
walterluu | 7:8875c4d513bb | 79 | // LP1 Wakes up |
walterluu | 7:8875c4d513bb | 80 | // gLED = LED_ON; |
walterluu | 7:8875c4d513bb | 81 | wait(1); |
walterluu | 3:85fc843a9d7d | 82 | |
walterluu | 3:85fc843a9d7d | 83 | } // end of while(1) loop |
walterluu | 3:85fc843a9d7d | 84 | |
walterluu | 6:51f492ca61a2 | 85 | } // end of main() |