Kaynağa Gözat

🩹 Use <SoftwareSPI.h> in MAX31865 lib (#22618)

Jin 2 yıl önce
ebeveyn
işleme
181530db76
No account linked to committer's email address
2 değiştirilmiş dosya ile 10 ekleme ve 17 silme
  1. 9
    17
      Marlin/src/libs/MAX31865.cpp
  2. 1
    0
      Marlin/src/libs/MAX31865.h

+ 9
- 17
Marlin/src/libs/MAX31865.cpp Dosyayı Görüntüle

44
 //#define MAX31865_DEBUG
44
 //#define MAX31865_DEBUG
45
 //#define MAX31865_DEBUG_SPI
45
 //#define MAX31865_DEBUG_SPI
46
 
46
 
47
-//TODO: switch to SPIclass/SoftSPI
47
+#include <SoftwareSPI.h>
48
 
48
 
49
 #include "../inc/MarlinConfig.h"
49
 #include "../inc/MarlinConfig.h"
50
 
50
 
62
     500000
62
     500000
63
   #endif
63
   #endif
64
   , MSBFIRST
64
   , MSBFIRST
65
-  , SPI_MODE_1 // CPOL0 CPHA1
65
+  , SPI_MODE1 // CPOL0 CPHA1
66
 );
66
 );
67
 
67
 
68
 #ifndef LARGE_PINMAP
68
 #ifndef LARGE_PINMAP
157
     #ifdef MAX31865_DEBUG
157
     #ifdef MAX31865_DEBUG
158
       SERIAL_ECHOLN("Initializing MAX31865 Software SPI");
158
       SERIAL_ECHOLN("Initializing MAX31865 Software SPI");
159
     #endif
159
     #endif
160
-
161
-    OUT_WRITE(_sclk, LOW);
162
-    SET_OUTPUT(_mosi);
163
-    SET_INPUT(_miso);
160
+    
161
+    swSpiBegin(_sclk, _miso, _mosi);
162
+    
164
   } else {
163
   } else {
165
     // start and configure hardware SPI
164
     // start and configure hardware SPI
166
     #ifdef MAX31865_DEBUG
165
     #ifdef MAX31865_DEBUG
170
     SPI.begin();
169
     SPI.begin();
171
   }
170
   }
172
 
171
 
172
+  // SPI Begin must be called first, then init
173
+  _spi_speed = swSpiInit(SPI_QUARTER_SPEED, _sclk, _mosi);
174
+
173
   setWires(wires);
175
   setWires(wires);
174
   enableBias(false);
176
   enableBias(false);
175
   autoConvert(false);
177
   autoConvert(false);
484
   if (_sclk == TERN(LARGE_PINMAP, -1UL, -1))
486
   if (_sclk == TERN(LARGE_PINMAP, -1UL, -1))
485
     return SPI.transfer(x);
487
     return SPI.transfer(x);
486
 
488
 
487
-  uint8_t reply = 0;
488
-  for (int i = 7; i >= 0; i--) {
489
-    reply <<= 1;
490
-    WRITE(_sclk, HIGH);
491
-    WRITE(_mosi, x & (1 << i));
492
-    WRITE(_sclk, LOW);
493
-    if (READ(_miso))
494
-      reply |= 1;
495
-  }
496
-
497
-  return reply;
489
+  return swSpiTransfer(x, _spi_speed, _sclk, _miso, _mosi);
498
 }
490
 }
499
 
491
 
500
 #endif // HAS_MAX31865 && !LIB_USR_MAX31865
492
 #endif // HAS_MAX31865 && !LIB_USR_MAX31865

+ 1
- 0
Marlin/src/libs/MAX31865.h Dosyayı Görüntüle

90
   static SPISettings spiConfig;
90
   static SPISettings spiConfig;
91
 
91
 
92
   TERN(LARGE_PINMAP, uint32_t, uint8_t) _sclk, _miso, _mosi, _cs;
92
   TERN(LARGE_PINMAP, uint32_t, uint8_t) _sclk, _miso, _mosi, _cs;
93
+  uint8_t _spi_speed;
93
   float Rzero, Rref;
94
   float Rzero, Rref;
94
 
95
 
95
   void setConfig(uint8_t config, bool enable);
96
   void setConfig(uint8_t config, bool enable);

Loading…
İptal
Kaydet