Class similar to InterruptIn which allows the LPC1114 to wake from deepsleep. (For other targets you can use InterruptIn).

Dependents:   WakeUp WakeUp WakeUp WakeUp ... more

Committer:
Sissors
Date:
Sat Jul 26 15:02:43 2014 +0000
Revision:
0:d726461bd0af
Child:
1:128f3fe79240
v1.0

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Sissors 0:d726461bd0af 1 #include "WakeInterruptIn.h"
Sissors 0:d726461bd0af 2
Sissors 0:d726461bd0af 3 WakeInterruptIn* WakeInterruptIn::objects[NUM_CHANNEL] = {0};
Sissors 0:d726461bd0af 4
Sissors 0:d726461bd0af 5 WakeInterruptIn::WakeInterruptIn(PinName pin) : DigitalIn(pin)
Sissors 0:d726461bd0af 6 {
Sissors 0:d726461bd0af 7 if (pin < P1_0)
Sissors 0:d726461bd0af 8 channel = (pin >> PIN_SHIFT) & 0xF;
Sissors 0:d726461bd0af 9 else if (pin == P1_0)
Sissors 0:d726461bd0af 10 channel = 12;
Sissors 0:d726461bd0af 11 else
Sissors 0:d726461bd0af 12 error("Pin is not valid for WakeInterruptIn");
Sissors 0:d726461bd0af 13
Sissors 0:d726461bd0af 14 objects[channel] = this;
Sissors 0:d726461bd0af 15 switch (channel) {
Sissors 0:d726461bd0af 16 case 0:
Sissors 0:d726461bd0af 17 NVIC_SetVector((IRQn_Type)channel, (uint32_t)handler0);
Sissors 0:d726461bd0af 18 break;
Sissors 0:d726461bd0af 19 case 1:
Sissors 0:d726461bd0af 20 NVIC_SetVector((IRQn_Type)channel, (uint32_t)handler1);
Sissors 0:d726461bd0af 21 break;
Sissors 0:d726461bd0af 22 case 2:
Sissors 0:d726461bd0af 23 NVIC_SetVector((IRQn_Type)channel, (uint32_t)handler2);
Sissors 0:d726461bd0af 24 break;
Sissors 0:d726461bd0af 25 case 3:
Sissors 0:d726461bd0af 26 NVIC_SetVector((IRQn_Type)channel, (uint32_t)handler3);
Sissors 0:d726461bd0af 27 break;
Sissors 0:d726461bd0af 28 case 4:
Sissors 0:d726461bd0af 29 NVIC_SetVector((IRQn_Type)channel, (uint32_t)handler4);
Sissors 0:d726461bd0af 30 break;
Sissors 0:d726461bd0af 31 case 5:
Sissors 0:d726461bd0af 32 NVIC_SetVector((IRQn_Type)channel, (uint32_t)handler5);
Sissors 0:d726461bd0af 33 break;
Sissors 0:d726461bd0af 34 case 6:
Sissors 0:d726461bd0af 35 NVIC_SetVector((IRQn_Type)channel, (uint32_t)handler6);
Sissors 0:d726461bd0af 36 break;
Sissors 0:d726461bd0af 37 case 7:
Sissors 0:d726461bd0af 38 NVIC_SetVector((IRQn_Type)channel, (uint32_t)handler7);
Sissors 0:d726461bd0af 39 break;
Sissors 0:d726461bd0af 40 case 8:
Sissors 0:d726461bd0af 41 NVIC_SetVector((IRQn_Type)channel, (uint32_t)handler8);
Sissors 0:d726461bd0af 42 break;
Sissors 0:d726461bd0af 43 case 9:
Sissors 0:d726461bd0af 44 NVIC_SetVector((IRQn_Type)channel, (uint32_t)handler9);
Sissors 0:d726461bd0af 45 break;
Sissors 0:d726461bd0af 46 case 10:
Sissors 0:d726461bd0af 47 NVIC_SetVector((IRQn_Type)channel, (uint32_t)handler10);
Sissors 0:d726461bd0af 48 break;
Sissors 0:d726461bd0af 49 case 11:
Sissors 0:d726461bd0af 50 NVIC_SetVector((IRQn_Type)channel, (uint32_t)handler11);
Sissors 0:d726461bd0af 51 break;
Sissors 0:d726461bd0af 52 case 12:
Sissors 0:d726461bd0af 53 NVIC_SetVector((IRQn_Type)channel, (uint32_t)handler12);
Sissors 0:d726461bd0af 54 break;
Sissors 0:d726461bd0af 55 }
Sissors 0:d726461bd0af 56 }