Dependencies: ros_lib_kinetic
Diff: LLComms.cpp
- Revision:
- 12:595ed862e52f
- Parent:
- 11:7029367a1840
- Child:
- 13:a373dfc57b89
--- a/LLComms.cpp Fri Aug 10 10:40:18 2018 +0000 +++ b/LLComms.cpp Mon Aug 13 09:16:29 2018 +0000 @@ -2,7 +2,8 @@ #include "LLComms.h" -LLComms::LLComms(int spi_frequency) : +LLComms::LLComms() : + queue(32 * EVENTS_EVENT_SIZE), //8 * EVENTS_EVENT_SIZE pinGate6(PE_11), spi(PC_12, PC_11, PC_10), pinCheck(PE_5), @@ -15,12 +16,11 @@ pinGate5(PF_13), //pinGate6(PE_11), // See above nonsense pinGate7(PE_13), - pinReset(PD_2), - queue(32 * EVENTS_EVENT_SIZE) + 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 LLPins[8] = {PD_15, PE_10, PD_11, PD_14, PE_7, PD_12, PF_10, PD_13}; + //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++) { isDataReady[i] = 0; @@ -41,23 +41,23 @@ pinReset = 1; // Ready to go // Set up rise interrupts MIGHT NOT NEED TO BE POINTERS - pinGate0.rise(this,&LLComms::rise0); - pinGate1.rise(this,&LLComms::rise1); - pinGate2.rise(this,&LLComms::rise2); - pinGate3.rise(this,&LLComms::rise3); - pinGate4.rise(this,&LLComms::rise4); - pinGate5.rise(this,&LLComms::rise5); - pinGate6.rise(this,&LLComms::rise6); - pinGate7.rise(this,&LLComms::rise7); + pinGate0.rise(callback(this,&LLComms::rise0)); + pinGate1.rise(callback(this,&LLComms::rise1)); + pinGate2.rise(callback(this,&LLComms::rise2)); + pinGate3.rise(callback(this,&LLComms::rise3)); + pinGate4.rise(callback(this,&LLComms::rise4)); + pinGate5.rise(callback(this,&LLComms::rise5)); + pinGate6.rise(callback(this,&LLComms::rise6)); + pinGate7.rise(callback(this,&LLComms::rise7)); // Set up fall interrupts MIGHT NOT NEED TO BE POINTERS - pinGate0.fall(this,&LLComms::fall0); - pinGate1.fall(this,&LLComms::fall1); - pinGate2.fall(this,&LLComms::fall2); - pinGate3.fall(this,&LLComms::fall3); - pinGate4.fall(this,&LLComms::fall4); - pinGate5.fall(this,&LLComms::fall5); - pinGate6.fall(this,&LLComms::fall6); - pinGate7.fall(this,&LLComms::fall7); + pinGate0.fall(callback(this,&LLComms::fall0)); + pinGate1.fall(callback(this,&LLComms::fall1)); + pinGate2.fall(callback(this,&LLComms::fall2)); + pinGate3.fall(callback(this,&LLComms::fall3)); + pinGate4.fall(callback(this,&LLComms::fall4)); + pinGate5.fall(callback(this,&LLComms::fall5)); + pinGate6.fall(callback(this,&LLComms::fall6)); + pinGate7.fall(callback(this,&LLComms::fall7)); } //LLComms::~LLComms(void) { } // Destructor @@ -67,7 +67,7 @@ // Get data from controller spi.format(16,2); - spi.frequency(_spi_frequency); + spi.frequency(LOW_LEVEL_SPI_FREQUENCY); mutChannel[channel].lock(); // Lock mutex for specific Channel *cs_LL[channel] = 0; // Select relevant chip intPosSPI_Rx[channel] = spi.write(demandPosition[channel]); // Transmit & receive @@ -84,7 +84,7 @@ intPosSPI_Rx[channel] = intPosSPI_Rx[channel] & 0x1FFF; //dblPosition_mtrs[channel] = (double)intPosSPI_Rx[channel]/8191*(MAX_ACTUATOR_LENGTH/DBL_ACTUATOR_CONVERSION[channel])/1000; mutChannel[channel].unlock();//unlock mutex for specific channel - //printf("%d, %d\r\n",intPosSPI_Rx[0],_intDemandPos_Tx[0]); + //if(IS_PRINT_OUTPUT) printf("%d, %d\r\n",intPosSPI_Rx[0],_intDemandPos_Tx[0]); } // Common rise handler function @@ -120,6 +120,7 @@ void LLComms::fall6(void) { common_fall_handler(6); } void LLComms::fall7(void) { common_fall_handler(7); } +// NEEDS CALIBRATING double LLComms::ReadADCPosition_mtrs(int channel) { unsigned int outputA; unsigned int outputB;