Markus Kreitzer
/
MAX31723
Library to interface with the MAX31723 PMON
Fork of MAX31855 by
Revision 2:c976447044ec, committed 2018-01-24
- Comitter:
- elec3647
- Date:
- Wed Jan 24 15:17:51 2018 +0000
- Parent:
- 1:5eeee89cb281
- Commit message:
- Updating for use with MAX 31723 PMON board
Changed in this revision
diff -r 5eeee89cb281 -r c976447044ec max31723.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/max31723.cpp Wed Jan 24 15:17:51 2018 +0000 @@ -0,0 +1,102 @@ + +#include <mbed.h> +#include "max31723.h" + +max31723::max31723(SPI& _spi, PinName _ncs) : spi(_spi), ncs(_ncs) { + +} + +float max31723::read_temp() { + short value = 0; + float temp = 0; + + //Variables to hold probe temperature + uint8_t tempProbeHigh=0; + uint8_t tempProbeLow=0; + + //Variables to hold chip temperature and device status + uint8_t tempChipHigh=0; + uint8_t tempChipLow=0; + + if (pollTimer.read_ms() > 250){ + //Set CS to initiate transfer and stop conversion + select(); + + //Read in Probe tempeature + tempProbeHigh = spi.write(0); + tempProbeLow = spi.write(0); + + //Get the chip temperature and the fault data + tempChipHigh = spi.write(0); + tempChipLow = spi.write(0); + + //Set the chip temperature + chipTemp = (tempChipHigh<<4 | tempChipLow>>4)*0.25; + + //Set CS to stop transfer and restart conversion + deselect(); + + //Check for a fault (last bit of transfer is fault bit) + if ((tempProbeLow & 1)==1){ + //Chip reports a fault, extract fault from Chip Temperature data + int faultType = (tempChipLow & 7); + + faultCode=faultType; + + return 2000+faultType; + /*if (faultType==1){ + //Open circuit (no TC) + return 2000 + faultType; + }else if (faultType==2){ + //Short to GND + return 2000 + faultType; + }else if (faultType==4){ + //Short to VCC + return 0.4; + }else{ + return 0.5; + }*/ + }else{ + //Integer value of temperature + value = (tempProbeHigh<< 6 | tempProbeLow>>2); + + //Get actual temperature (last 2 bits of integer are decimal 0.5 and 0.25) + temp = (value*0.25); // Multiply the value by 0.25 to get temp in C or + // * (9.0/5.0)) + 32.0; // Convert value to F (ensure proper floats!) + + return temp; + } + }else{ + //Chip not ready for reading + return -1; + } +} + +void max31723::select() { + //Set CS low to start transmission (interrupts conversion) + ncs = 0; +} + +void max31723::deselect() { + //Set CS high to stop transmission (restarts conversion) + ncs = 1; + //Reset conversion timer + pollTimer.reset(); +} + +void max31723::initialise(int setType) { + //Start the conversion timer + pollTimer.start(); + faultCode=0; +} + +int max31723::ready() { + //Check to see if conversion is complete + if (pollTimer.read_ms() > 250) { + //Conversion complete + return 1; + }else{ + //Conversion incomplete + return 0; + } +} \ No newline at end of file
diff -r 5eeee89cb281 -r c976447044ec max31723.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/max31723.h Wed Jan 24 15:17:51 2018 +0000 @@ -0,0 +1,31 @@ +#ifndef MAX31723_h +#define MAX31723_h + +#include "mbed.h" + +class max31723 +{ + SPI& spi; + DigitalOut ncs; + Timer pollTimer; + public: + + max31723(SPI& _spi, PinName _ncs); + void select(); + void deselect(); + void initialise(int setType=0); + + int ready(); + int faultCode; + + float chipTemp; + float read_temp(); + private: + PinName _CS_pin; + PinName _SO_pin; + PinName _SCK_pin; + int _units; + float _error; +}; + +#endif
diff -r 5eeee89cb281 -r c976447044ec max31855.cpp --- a/max31855.cpp Tue Oct 23 10:51:21 2012 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,102 +0,0 @@ - -#include <mbed.h> -#include "max31855.h" - -max31855::max31855(SPI& _spi, PinName _ncs) : spi(_spi), ncs(_ncs) { - -} - -float max31855::read_temp() { - short value = 0; - float temp = 0; - - //Variables to hold probe temperature - uint8_t tempProbeHigh=0; - uint8_t tempProbeLow=0; - - //Variables to hold chip temperature and device status - uint8_t tempChipHigh=0; - uint8_t tempChipLow=0; - - if (pollTimer.read_ms() > 250){ - //Set CS to initiate transfer and stop conversion - select(); - - //Read in Probe tempeature - tempProbeHigh = spi.write(0); - tempProbeLow = spi.write(0); - - //Get the chip temperature and the fault data - tempChipHigh = spi.write(0); - tempChipLow = spi.write(0); - - //Set the chip temperature - chipTemp = (tempChipHigh<<4 | tempChipLow>>4)*0.25; - - //Set CS to stop transfer and restart conversion - deselect(); - - //Check for a fault (last bit of transfer is fault bit) - if ((tempProbeLow & 1)==1){ - //Chip reports a fault, extract fault from Chip Temperature data - int faultType = (tempChipLow & 7); - - faultCode=faultType; - - return 2000+faultType; - /*if (faultType==1){ - //Open circuit (no TC) - return 2000 + faultType; - }else if (faultType==2){ - //Short to GND - return 2000 + faultType; - }else if (faultType==4){ - //Short to VCC - return 0.4; - }else{ - return 0.5; - }*/ - }else{ - //Integer value of temperature - value = (tempProbeHigh<< 6 | tempProbeLow>>2); - - //Get actual temperature (last 2 bits of integer are decimal 0.5 and 0.25) - temp = (value*0.25); // Multiply the value by 0.25 to get temp in C or - // * (9.0/5.0)) + 32.0; // Convert value to F (ensure proper floats!) - - return temp; - } - }else{ - //Chip not ready for reading - return -1; - } -} - -void max31855::select() { - //Set CS low to start transmission (interrupts conversion) - ncs = 0; -} - -void max31855::deselect() { - //Set CS high to stop transmission (restarts conversion) - ncs = 1; - //Reset conversion timer - pollTimer.reset(); -} - -void max31855::initialise(int setType) { - //Start the conversion timer - pollTimer.start(); - faultCode=0; -} - -int max31855::ready() { - //Check to see if conversion is complete - if (pollTimer.read_ms() > 250) { - //Conversion complete - return 1; - }else{ - //Conversion incomplete - return 0; - } -} \ No newline at end of file
diff -r 5eeee89cb281 -r c976447044ec max31855.h --- a/max31855.h Tue Oct 23 10:51:21 2012 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,31 +0,0 @@ -#ifndef MAX31855_h -#define MAX31855_h - -#include "mbed.h" - -class max31855 -{ - SPI& spi; - DigitalOut ncs; - Timer pollTimer; - public: - - max31855(SPI& _spi, PinName _ncs); - void select(); - void deselect(); - void initialise(int setType=0); - - int ready(); - int faultCode; - - float chipTemp; - float read_temp(); - private: - PinName _CS_pin; - PinName _SO_pin; - PinName _SCK_pin; - int _units; - float _error; -}; - -#endif
diff -r 5eeee89cb281 -r c976447044ec mbed.bld --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Wed Jan 24 15:17:51 2018 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/mbed_official/code/mbed/builds/7130f322cb7e \ No newline at end of file