Skip to content

Commit

Permalink
Merge branch 'master' into AIO
Browse files Browse the repository at this point in the history
  • Loading branch information
AnHardt authored Aug 27, 2020
2 parents 85ee5e8 + 4521e67 commit 4f373f5
Show file tree
Hide file tree
Showing 4 changed files with 35 additions and 90 deletions.
109 changes: 25 additions & 84 deletions Adafruit_MAX31865.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -21,12 +21,8 @@
#include <pgmspace.h>
#endif

#include <SPI.h>
#include <stdlib.h>

static SPISettings max31865_spisettings =
SPISettings(500000, MSBFIRST, SPI_MODE1);

/**************************************************************************/
/*!
@brief Create the interface object using software (bitbang) SPI
Expand All @@ -39,10 +35,7 @@ static SPISettings max31865_spisettings =
//
Adafruit_MAX31865::Adafruit_MAX31865(int8_t spi_cs, int8_t spi_mosi,
int8_t spi_miso, int8_t spi_clk) {
_sclk = spi_clk;
_cs = spi_cs;
_miso = spi_miso;
_mosi = spi_mosi;
spi_dev = Adafruit_SPIDevice(spi_cs, spi_clk, spi_miso, spi_mosi, 1000000);
}

/**************************************************************************/
Expand All @@ -52,8 +45,8 @@ Adafruit_MAX31865::Adafruit_MAX31865(int8_t spi_cs, int8_t spi_mosi,
*/
/**************************************************************************/
Adafruit_MAX31865::Adafruit_MAX31865(int8_t spi_cs) {
_cs = spi_cs;
_sclk = _miso = _mosi = -1;
spi_dev =
Adafruit_SPIDevice(spi_cs, 1000000, SPI_BITORDER_MSBFIRST, SPI_MODE1);
}

/**************************************************************************/
Expand All @@ -65,23 +58,7 @@ Adafruit_MAX31865::Adafruit_MAX31865(int8_t spi_cs) {
*/
/**************************************************************************/
bool Adafruit_MAX31865::begin(max31865_numwires_t wires) {
pinMode(_cs, OUTPUT);
digitalWrite(_cs, HIGH);

if (_sclk != -1) {
// define pin modes
pinMode(_sclk, OUTPUT);
digitalWrite(_sclk, LOW);
pinMode(_mosi, OUTPUT);
pinMode(_miso, INPUT);
} else {
// start and configure hardware SPI
SPI.begin();
}

for (uint8_t i = 0; i < 16; i++) {
// readRegister8(i);
}
spi_dev.begin();

setWires(wires);
readFault(true); // perform a selftest
Expand Down Expand Up @@ -176,6 +153,23 @@ void Adafruit_MAX31865::autoConvert(bool b) {
writeRegister8(MAX31865_CONFIG_REG, t);
}

/**************************************************************************/
/*!
@brief Whether we want filter out 50Hz noise or 60Hz noise
@param b If true, 50Hz noise is filtered, else 60Hz(default)
*/
/**************************************************************************/

void Adafruit_MAX31865::enable50Hz(bool b) {
uint8_t t = readRegister8(MAX31856_CONFIG_REG);
if (b) {
t |= MAX31856_CONFIG_FILT50HZ;
} else {
t &= ~MAX31856_CONFIG_FILT50HZ;
}
writeRegister8(MAX31856_CONFIG_REG, t);
}

/**************************************************************************/
/*!
@brief How many wires we have in our RTD setup, can be MAX31865_2WIRE,
Expand Down Expand Up @@ -295,65 +289,12 @@ void Adafruit_MAX31865::readRegisterN(uint8_t addr, uint8_t buffer[],
uint8_t n) {
addr &= 0x7F; // make sure top bit is not set

if (_sclk == -1)
SPI.beginTransaction(max31865_spisettings);
else
digitalWrite(_sclk, LOW);

digitalWrite(_cs, LOW);

spixfer(addr);

// Serial.print("$"); Serial.print(addr, HEX); Serial.print(": ");
while (n--) {
buffer[0] = spixfer(0xFF);
// Serial.print(" 0x"); Serial.print(buffer[0], HEX);
buffer++;
}
// Serial.println();

if (_sclk == -1)
SPI.endTransaction();

digitalWrite(_cs, HIGH);
spi_dev.write_then_read(&addr, 1, buffer, n);
}

void Adafruit_MAX31865::writeRegister8(uint8_t addr, uint8_t data) {
if (_sclk == -1)
SPI.beginTransaction(max31865_spisettings);
else
digitalWrite(_sclk, LOW);

digitalWrite(_cs, LOW);

spixfer(addr | 0x80); // make sure top bit is set
spixfer(data);

// Serial.print("$"); Serial.print(addr, HEX); Serial.print(" = 0x");
// Serial.println(data, HEX);

if (_sclk == -1)
SPI.endTransaction();

digitalWrite(_cs, HIGH);
}

uint8_t Adafruit_MAX31865::spixfer(uint8_t x) {
if (_sclk == -1)
return SPI.transfer(x);

// software spi
// Serial.println("Software SPI");
uint8_t reply = 0;

for (int i = 7; i >= 0; i--) {
reply <<= 1;
digitalWrite(_sclk, HIGH);
digitalWrite(_mosi, x & (1 << i));
digitalWrite(_sclk, LOW);
if (digitalRead(_miso))
reply |= 1;
}
addr |= 0x80; // make sure top bit is set

return reply;
uint8_t buffer[2] = {addr, data};
spi_dev.write(buffer, 2);
}
7 changes: 5 additions & 2 deletions Adafruit_MAX31865.h
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,8 @@
#include "WProgram.h"
#endif

#include <Adafruit_SPIDevice.h>

typedef enum max31865_numwires {
MAX31865_2WIRE = 0,
MAX31865_3WIRE = 1,
Expand All @@ -76,21 +78,22 @@ class Adafruit_MAX31865 {

void setWires(max31865_numwires_t wires);
void autoConvert(bool b);
void enable50Hz(bool b);
void enableBias(bool b);

float temperature(float RTDnominal, float refResistor);

private:
int8_t _sclk, _miso, _mosi, _cs;
Adafruit_SPIDevice spi_dev = NULL;
bool _fault;


void readRegisterN(uint8_t addr, uint8_t buffer[], uint8_t n);

uint8_t readRegister8(uint8_t addr);
uint16_t readRegister16(uint8_t addr);

void writeRegister8(uint8_t addr, uint8_t reg);
uint8_t spixfer(uint8_t addr);
};

#endif
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
# Adafruit MAX31865 ![Build Status](https://github.com/adafruit/Adafruit_MAX31865/workflows/Arduino%20Library%20CI/badge.svg)
# Adafruit MAX31865 [![Build Status](https://github.com/adafruit/Adafruit_MAX31865/workflows/Arduino%20Library%20CI/badge.svg)](https://github.com/adafruit/Adafruit_MAX31865/actions)

This is the Adafruit MAX31856 Arduino Library
This is the Adafruit MAX31865 Arduino Library

<a href="https://www.adafruit.com/products/3328"><img src="assets/image.jpg" height="300"/></a>

Tested and works great with the Adafruit Thermocouple Breakout w/MAX31856
Tested and works great with the Adafruit Thermocouple Breakout w/MAX31865
* http://www.adafruit.com/products/3328

These sensors use SPI to communicate, 4 pins are required to
Expand Down
3 changes: 2 additions & 1 deletion library.properties
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
name=Adafruit MAX31865 library
version=1.0.3
version=1.2.2
author=Adafruit
maintainer=Adafruit <info@adafruit.com>
sentence=Library for the Adafruit RTD Amplifier breakout with MAX31865
paragraph=Library for the Adafruit RTD Amplifier breakout with MAX31865
category=Sensors
url=https://github.com/adafruit/Adafruit_MAX31865
architectures=*
depends=Adafruit BusIO

0 comments on commit 4f373f5

Please sign in to comment.