Dependencies: ros_lib_kinetic
Diff: LLComms.cpp
- 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