Dependencies:   ros_lib_kinetic

Revision:
8:d6657767a182
Child:
9:cd3607ba5643
diff -r 5b6a2cefbf3b -r d6657767a182 LLComms.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/LLComms.cpp	Tue Aug 07 09:18:15 2018 +0000
@@ -0,0 +1,77 @@
+// LLComms.cpp
+
+#include "LLComms.h"
+
+LLComms::LLComms(int spi_frequency) : 
+    pinGate6(PE_11),
+    spi(PC_12, PC_11, PC_10),
+    pinCheck(PE_5),
+    // These interrupt pins have to be declared AFTER SPI declaration. No Clue Why.
+    pinGate0(PF_11),
+    pinGate1(PG_14),
+    pinGate2(PF_15),
+    pinGate3(PF_12),
+    pinGate4(PF_3),
+    pinGate5(PF_13),
+    //pinGate6(PE_11), // See above nonsense
+    pinGate7(PE_13),
+    pinReset(PD_2) 
+{ // Constructor
+    _spi_frequency = spi_frequency;
+
+    PinName LLPins[8] = {PD_15, PE_10, PD_14, PD_11, PE_7, PD_12, PF_10, PD_13};
+    PinName ADCPins[8] = {PG_12, PG_9, PE_1, PG_0, PD_0, PD_1, PF_0, PF_1};
+    for (short int i = 0; i < 8; i++) {
+        cs_LL[i] = new DigitalOut(LLPins[i]);
+        cs_ADC[i] = new DigitalOut(ADCPins[i]);
+    }
+}
+
+double LLComms::ReadADCPosition_mtrs(int channel) {
+    unsigned int outputA;
+    unsigned int outputB;
+    int output;
+    double dblOutput;
+
+    spi.format(8,0);
+    spi.frequency(1000000);
+    
+    *cs_ADC[channel] = 0;
+    spi.write(PREAMBLE);
+    outputA = spi.write(CHAN_3);
+    outputB = spi.write(0xFF);
+    *cs_ADC[channel] = 1;
+    
+    outputA = outputA & DATA_MASK;
+    outputA = outputA<<8;
+    output = (outputA | outputB);
+    output = 4095- output;
+    dblOutput = (double) (output);
+    dblOutput = dblOutput*0.0229 - 21.582;
+    return dblOutput;
+}
+    
+double LLComms::ReadADCPressure_bar(int channel) {
+    unsigned int outputA;
+    unsigned int outputB;
+    int output;
+    double dblOutput;
+
+    spi.format(8,0);
+    spi.frequency(1000000);
+    
+    *cs_ADC[channel] = 0;
+    spi.write(PREAMBLE);
+    outputA = spi.write(CHAN_1);
+    outputB = spi.write(0xFF);
+    *cs_ADC[channel] = 1;
+    
+    outputA = outputA & DATA_MASK;
+    outputA = outputA<<8;
+    output = (outputA | outputB);
+    
+    dblOutput = (double)(output);
+    dblOutput = dblOutput-502.0;
+    dblOutput = dblOutput/4095.0*8.0;
+    return dblOutput;
+}
\ No newline at end of file