seeedstudio ARCH GPRS Demo. post data to yeelink.

Dependencies:   mbed

Committer:
loovee
Date:
Fri Aug 23 02:31:06 2013 +0000
Revision:
0:6d297fe482af
seeedstudio Arch Gprs Demo. ; ; post data to yeelink.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
loovee 0:6d297fe482af 1 #include "mbed.h"
loovee 0:6d297fe482af 2 #include "ARCH_GPRS_Sleep.h"
loovee 0:6d297fe482af 3 #include "ARCH_GPRS_HW.h"
loovee 0:6d297fe482af 4
loovee 0:6d297fe482af 5 void Stalker3_0_sleep::gotoSleep() // goto sleep mode, untill wdt interrupt
loovee 0:6d297fe482af 6 {
loovee 0:6d297fe482af 7 LPC_PMU->PCON |= 0x01; /* ????????? */
loovee 0:6d297fe482af 8 LPC_SYSCON->PDSLEEPCFG |= (1UL << 3); /* ??BOD??????? */
loovee 0:6d297fe482af 9 SCB->SCR &= ~(1UL << 2); /* ?????? */
loovee 0:6d297fe482af 10 __wfi();
loovee 0:6d297fe482af 11 }
loovee 0:6d297fe482af 12
loovee 0:6d297fe482af 13 void Stalker3_0_sleep::wdtClkSetup(unsigned long clksrc)
loovee 0:6d297fe482af 14 {
loovee 0:6d297fe482af 15 /* Freq = 0.5Mhz, div_sel is 0x1F, divided by 64. WDT_OSC should be 7.8125khz */
loovee 0:6d297fe482af 16 LPC_SYSCON->WDTOSCCTRL = (0x1<<5)|0x1F;
loovee 0:6d297fe482af 17 LPC_SYSCON->PDRUNCFG &= ~(0x1<<6); /* Let WDT clock run */
loovee 0:6d297fe482af 18
loovee 0:6d297fe482af 19 /* Enables clock for WDT */
loovee 0:6d297fe482af 20 LPC_SYSCON->SYSAHBCLKCTRL |= (1<<15);
loovee 0:6d297fe482af 21 LPC_WWDT->CLKSEL = clksrc; /* Select clock source */
loovee 0:6d297fe482af 22
loovee 0:6d297fe482af 23 }
loovee 0:6d297fe482af 24
loovee 0:6d297fe482af 25 void Stalker3_0_sleep::wdtInit(long tc) // init wdt
loovee 0:6d297fe482af 26 {
loovee 0:6d297fe482af 27 uint32_t regVal;
loovee 0:6d297fe482af 28
loovee 0:6d297fe482af 29 LPC_WWDT->TC = tc;
loovee 0:6d297fe482af 30
loovee 0:6d297fe482af 31 regVal = WDEN;
loovee 0:6d297fe482af 32 LPC_WWDT->MOD = regVal;
loovee 0:6d297fe482af 33
loovee 0:6d297fe482af 34 LPC_WWDT->FEED = 0xAA; /* Feeding sequence */
loovee 0:6d297fe482af 35 LPC_WWDT->FEED = 0x55;
loovee 0:6d297fe482af 36
loovee 0:6d297fe482af 37 NVIC_EnableIRQ(WDT_IRQn);
loovee 0:6d297fe482af 38 NVIC_SetPriority(WDT_IRQn, 2);
loovee 0:6d297fe482af 39 return;
loovee 0:6d297fe482af 40
loovee 0:6d297fe482af 41 }
loovee 0:6d297fe482af 42
loovee 0:6d297fe482af 43 void Stalker3_0_sleep::init()
loovee 0:6d297fe482af 44 {
loovee 0:6d297fe482af 45
loovee 0:6d297fe482af 46 }
loovee 0:6d297fe482af 47
loovee 0:6d297fe482af 48 void Stalker3_0_sleep::sleep(long ts) // sleep for ts (s)
loovee 0:6d297fe482af 49 {
loovee 0:6d297fe482af 50
loovee 0:6d297fe482af 51 workMode = MODE_SLEEP;
loovee 0:6d297fe482af 52 wdtInit(0x2dc6c0);
loovee 0:6d297fe482af 53
loovee 0:6d297fe482af 54 for(int i=0; i<ts; i++)
loovee 0:6d297fe482af 55 {
loovee 0:6d297fe482af 56 gotoSleep();
loovee 0:6d297fe482af 57 }
loovee 0:6d297fe482af 58
loovee 0:6d297fe482af 59 workMode = MODE_WORKING;
loovee 0:6d297fe482af 60 feed();
loovee 0:6d297fe482af 61 }
loovee 0:6d297fe482af 62
loovee 0:6d297fe482af 63 void Stalker3_0_sleep::wakeUp() // wake up from sleep
loovee 0:6d297fe482af 64 {
loovee 0:6d297fe482af 65
loovee 0:6d297fe482af 66 }
loovee 0:6d297fe482af 67
loovee 0:6d297fe482af 68 void Stalker3_0_sleep::feed() // watch dog feed
loovee 0:6d297fe482af 69 {
loovee 0:6d297fe482af 70 LPC_WWDT->FEED = 0xAA; /* Feeding sequence */
loovee 0:6d297fe482af 71 LPC_WWDT->FEED = 0x55;
loovee 0:6d297fe482af 72 return;
loovee 0:6d297fe482af 73 }
loovee 0:6d297fe482af 74
loovee 0:6d297fe482af 75 Stalker3_0_sleep wdt_sleep;
loovee 0:6d297fe482af 76
loovee 0:6d297fe482af 77 extern "C"{
loovee 0:6d297fe482af 78
loovee 0:6d297fe482af 79 void WDT_IRQHandler(void)
loovee 0:6d297fe482af 80 {
loovee 0:6d297fe482af 81
loovee 0:6d297fe482af 82 if(wdt_sleep.workMode == MODE_WORKING) // WORKING MODE, AND NO FEET WDT, RESET!!!
loovee 0:6d297fe482af 83 {
loovee 0:6d297fe482af 84 NVIC_SystemReset();
loovee 0:6d297fe482af 85 }
loovee 0:6d297fe482af 86 LPC_WWDT->MOD &= ~WDTOF; /* clear the time-out flag and interrupt flag */
loovee 0:6d297fe482af 87 LPC_WWDT->MOD &= ~WDINT; /* clear the time-out flag and interrupt flag */
loovee 0:6d297fe482af 88 wdt_sleep.wdtInit(0x2dc6c0);
loovee 0:6d297fe482af 89 }
loovee 0:6d297fe482af 90 }