Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: Lis2dh12 aconno_I2C aconno_nrf52_uart adc52832_common aconno_SEGGER_RTT
main.cpp
00001 /* 00002 * aconno.de 00003 * Made by Jurica Resetar 00004 * All right reserved 00005 * 00006 */ 00007 00008 #include "main.h" 00009 00010 void disableI2C(){ 00011 NRF_TWI0->ENABLE = 0; 00012 NRF_TWI0->PSELSCL = 0xFFFFFFFF; 00013 NRF_TWI1->ENABLE = 0; 00014 NRF_TWI1->PSELSCL = 0xFFFFFFFF; 00015 NRF_TWIM0->ENABLE = 0; 00016 NRF_TWIM0->PSEL.SCL = 0x80000000; 00017 NRF_TWIM0->PSEL.SDA = 0x80000000; 00018 NRF_TWIM1->ENABLE = 0; 00019 NRF_TWIM0->PSEL.SCL = 0x80000000; 00020 NRF_TWIM0->PSEL.SDA = 0x80000000; 00021 DigitalOut foo(I2C_DATA); 00022 DigitalOut bar(I2C_CLK); 00023 foo = 1; 00024 bar = 1; 00025 } 00026 00027 void disableBle(){ 00028 bleTicker.detach(); 00029 bleT.signal_set(DISABLE_BLE_SIG); 00030 } 00031 00032 void int1Handler(){ 00033 __disable_irq(); 00034 I2C i2c(I2C_DATA,I2C_CLK); 00035 mems.clearIntFlag(); 00036 bleT.signal_set(ACC_INT_SIG); 00037 bleTicker.attach(disableBle, BLE_ACTIVE_TIME_S); 00038 disableI2C(); 00039 __enable_irq(); 00040 00041 } 00042 00043 00044 void bleF(BLE *ble){ 00045 // Thread function for managing BLE radio 00046 // First wait for acc interrupt signal 00047 while(true){ 00048 Thread::signal_wait(ACC_INT_SIG); 00049 Thread::signal_clr(ACC_INT_SIG); 00050 //I2C i2c(I2C_DATA,I2C_CLK); 00051 00052 printf("\r\n\r\n**********************\r\n"); 00053 printf("Interrupt on accelerometer.\r\n"); 00054 printf("X acceleration data: %d [mg]\r\n", mems.readXAxis()*LSB_VALUE); 00055 printf("Y acceleration data: %d [mg]\r\n", mems.readYAxis()*LSB_VALUE); 00056 printf("Z acceleration data: %d [mg]\r\n", mems.readZAxis()*LSB_VALUE); 00057 printf("******************************\r\n"); 00058 00059 //disableI2C(); 00060 //__enable_irq(); 00061 00062 ble->gap().startAdvertising(); 00063 printf("Ble advertisement is ON.\r\n"); 00064 #if DEBUG_LED 00065 redLed = 0; 00066 #endif 00067 Thread::signal_wait(DISABLE_BLE_SIG); 00068 Thread::signal_clr(DISABLE_BLE_SIG); 00069 ble->gap().stopAdvertising(); 00070 printf("Ble advertisement is OFF.\r\n\r\n"); 00071 #if DEBUG_LED 00072 redLed = 1; 00073 #endif 00074 } 00075 } 00076 00077 void measureF( void ) 00078 { 00079 while(1){ 00080 printf("X acceleration data: %d [mg]\r\n", mems.readXAxis()*LSB_VALUE); 00081 printf("Y acceleration data: %d [mg]\r\n", mems.readYAxis()*LSB_VALUE); 00082 printf("Z acceleration data: %d [mg]\r\n\r\n", mems.readZAxis()*LSB_VALUE); 00083 wait_ms(100); 00084 } 00085 } 00086 00087 int main(){ 00088 00089 printf("Main program started.\r\n"); 00090 00091 NRF_NVMC->CONFIG = 0x00000002; // Erase enable UICR 00092 NRF_NVMC->ERASEUICR = 0x00000001; // Erase all 00093 NRF_NVMC->CONFIG = 0x00000001; // Write enable UICR 00094 NRF_UICR->NFCPINS = 0xFFFFFFFE; // Change NFC to GPIO function 00095 00096 redLed = 1; 00097 AccVcc = 1; 00098 wait_ms(POWER_UP_DELAY_MS); 00099 00100 INT1.rise(int1Handler); 00101 NRF_GPIO->PIN_CNF[INT_PIN1] &= 0xFFFFFFF3; // NO PullUps 00102 00103 BLE &ble = BLE::Instance(); 00104 ble.init(bleInitComplete); 00105 00106 mems.setMode(LOW_POWER); 00107 00108 mems.enableAxes(X_axis); 00109 mems.enableAxes(Y_axis); 00110 mems.enableAxes(Z_axis); 00111 mems.setODR(ODR_50Hz); 00112 mems.setScale(_16g); 00113 mems.int1Setup(0x40); // IntActivity 1 driven to INT1 pad 00114 mems.int1Latch(0x01); // Enable int1 latch 00115 mems.int1Threshold(INT1_THRESHOLD); 00116 mems.int1Duration(INT1_DUR); 00117 mems.int1Config(0x2A); // Enable XHigh, YHigh and ZHigh 00118 00119 bleT.start(callback(bleF, &ble)); // Start bleT 00120 //measureT.start(callback(measureF)); 00121 00122 while(1){ 00123 disableI2C(); 00124 Thread::wait(0xFFFFFFFF); 00125 } 00126 }
Generated on Mon Jul 18 2022 00:03:31 by
1.7.2