Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 9 additions & 17 deletions Marlin/src/libs/MAX31865.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@
//#define MAX31865_DEBUG
//#define MAX31865_DEBUG_SPI

//TODO: switch to SPIclass/SoftSPI
#include <SoftwareSPI.h>

#include "../inc/MarlinConfig.h"

Expand All @@ -62,7 +62,7 @@ SPISettings MAX31865::spiConfig = SPISettings(
500000
#endif
, MSBFIRST
, SPI_MODE_1 // CPOL0 CPHA1
, SPI_MODE1 // CPOL0 CPHA1
);

#ifndef LARGE_PINMAP
Expand Down Expand Up @@ -157,10 +157,9 @@ void MAX31865::begin(max31865_numwires_t wires, float zero, float ref) {
#ifdef MAX31865_DEBUG
SERIAL_ECHOLN("Initializing MAX31865 Software SPI");
#endif

OUT_WRITE(_sclk, LOW);
SET_OUTPUT(_mosi);
SET_INPUT(_miso);

swSpiBegin(_sclk, _miso, _mosi);

} else {
// start and configure hardware SPI
#ifdef MAX31865_DEBUG
Expand All @@ -170,6 +169,9 @@ void MAX31865::begin(max31865_numwires_t wires, float zero, float ref) {
SPI.begin();
}

// SPI Begin must be called first, then init
_spi_speed = swSpiInit(SPI_QUARTER_SPEED, _sclk, _mosi);

setWires(wires);
enableBias(false);
autoConvert(false);
Expand Down Expand Up @@ -484,17 +486,7 @@ uint8_t MAX31865::spixfer(uint8_t x) {
if (_sclk == TERN(LARGE_PINMAP, -1UL, -1))
return SPI.transfer(x);

uint8_t reply = 0;
for (int i = 7; i >= 0; i--) {
reply <<= 1;
WRITE(_sclk, HIGH);
WRITE(_mosi, x & (1 << i));
WRITE(_sclk, LOW);
if (READ(_miso))
reply |= 1;
}

return reply;
return swSpiTransfer(x, _spi_speed, _sclk, _miso, _mosi);
}

#endif // HAS_MAX31865 && !LIB_USR_MAX31865
1 change: 1 addition & 0 deletions Marlin/src/libs/MAX31865.h
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,7 @@ class MAX31865 {
static SPISettings spiConfig;

TERN(LARGE_PINMAP, uint32_t, uint8_t) _sclk, _miso, _mosi, _cs;
uint8_t _spi_speed;
float Rzero, Rref;

void setConfig(uint8_t config, bool enable);
Expand Down