Parcourir la source

Fix compile error with DUE + MAX6675 (#13086)

Scott Lahteine il y a 6 ans
Parent
révision
3c49396370
Aucun compte lié à l'adresse e-mail de l'auteur
2 fichiers modifiés avec 18 ajouts et 21 suppressions
  1. 10
    9
      Marlin/src/libs/private_spi.h
  2. 8
    12
      Marlin/src/module/temperature.cpp

+ 10
- 9
Marlin/src/libs/private_spi.h Voir le fichier

33
     FORCE_INLINE static uint8_t receive() { return softSPI.receive(); }
33
     FORCE_INLINE static uint8_t receive() { return softSPI.receive(); }
34
 };
34
 };
35
 
35
 
36
-
37
 // Hardware SPI
36
 // Hardware SPI
38
 template<>
37
 template<>
39
 class SPIclass<MISO_PIN, MOSI_PIN, SCK_PIN> {
38
 class SPIclass<MISO_PIN, MOSI_PIN, SCK_PIN> {
40
   public:
39
   public:
41
     FORCE_INLINE static void init() {
40
     FORCE_INLINE static void init() {
42
-        OUT_WRITE(SCK_PIN, LOW);
43
-        OUT_WRITE(MOSI_PIN, HIGH);
44
-        SET_INPUT(MISO_PIN);
45
-        WRITE(MISO_PIN, HIGH);
41
+      OUT_WRITE(SCK_PIN, LOW);
42
+      OUT_WRITE(MOSI_PIN, HIGH);
43
+      SET_INPUT_PULLUP(MISO_PIN);
46
     }
44
     }
47
     FORCE_INLINE static uint8_t receive() {
45
     FORCE_INLINE static uint8_t receive() {
48
-      SPDR = 0;
49
-      for (;!TEST(SPSR, SPIF););
50
-      return SPDR;
46
+      #if defined(__AVR__) || defined(__MK20DX256__) || defined(__MK64FX512__) || defined(__MK66FX1M0__)
47
+        SPDR = 0;
48
+        for (;!TEST(SPSR, SPIF););
49
+        return SPDR;
50
+      #else
51
+        return spiRec();
52
+      #endif
51
     }
53
     }
52
-
53
 };
54
 };

+ 8
- 12
Marlin/src/module/temperature.cpp Voir le fichier

33
 #include "../core/language.h"
33
 #include "../core/language.h"
34
 #include "../HAL/shared/Delay.h"
34
 #include "../HAL/shared/Delay.h"
35
 
35
 
36
-#if ENABLED(HEATER_0_USES_MAX6675)
36
+#define MAX6675_SEPARATE_SPI (ENABLED(HEATER_0_USES_MAX6675) || ENABLED(HEATER_1_USES_MAX6675)) && PIN_EXISTS(MAX6675_SCK) && PIN_EXISTS(MAX6675_DO)
37
+
38
+#if MAX6675_SEPARATE_SPI
37
   #include "../libs/private_spi.h"
39
   #include "../libs/private_spi.h"
38
 #endif
40
 #endif
39
 
41
 
1205
 
1207
 
1206
 #endif
1208
 #endif
1207
 
1209
 
1208
-#if ENABLED(HEATER_0_USES_MAX6675)
1209
-  #ifndef MAX6675_SCK_PIN
1210
-    #define MAX6675_SCK_PIN SCK_PIN
1211
-  #endif
1212
-  #ifndef MAX6675_DO_PIN
1213
-    #define MAX6675_DO_PIN MISO_PIN
1214
-  #endif
1210
+#if MAX6675_SEPARATE_SPI
1215
   SPIclass<MAX6675_DO_PIN, MOSI_PIN, MAX6675_SCK_PIN> max6675_spi;
1211
   SPIclass<MAX6675_DO_PIN, MOSI_PIN, MAX6675_SCK_PIN> max6675_spi;
1216
 #endif
1212
 #endif
1217
 
1213
 
1289
     #endif
1285
     #endif
1290
   #endif
1286
   #endif
1291
 
1287
 
1292
-  #if ENABLED(HEATER_0_USES_MAX6675)
1288
+  #if MAX6675_SEPARATE_SPI
1293
 
1289
 
1294
     OUT_WRITE(SCK_PIN, LOW);
1290
     OUT_WRITE(SCK_PIN, LOW);
1295
     OUT_WRITE(MOSI_PIN, HIGH);
1291
     OUT_WRITE(MOSI_PIN, HIGH);
1300
     OUT_WRITE(SS_PIN, HIGH);
1296
     OUT_WRITE(SS_PIN, HIGH);
1301
     OUT_WRITE(MAX6675_SS_PIN, HIGH);
1297
     OUT_WRITE(MAX6675_SS_PIN, HIGH);
1302
 
1298
 
1303
-  #endif // HEATER_0_USES_MAX6675
1299
+  #endif
1304
 
1300
 
1305
   #if ENABLED(HEATER_1_USES_MAX6675)
1301
   #if ENABLED(HEATER_1_USES_MAX6675)
1306
     OUT_WRITE(MAX6675_SS2_PIN, HIGH);
1302
     OUT_WRITE(MAX6675_SS2_PIN, HIGH);
1792
     //
1788
     //
1793
     // TODO: spiBegin, spiRec and spiInit doesn't work when soft spi is used.
1789
     // TODO: spiBegin, spiRec and spiInit doesn't work when soft spi is used.
1794
     //
1790
     //
1795
-    #if MB(MIGHTYBOARD_REVE)
1791
+    #if MAX6675_SEPARATE_SPI
1796
       spiBegin();
1792
       spiBegin();
1797
       spiInit(MAX6675_SPEED_BITS);
1793
       spiInit(MAX6675_SPEED_BITS);
1798
     #endif
1794
     #endif
1813
     max6675_temp = 0;
1809
     max6675_temp = 0;
1814
     for (uint8_t i = sizeof(max6675_temp); i--;) {
1810
     for (uint8_t i = sizeof(max6675_temp); i--;) {
1815
       max6675_temp |= (
1811
       max6675_temp |= (
1816
-        #if MB(MIGHTYBOARD_REVE)
1812
+        #if MAX6675_SEPARATE_SPI
1817
           max6675_spi.receive()
1813
           max6675_spi.receive()
1818
         #else
1814
         #else
1819
           spiRec()
1815
           spiRec()

Chargement…
Annuler
Enregistrer