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
Revision 10:db20118b7d32, committed 2017-12-06
- Comitter:
- SDesign2018
- Date:
- Wed Dec 06 00:25:55 2017 +0000
- Parent:
- 9:df0c4e8a3097
- Child:
- 11:dce6c1b255fd
- Commit message:
- Added I2C function for I2C self test
Changed in this revision
| peer_to_peer_example.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/peer_to_peer_example.cpp Wed Dec 06 00:04:04 2017 +0000
+++ b/peer_to_peer_example.cpp Wed Dec 06 00:25:55 2017 +0000
@@ -75,6 +75,7 @@
int accelerometerI2CWrite(int hexAddress, int hexData);
char * accelerometerI2CRead(int hexAddress);
void ADXL372Reset(void);
+void I2CSelfTest(void);
void BitBangSPIWrite(const unsigned char regAddr, const unsigned char regData);
uint8_t BitBangSPIRead (const unsigned char regAddr);
@@ -95,12 +96,14 @@
"3: Read raw values from Accelerometer ADXL372\n\r"
"4: Read raw values from Temperature ADT7410\n\r"
"5: Initialize Accelerometer with I2C\n\r"
- "6: Reset Accelerometer\n\r"
- "7: Send Temperature data\n\r"
- "8: SPI Read values from Accelerometer ADXL372\n\r"
- "9: SPI reset for ADXL372\n\r"
- "a: Initialize Accelerometer with SPI\n\r"
- "b: Check data in status register with SPI\n\r");
+ "6: Reset Accelerometer with I2C\n\r"
+ "7: Perform self test with I2C\n\r"
+ "8: Send Temperature data\n\r"
+ "9: SPI Read values from Accelerometer ADXL372\n\r"
+ "a: SPI reset for ADXL372\n\r"
+ "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");
}
@@ -341,7 +344,10 @@
ADXL372Reset();
break;
- case 55: // 7
+ case 55: // 7: perform self test with I2C
+ I2CSelfTest();
+ break;
+ case 56: // 8: Read Temperature raws
regAddress = 0x00;
rawTempValues = ADT7410Read(regAddress);
convertedTempValue = ((*(rawTempValues + 0) << 8) | *(rawTempValues + 1)) >> 3; // Combine the two bytes
@@ -352,7 +358,7 @@
send_data(tx_data);
break;
- case 56: // 8
+ case 57: // 9: Read Accelerometer SPI
uint8_t MSB;
uint8_t LSB;
@@ -375,7 +381,7 @@
wait(0.2);
}
break;
- case 57: // 9 Reset Accelerometer with SPI
+ case 97: // a: Reset Accelerometer with SPI
int intRegister;
char input[4];
char passRegister[1];
@@ -384,18 +390,18 @@
BitBangSPIWrite(0x41, 0x52);
pc.printf("Done \n\r");
break;
- case 97: // a: Initialize Accelerometer with SPI
+ case 98: // b: Initialize Accelerometer with SPI
BitBangSPIWrite(0x24, 0x01); // Turn on X
BitBangSPIWrite(0x26, 0x01); // Turn on Y
BitBangSPIWrite(0x28, 0x01); // Turn on Z
pc.printf("Done\n\r");
break;
- case 98: // b: Check status with SPI
+ case 99: // c: Check status with SPI
uint8_t statusData = BitBangSPIRead(0x04);
pc.printf("0x%x in status\n\r", statusData);
break;
- case 99: // c: Perform self-test
+ case 100: // d: Perform self-test
uint8_t testResult;
BitBangSPIWrite(0x3F, 0x03); // put to fullbandwidth measurement mode and lpf enaled(0)
@@ -412,6 +418,7 @@
}
pc.printf("0x%x\n\r", testResult);
break;
+
default:
printMenu();
break;
@@ -851,6 +858,28 @@
}
////////////////////////////////////////////////////////////////////////////////
+/*
+ *
+ * Self-test to see if the accelerometer is working as intended
+ * Wait 300 ms.
+ * Check bit 2 for a 1 for success. Bit 1 for completion of self-test.
+ * Returns whole register
+ */
+////////////////////////////////////////////////////////////////////////////////
+void I2CSelfTest(void){
+ char *result;
+ uint8_t check;
+ accelerometerI2CWrite(0x3F, 0x03);
+ accelerometerI2CWrite(0x40, 0x01);
+ wait(0.3);
+ result = accelerometerI2CRead(0x40);
+ check = result[0];
+ if(check & 0x04){
+ pc.printf("Passed\n\r");
+ }else {pc.printf("FAILED\n\r");}
+}
+////////////////////////////////////////////////////////////////////////////////
+
// Used to clear serial buffer in beginning
////////////////////////////////////////////////////////////////////////////////
void flushSerialBuffer(void) { char char1 = 0; while (pc.readable()) { char1 = pc.getc(); } return; }
\ No newline at end of file
