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: libmDot-dev-mbed5-deprecated ISL29011
Fork of mdot-examples by
Diff: peer_to_peer_example.cpp
- Revision:
- 17:0a8d151af3c6
- Parent:
- 16:12f38e4755de
- Child:
- 18:0185bc4b9935
diff -r 12f38e4755de -r 0a8d151af3c6 peer_to_peer_example.cpp
--- a/peer_to_peer_example.cpp Sat Dec 09 03:38:19 2017 +0000
+++ b/peer_to_peer_example.cpp Sun Dec 10 01:16:02 2017 +0000
@@ -19,6 +19,7 @@
// * https://developer.mbed.org/teams/MultiTech/code/libxDot-mbed5/ //
/////////////////////////////////////////////////////////////////////////////
+
/////////////////////////////////////////////////////////////
// * these options must match between the two devices in //
// order for communication to be successful
@@ -42,6 +43,7 @@
//InterruptIn INT1();
//InterruptIn INT2();
+DigitalOut led1(LED1);
// ADXL372 Slave I2C
I2C ADXL372(I2C_SDA, I2C_SCL); // (D14,D15) (MISO, CS)
@@ -69,6 +71,8 @@
const int DS7505s_Address_8bit = DS7505s_Address_7bit << 1; // Same
+int counter = 0;
+
//-------------------All prototype functions-----------------------//
void ADXL372Initialize(void);
@@ -104,7 +108,9 @@
"b: Initialize Accelerometer with SPI\n\r"
"c: Check data in status register with SPI\n\r"
"d: Perform self test with SPI\n\r"
- "e: Perform two's complement on accel data\n\r");
+ "e: Perform two's complement on accel data\n\r"
+ "g: Set temperature critical to 24 celsius\n\r"
+ "h: Print interrupt counter\n\r");
}
@@ -136,6 +142,11 @@
}
////////////////////////////////////////////////////////////////////////////////
+void CriticalTemperatureInterrupt(void){
+
+ counter++;
+}
+
////////////////////////////////////////////////////////////////////////////////
@@ -174,6 +185,8 @@
// Change baud rate in serial terminal to this value
pc.baud(115200);
+ ADXL372.frequency(300000);
+ ADT7410_Int.fall(&CriticalTemperatureInterrupt);
mts::MTSLog::setLogLevel(mts::MTSLog::TRACE_LEVEL);
@@ -315,16 +328,21 @@
for(int i = 0; i < 15; ++i){
regAddress = 0x08; // This is the register address for XData
accelValues = accelerometerI2CRead(regAddress);
- Xmsb = twosComplementConversion(*(accelValues + 0));
- Xlsb = twosComplementConversion(*(accelValues + 1));
- Ymsb = twosComplementConversion(*(accelValues + 2));
- Ylsb = twosComplementConversion(*(accelValues + 3));
- Zmsb = twosComplementConversion(*(accelValues + 4));
- Zlsb = twosComplementConversion(*(accelValues + 5));
+ Xmsb = *(accelValues + 0);
+ Xlsb = *(accelValues + 1);
+ Ymsb = *(accelValues + 2);
+ Ylsb = *(accelValues + 3);
+ Zmsb = *(accelValues + 4);
+ Zlsb = *(accelValues + 5);
XData = (Xmsb << 8 | Xlsb) >> 4; // Combine two bytes into short int, remove last 4 flag bits
YData = (Ymsb << 8 | Ylsb) >> 4;
ZData = (Zmsb << 8 | Zlsb) >> 4;
+
+ XData = twosComplementConversion(XData);
+ YData = twosComplementConversion(YData);
+ ZData = twosComplementConversion(ZData);
+
pc.printf("\n %d: X: 0x%x | Y: 0x%x | Z: 0x%x \n\r", i+1, XData, YData, ZData);
wait(0.2);
}
@@ -344,14 +362,32 @@
case 51: // 3
pc.printf("Reading raw values from accelerometer\n\r");
for(int i = 0; i < 15; ++i){
- regAddress = 0x08;
+ regAddress = 0x08; // This is the register address for XData
accelValues = accelerometerI2CRead(regAddress);
- Xmsb = twosComplementConversion(*(accelValues + 0));
- Xlsb = twosComplementConversion(*(accelValues + 1));
- Ymsb = twosComplementConversion(*(accelValues + 2));
- Ylsb = twosComplementConversion(*(accelValues + 3));
- Zmsb = twosComplementConversion(*(accelValues + 4));
- Zlsb = twosComplementConversion(*(accelValues + 5));
+ Xmsb = *(accelValues + 0);
+ Xlsb = *(accelValues + 1);
+ Ymsb = *(accelValues + 2);
+ Ylsb = *(accelValues + 3);
+ Zmsb = *(accelValues + 4);
+ Zlsb = *(accelValues + 5);
+
+ XData = (Xmsb << 8 | Xlsb) >> 4; // Combine two bytes into short int, remove last 4 flag bits
+ YData = (Ymsb << 8 | Ylsb) >> 4;
+ ZData = (Zmsb << 8 | Zlsb) >> 4;
+
+ XData = twosComplementConversion(XData);
+ YData = twosComplementConversion(YData);
+ ZData = twosComplementConversion(ZData);
+
+ Xlsb = XData & 0xFF;
+ Xmsb = XData >> 8;
+
+ Ylsb = YData & 0xFF;
+ Ymsb = YData >> 8;
+
+ Zlsb = ZData & 0xFF;
+ Zmsb = ZData >> 8;
+
pc.printf("\n %d: X:: H: %x | L: %x | Y:: H: %x | L: %x | Z: H: %x | L: %x \n\r", i+1, Xmsb,
Xlsb,
Ymsb,
@@ -479,6 +515,28 @@
wait(0.2);
break;
+ case 102: // f: check register 0x08 and 0x09 for critical temperature
+ char * critDatapointer;
+ uint8_t CritMSB;
+ uint8_t CritLSB;
+ uint16_t CritData;
+ critDatapointer = ADT7410Read(0x08);
+
+ CritMSB = *(critDatapointer + 0);
+ CritLSB = *(critDatapointer + 1);
+
+ CritData = (CritMSB << 8) | CritLSB;
+
+ pc.printf("H: 0x%x | L: 0x%x | Data: 0x%x CritData\n\r", CritMSB, CritLSB, CritData);
+ break;
+ case 103: // g: set critical temperature to 30 celsius
+ ADT7410Write(0x08, 0x01);
+ ADT7410Write(0x09, 0x80);
+ ADT7410Write(0x03, 0x08); // Turn INT HIGH, works for the interrupt pin
+ break;
+ case 104: // h: get count value
+ pc.printf("Count Value: %d\n\r", counter);
+ break;
default:
printMenu();
break;
@@ -583,6 +641,7 @@
////////////////////////////////////////////////////////////////////////////////
void ADXL372Initialize(void){
accelerometerI2CWrite(0x3F, 0x0F); // Enable I2C highspeed,Low Pass, High pass and full bandwidth measurement mode
+ accelerometerI2CWrite(0x38, 0x01); // Enable the High pass filter corner 1 at register 0x38
/* accelerometerI2CWrite(0x24, 0x01); // X used for activity threshold
accelerometerI2CWrite(0x26, 0x01); // Y used for activity threshold
accelerometerI2CWrite(0x28, 0x01); // Z used for activity threshold */
@@ -829,7 +888,7 @@
pc.printf("Passed\n\r");
}else {pc.printf("FAILED\n\r");}
}
-////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////g
// Used to clear serial buffer in beginning
////////////////////////////////////////////////////////////////////////////////
