Lizzy project

Dependencies:   aconno_I2C Lis2dh12 adc52832_common aconno_SEGGER_RTT

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 /* 
00002  * aconno.de
00003  * Made by Jurica Resetar
00004  * All right reserved 
00005  *
00006  */
00007 
00008 #include "main.h"
00009 #include "bsp.h"
00010 #include "tasks.h"
00011 
00012 
00013 char memsI2CAddress = I2C_ADDRESS;
00014 Thread bleT;
00015 Thread measureT;
00016 Thread updateServiceT;
00017 Thread updateBuzzLedsT;
00018 Thread servLoopT;
00019 
00020 
00021 extern DigitalOut redLed;
00022 DigitalOut AccVcc(ACC_POWER_PIN);
00023 InterruptIn INT1(INT_PIN1);
00024 //InterruptIn INT2(INT_PIN2);
00025 I2C i2c(I2C_DATA,I2C_CLK);
00026 
00027 Lis2dh12 mems(&i2c, memsI2CAddress);
00028 
00029 
00030 void int1Handler(void)
00031 {
00032     __disable_irq();
00033     
00034     mems.clearIntFlag();
00035     //redLed = !redLed;
00036     
00037     measureT.signal_set(START_MEAS);
00038     
00039     __enable_irq();
00040 }
00041 
00042 int main(){
00043     
00044     tasks_init();
00045     
00046     printf("Main program started.\r\n");
00047     
00048     NRF_NVMC->CONFIG = 0x00000002;      // Erase enable UICR
00049     NRF_NVMC->ERASEUICR = 0x00000001;   // Erase all
00050     NRF_NVMC->CONFIG = 0x00000001;      // Write enable UICR
00051     NRF_UICR->NFCPINS = 0xFFFFFFFE;     // Change NFC to GPIO function
00052     
00053 
00054     AccVcc = 1;
00055     wait_ms(POWER_UP_DELAY_MS);
00056 
00057     //measureT.signal_set(START_MEAS);
00058     INT1.rise(int1Handler);
00059     NRF_GPIO->PIN_CNF[INT_PIN1] &= 0xFFFFFFF3;  // NO PullUps
00060     
00061     BLE &ble = BLE::Instance();
00062     ble.init(bleInitComplete);
00063 
00064     mems.setMode(LOW_POWER);
00065     //mems.setMode(HIGH_RES);
00066     mems.enableAxes(X_axis);
00067     mems.enableAxes(Y_axis);
00068     mems.enableAxes(Z_axis);    
00069     mems.setODR(ACC_ODR_MODE);
00070     //mems.setScale(_16g);
00071     mems.setScale(_8g);
00072     mems.int1Setup(0x40);       // IntActivity 1 driven to INT1 pad
00073     mems.int1Latch(0x01);       // Enable int1 latch
00074     mems.int1Threshold(INT1_THRESHOLD); 
00075     mems.int1Duration(INT1_DUR);            
00076     mems.int1Config(0x2A);      // Enable XHigh, YHigh and ZHigh
00077 
00078     bleT.start(callback(bleF, &ble));   // Start bleT
00079     measureT.start(callback(measureF, &mems));
00080     updateServiceT.start(updateServiceF);
00081     updateBuzzLedsT.start(updateBuzzLedsF);
00082     servLoopT.start(servLoopC);
00083     
00084     while(1){
00085         //disableI2C();
00086         //ble.waitForEvent();
00087         Thread::wait(0xFFFFFFFF);
00088     }
00089 }