Library to interface with the MAX31723 PMON

Dependencies:   mbed

Fork of MAX31855 by Joe Staton

Files at this revision

API Documentation at this revision

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

max31723.cpp Show annotated file Show diff for this revision Revisions of this file
max31723.h Show annotated file Show diff for this revision Revisions of this file
max31855.cpp Show diff for this revision Revisions of this file
max31855.h Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
--- /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
--- /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
--- 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
--- 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
--- /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