Dependencies: ros_lib_kinetic
LLComms.cpp
- Committer:
- WD40andTape
- Date:
- 2018-08-07
- Revision:
- 8:d6657767a182
- Child:
- 9:cd3607ba5643
File content as of revision 8:d6657767a182:
// 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; }