Edit

Dependencies:   Lis2dh12 aconno_I2C aconno_nrf52_uart adc52832_common aconno_SEGGER_RTT

Committer:
jurica238814
Date:
Thu Mar 01 08:55:48 2018 +0000
Branch:
NanoModule
Revision:
12:d5d47f848af5
Parent:
10:83dab6cc625d
Child:
13:7ae1c5bcccb5
New msgs added.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jurica238814 3:f2078081a779 1 /*
jurica238814 3:f2078081a779 2 * aconno.de
jurica238814 3:f2078081a779 3 * Made by Jurica Resetar
jurica238814 3:f2078081a779 4 * All right reserved
jurica238814 3:f2078081a779 5 *
jurica238814 3:f2078081a779 6 */
jurica238814 3:f2078081a779 7
jurica238814 3:f2078081a779 8 #include "main.h"
jurica238814 3:f2078081a779 9
jurica238814 3:f2078081a779 10 void disableI2C(){
jurica238814 3:f2078081a779 11 NRF_TWI0->ENABLE = 0;
jurica238814 3:f2078081a779 12 NRF_TWI0->PSELSCL = 0xFFFFFFFF;
jurica238814 3:f2078081a779 13 NRF_TWI1->ENABLE = 0;
jurica238814 3:f2078081a779 14 NRF_TWI1->PSELSCL = 0xFFFFFFFF;
jurica238814 3:f2078081a779 15 NRF_TWIM0->ENABLE = 0;
jurica238814 3:f2078081a779 16 NRF_TWIM0->PSEL.SCL = 0x80000000;
jurica238814 3:f2078081a779 17 NRF_TWIM0->PSEL.SDA = 0x80000000;
jurica238814 3:f2078081a779 18 NRF_TWIM1->ENABLE = 0;
jurica238814 3:f2078081a779 19 NRF_TWIM0->PSEL.SCL = 0x80000000;
jurica238814 3:f2078081a779 20 NRF_TWIM0->PSEL.SDA = 0x80000000;
jurica238814 3:f2078081a779 21 DigitalOut foo(I2C_DATA);
jurica238814 3:f2078081a779 22 DigitalOut bar(I2C_CLK);
jurica238814 3:f2078081a779 23 foo = 1;
jurica238814 3:f2078081a779 24 bar = 1;
jurica238814 3:f2078081a779 25 }
jurica238814 3:f2078081a779 26
jurica238814 3:f2078081a779 27 void disableBle(){
jurica238814 3:f2078081a779 28 bleTicker.detach();
jurica238814 3:f2078081a779 29 bleT.signal_set(DISABLE_BLE_SIG);
jurica238814 3:f2078081a779 30 }
jurica238814 3:f2078081a779 31
jurica238814 3:f2078081a779 32 void int1Handler(){
jurica238814 3:f2078081a779 33 __disable_irq();
jurica238814 10:83dab6cc625d 34 //I2C i2c(I2C_DATA,I2C_CLK);
jurica238814 3:f2078081a779 35 mems.clearIntFlag();
jurica238814 3:f2078081a779 36 bleT.signal_set(ACC_INT_SIG);
jurica238814 3:f2078081a779 37 bleTicker.attach(disableBle, BLE_ACTIVE_TIME_S);
jurica238814 10:83dab6cc625d 38 //disableI2C();
jurica238814 3:f2078081a779 39 __enable_irq();
jurica238814 10:83dab6cc625d 40
jurica238814 3:f2078081a779 41 }
jurica238814 3:f2078081a779 42
jurica238814 3:f2078081a779 43
jurica238814 3:f2078081a779 44 void bleF(BLE *ble){
jurica238814 3:f2078081a779 45 // Thread function for managing BLE radio
jurica238814 3:f2078081a779 46 // First wait for acc interrupt signal
jurica238814 3:f2078081a779 47 while(true){
jurica238814 3:f2078081a779 48 Thread::signal_wait(ACC_INT_SIG);
jurica238814 3:f2078081a779 49 Thread::signal_clr(ACC_INT_SIG);
jurica238814 10:83dab6cc625d 50 //I2C i2c(I2C_DATA,I2C_CLK);
jurica238814 12:d5d47f848af5 51 printf("\r\n\r\n**********************\r\n");
jurica238814 10:83dab6cc625d 52 printf("Interrupt on accelerometer.\r\n");
jurica238814 10:83dab6cc625d 53 printf("X acceleration data: %d [mg]\r\n", mems.readXAxis()*LSB_VALUE);
jurica238814 10:83dab6cc625d 54 printf("Y acceleration data: %d [mg]\r\n", mems.readYAxis()*LSB_VALUE);
jurica238814 10:83dab6cc625d 55 printf("Z acceleration data: %d [mg]\r\n", mems.readZAxis()*LSB_VALUE);
jurica238814 12:d5d47f848af5 56 printf("******************************\r\n");
jurica238814 10:83dab6cc625d 57 //disableI2C();
jurica238814 10:83dab6cc625d 58 //__enable_irq();
jurica238814 10:83dab6cc625d 59
jurica238814 3:f2078081a779 60 ble->gap().startAdvertising();
jurica238814 10:83dab6cc625d 61 printf("Ble advertisement is ON.\r\n");
jurica238814 3:f2078081a779 62 #if DEBUG_LED
jurica238814 3:f2078081a779 63 redLed = 0;
jurica238814 3:f2078081a779 64 #endif
jurica238814 3:f2078081a779 65 Thread::signal_wait(DISABLE_BLE_SIG);
jurica238814 3:f2078081a779 66 Thread::signal_clr(DISABLE_BLE_SIG);
jurica238814 3:f2078081a779 67 ble->gap().stopAdvertising();
jurica238814 10:83dab6cc625d 68 printf("Ble advertisement is OFF.\r\n\r\n");
jurica238814 3:f2078081a779 69 #if DEBUG_LED
jurica238814 3:f2078081a779 70 redLed = 1;
jurica238814 3:f2078081a779 71 #endif
jurica238814 3:f2078081a779 72 }
jurica238814 3:f2078081a779 73 }
jurica238814 3:f2078081a779 74
jurica238814 10:83dab6cc625d 75 void measureF( void )
jurica238814 10:83dab6cc625d 76 {
jurica238814 10:83dab6cc625d 77 while(1){
jurica238814 10:83dab6cc625d 78 printf("X acceleration data: %d [mg]\r\n", mems.readXAxis()*LSB_VALUE);
jurica238814 10:83dab6cc625d 79 printf("Y acceleration data: %d [mg]\r\n", mems.readYAxis()*LSB_VALUE);
jurica238814 10:83dab6cc625d 80 printf("Z acceleration data: %d [mg]\r\n\r\n", mems.readZAxis()*LSB_VALUE);
jurica238814 12:d5d47f848af5 81 wait_ms(100);
jurica238814 10:83dab6cc625d 82 }
jurica238814 10:83dab6cc625d 83 }
jurica238814 10:83dab6cc625d 84
jurica238814 3:f2078081a779 85 int main(){
jurica238814 8:4b1ac4733b3d 86
jurica238814 10:83dab6cc625d 87 printf("Main program started.\r\n");
jurica238814 10:83dab6cc625d 88
jurica238814 8:4b1ac4733b3d 89 NRF_NVMC->CONFIG = 0x00000002; // Erase enable UICR
jurica238814 8:4b1ac4733b3d 90 NRF_NVMC->ERASEUICR = 0x00000001; // Erase all
jurica238814 8:4b1ac4733b3d 91 NRF_NVMC->CONFIG = 0x00000001; // Write enable UICR
jurica238814 8:4b1ac4733b3d 92 NRF_UICR->NFCPINS = 0xFFFFFFFE; // Change NFC to GPIO function
jurica238814 8:4b1ac4733b3d 93
jurica238814 3:f2078081a779 94 redLed = 1;
jurica238814 3:f2078081a779 95 AccVcc = 1;
jurica238814 3:f2078081a779 96 wait_ms(POWER_UP_DELAY_MS);
jurica238814 3:f2078081a779 97
jurica238814 3:f2078081a779 98 INT1.rise(int1Handler);
jurica238814 3:f2078081a779 99 NRF_GPIO->PIN_CNF[INT_PIN1] &= 0xFFFFFFF3; // NO PullUps
jurica238814 3:f2078081a779 100
jurica238814 3:f2078081a779 101 BLE &ble = BLE::Instance();
jurica238814 3:f2078081a779 102 ble.init(bleInitComplete);
jurica238814 3:f2078081a779 103
jurica238814 3:f2078081a779 104 mems.setMode(LOW_POWER);
jurica238814 3:f2078081a779 105
jurica238814 10:83dab6cc625d 106 mems.enableAxes(X_axis);
jurica238814 10:83dab6cc625d 107 mems.enableAxes(Y_axis);
jurica238814 3:f2078081a779 108 mems.enableAxes(Z_axis);
jurica238814 10:83dab6cc625d 109 mems.setODR(ODR_50Hz);
jurica238814 3:f2078081a779 110 mems.int1Setup(0x40); // IntActivity 1 driven to INT1 pad
jurica238814 3:f2078081a779 111 mems.int1Latch(0x01); // Enable int1 latch
jurica238814 9:a9c5db477f35 112 mems.int1Threshold(INT1_THRESHOLD);
jurica238814 10:83dab6cc625d 113 mems.int1Duration(INT1_DUR);
jurica238814 10:83dab6cc625d 114 mems.int1Config(0x2A); // Enable XHigh, YHigh and ZHigh
jurica238814 3:f2078081a779 115
jurica238814 3:f2078081a779 116 bleT.start(callback(bleF, &ble)); // Start bleT
jurica238814 12:d5d47f848af5 117 measureT.start(callback(measureF));
jurica238814 3:f2078081a779 118
jurica238814 3:f2078081a779 119 while(1){
jurica238814 10:83dab6cc625d 120 //disableI2C();
jurica238814 3:f2078081a779 121 Thread::wait(0xFFFFFFFF);
jurica238814 3:f2078081a779 122 }
jurica238814 3:f2078081a779 123 }