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.
Dependents: Inductive_Sensor_3
Fork of LDC1101 by
Diff: LDC1000.cpp
- Revision:
- 8:b5fb9681869c
- Parent:
- 7:7f1522ad3df5
- Child:
- 9:6e2d808b113d
--- a/LDC1000.cpp Tue May 26 14:50:16 2015 +0000
+++ b/LDC1000.cpp Fri May 29 09:28:46 2015 +0000
@@ -20,27 +20,28 @@
wait_us(100);
mode(LDC_MODE_STANDBY);
setFrequency(f_external);
- wait(0.1);
- //setOutputPower(LDC_AMPLITUDE_4V);
+ wait(0.1);
wait_us(10);
- //setResponseTime(LDC_RESPONSE_384);
- //setWatchdog(5000);
+
+ setWatchdog(5000);
+ setResponseTime(LDC_RESPONSE_6144);
+ setOutputPower(LDC_AMPLITUDE_4V);
-// Write comando's like in EVM start log:
- //writeSPIregister(0x0B,0x00);
- //writeSPIregister(0x01,0x0E);
- //writeSPIregister(0x02,0x3C);
+//*** Write comando's like in EVM start log:
+/* writeSPIregister(0x0B,0x00); */
+ writeSPIregister(0x01,0x0E);
+ writeSPIregister(0x02,0x3C);
writeSPIregister(0x03,0x15);
- writeSPIregister(0x04,0x17);
- writeSPIregister(0x05,0x00);
- //writeSPIregister(0x06,0x50);
- //writeSPIregister(0x07,0x14);
- //writeSPIregister(0x08,0xC0);
- //writeSPIregister(0x09,0x12);
- //writeSPIregister(0x0A,0x04);
-// writeSPIregister(0x0C,0x01);
- //writeSPIregister(0x0B,0x01);
-
+ writeSPIregister(0x04,0x17);
+ writeSPIregister(0x05,0x00);
+ writeSPIregister(0x06,0x50);
+ writeSPIregister(0x07,0x14);
+ writeSPIregister(0x08,0xC0);
+ writeSPIregister(0x09,0x12);
+ writeSPIregister(0x0A,0x04);
+ writeSPIregister(0x0C,0x01);
+ writeSPIregister(0x0B,0x01);/*
+*/
mode(LDC_MODE_ACTIVE);
}
@@ -50,7 +51,7 @@
_amplitude = amplitude;
readSPI(&buffer, 0x04);
buffer &= 0xE7; //clear amplitude bits
- buffer |= (amplitude<<3) & 0xE7;
+ buffer |= (amplitude<<3) & 0x18;
writeSPI(&buffer,0x04);
}
@@ -60,7 +61,6 @@
uint8_t buffer;
buffer = 68.94*log(frequency/2500);
writeSPI(&buffer,0x03);
-
}
void LDC1000::setResponseTime(LDC_RESPONSE responsetime)
@@ -70,6 +70,7 @@
readSPI(&buffer, 0x04);
buffer &= 0xF8; //clear responsetime bits
buffer |= responsetime & 0x07;
+ //writeSPIregister(0x04,buffer);
writeSPI(&buffer,0x04);
}
@@ -82,12 +83,33 @@
float LDC1000::getInductance()
{
- uint16_t resp[] = {192, 384, 768, 1536, 3072, 6144};
+ uint16_t resp[] = {0,0,192, 384, 768, 1536, 3072, 6144};
_raw_l = readRawCounts();
_fsensor = (_frequency/(_raw_l*3.0))*resp[(uint8_t)(_responsetime)];
return 1./(cap*pow(2*PI*_fsensor,2));
};
+
+/* oude code terugzetten*/
+
+uint32_t LDC1000::readRawCounts(void)
+{
+ //union
+ //{
+ // uint8_t buf[4];
+ // uint32_t value;
+ //} val;
+ //val.value = 0;
+ uint8_t val[5];
+ readSPI(val,0x21,5);
+ return (uint32_t)(*(&val[2]));
+}
+
+
+
+
+
+ /*
uint32_t LDC1000::readRawCounts(void)
{
union
@@ -95,13 +117,11 @@
uint8_t buf[4];
uint32_t value;
} val;
- val.value = 0;
- uint8_t bla[5];
- readSPI(bla,0x21,5);
+ val.value = 8;
+ readSPI(val.buf,0x23,3);
return val.value;
}
-
-
+*/
void LDC1000::readSPI(uint8_t *data, uint8_t address, uint8_t num_bytes)
{
@@ -123,4 +143,20 @@
_spiport.write(data[i]);
}
_cs_pin.write(1);
-}
\ No newline at end of file
+}
+
+// EXTRA test get and print variables values to verify (to calculate the induction)
+// Begin ***********************************************************
+ float LDC1000::get_raw_l() {_raw_l = readRawCounts();
+ return _raw_l;};
+ float LDC1000::get_fsensor() {
+ uint16_t resp[] = {0, 0, 192, 384, 768, 1536, 3072, 6144};
+ _raw_l = readRawCounts();
+ _fsensor = (_frequency/(_raw_l*3.0))*resp[(uint8_t)(_responsetime)];
+ return _fsensor;};
+
+ float LDC1000::get_frequency() {return _frequency;};
+ float LDC1000::get_responsetime() {return _responsetime;};
+ float LDC1000::get_cap() {return cap;};
+// END ***********************************************************
+
