freefall-sleep

Dependencies:   MMA8451Q mbed

Committer:
zdenka
Date:
Mon Nov 13 15:40:25 2017 +0000
Revision:
1:1b10921f4922
Parent:
0:97ddc2168412
freefall-sleep

Who changed what in which revision?

UserRevisionLine numberNew contents of line
zdenka 0:97ddc2168412 1 #include "mbed.h"
zdenka 0:97ddc2168412 2 #include "MMA8451Q.h"
zdenka 1:1b10921f4922 3 #include "cmsis.h"
zdenka 1:1b10921f4922 4 #include "PeripheralPins.h"
zdenka 0:97ddc2168412 5 #if defined (TARGET_KL25Z) || defined (TARGET_KL46Z)
zdenka 0:97ddc2168412 6 PinName const SDA = PTE25;
zdenka 0:97ddc2168412 7 PinName const SCL = PTE24;
zdenka 0:97ddc2168412 8 #elif defined (TARGET_KL05Z)
zdenka 0:97ddc2168412 9 PinName const SDA = PTB4;
zdenka 0:97ddc2168412 10 PinName const SCL = PTB3;
zdenka 0:97ddc2168412 11 #elif defined (TARGET_K20D50M)
zdenka 0:97ddc2168412 12 PinName const SDA = PTB1;
zdenka 0:97ddc2168412 13 PinName const SCL = PTB0;
zdenka 0:97ddc2168412 14 #else
zdenka 0:97ddc2168412 15 #error TARGET NOT DEFINED
zdenka 0:97ddc2168412 16 #endif
zdenka 0:97ddc2168412 17
zdenka 0:97ddc2168412 18 #define MMA8451_I2C_ADDRESS (0x1d<<1)
zdenka 0:97ddc2168412 19 Serial pc(USBTX, USBRX);
zdenka 0:97ddc2168412 20
zdenka 0:97ddc2168412 21 MMA8451Q acc(SDA, SCL, MMA8451_I2C_ADDRESS);
zdenka 0:97ddc2168412 22 InterruptIn in(PTA15);
zdenka 1:1b10921f4922 23
zdenka 1:1b10921f4922 24
zdenka 1:1b10921f4922 25
zdenka 1:1b10921f4922 26 void slleep()
zdenka 1:1b10921f4922 27 {
zdenka 1:1b10921f4922 28 SMC->PMPROT = SMC_PMPROT_AVLLS_MASK | SMC_PMPROT_ALLS_MASK | SMC_PMPROT_AVLP_MASK;
zdenka 1:1b10921f4922 29
zdenka 1:1b10921f4922 30 //Normal sleep mode for ARM core:
zdenka 1:1b10921f4922 31 SCB->SCR = 0;
zdenka 1:1b10921f4922 32 __WFI();
zdenka 1:1b10921f4922 33 }
zdenka 0:97ddc2168412 34 void svojafunkcia(){
zdenka 0:97ddc2168412 35 uint8_t data[1];
zdenka 0:97ddc2168412 36 acc.readRegs(0x0C,data,1);
zdenka 0:97ddc2168412 37 if((data[0]&0x04)==0x04){
zdenka 0:97ddc2168412 38 uint8_t cokolvek[1];
zdenka 0:97ddc2168412 39 acc.readRegs(0x16,cokolvek,1);
zdenka 0:97ddc2168412 40 pc.printf("prerusenie\r \n"); // print the value of variable i
zdenka 1:1b10921f4922 41 slleep();
zdenka 0:97ddc2168412 42
zdenka 0:97ddc2168412 43 }
zdenka 0:97ddc2168412 44 }
zdenka 0:97ddc2168412 45
zdenka 0:97ddc2168412 46 int main(void)
zdenka 0:97ddc2168412 47 {
zdenka 0:97ddc2168412 48 in.fall(&svojafunkcia);
zdenka 0:97ddc2168412 49
zdenka 0:97ddc2168412 50 //krok1
zdenka 0:97ddc2168412 51 uint8_t data1[2] = {0x2A, 0x20};
zdenka 0:97ddc2168412 52 acc.writeRegs(data1, 2);
zdenka 0:97ddc2168412 53
zdenka 0:97ddc2168412 54 //krok2
zdenka 0:97ddc2168412 55 uint8_t data2[2] = {0x15, 0xB8};
zdenka 0:97ddc2168412 56 acc.writeRegs(data2, 2);
zdenka 0:97ddc2168412 57
zdenka 0:97ddc2168412 58 //krok3
zdenka 0:97ddc2168412 59 uint8_t data3[2] = {0x17, 0x03};
zdenka 0:97ddc2168412 60 acc.writeRegs(data3, 2);
zdenka 0:97ddc2168412 61
zdenka 0:97ddc2168412 62 //krok4
zdenka 0:97ddc2168412 63 uint8_t data4[2] = {0x18, 0x06};
zdenka 0:97ddc2168412 64 acc.writeRegs(data4, 2);
zdenka 0:97ddc2168412 65
zdenka 0:97ddc2168412 66 //krok5
zdenka 0:97ddc2168412 67 uint8_t data5[2] = {0x2D, 0x04};
zdenka 0:97ddc2168412 68 acc.writeRegs(data5, 2);
zdenka 0:97ddc2168412 69
zdenka 0:97ddc2168412 70 //krok6
zdenka 0:97ddc2168412 71 uint8_t data6[2] = {0x2E, 0x00};
zdenka 0:97ddc2168412 72 acc.writeRegs(data6, 2);
zdenka 0:97ddc2168412 73
zdenka 0:97ddc2168412 74 //krok7
zdenka 0:97ddc2168412 75 uint8_t data[1];
zdenka 0:97ddc2168412 76 acc.readRegs(0x2A,data,1);
zdenka 0:97ddc2168412 77 data[0]=data[0]| 0x01;
zdenka 0:97ddc2168412 78 uint8_t data7[2]={0x2A,data[0]};
zdenka 0:97ddc2168412 79 data7[1]=data[0];
zdenka 0:97ddc2168412 80 acc.writeRegs(data7,2);
zdenka 1:1b10921f4922 81
zdenka 0:97ddc2168412 82
zdenka 1:1b10921f4922 83 slleep();
zdenka 0:97ddc2168412 84 while (true) {
zdenka 1:1b10921f4922 85 }
zdenka 0:97ddc2168412 86 }