Browse Source

Fix mega Port J endstop interrupts (#15758)

Giuliano Zaro 5 years ago
parent
commit
65ef774e8d

+ 5
- 5
Marlin/src/HAL/HAL_AVR/endstop_interrupts.h View File

@@ -46,16 +46,16 @@ void endstop_ISR() { endstops.update(); }
46 46
 /**
47 47
  * Patch for pins_arduino.h (...\Arduino\hardware\arduino\avr\variants\mega\pins_arduino.h)
48 48
  *
49
- * These macros for the Arduino MEGA do not include the two connected pins on Port J (D13, D14).
49
+ * These macros for the Arduino MEGA do not include the two connected pins on Port J (D14, D15).
50 50
  * So we extend them here because these are the normal pins for Y_MIN and Y_MAX on RAMPS.
51 51
  * There are more PCI-enabled processor pins on Port J, but they are not connected to Arduino MEGA.
52 52
  */
53 53
 #if defined(ARDUINO_AVR_MEGA2560) || defined(ARDUINO_AVR_MEGA)
54 54
   #define digitalPinHasPCICR(p)   (WITHIN(p, 10, 15) || WITHIN(p, 50, 53) || WITHIN(p, 62, 69))
55
-  #define moreDigitalPinToPCICR(p)    digitalPinToPCICR(WITHIN(p, 13, 14) ? 10 : p)
56
-  #define moreDigitalPinToPCICRbit(p) digitalPinToPCICRbit(p == 13 ? 10 : p == 14 ? 15 : p)
57
-  #define moreDigitalPinToPCMSK(p)    digitalPinToPCMSK(   p == 13 ? 10 : p == 14 ? 15 : p)
58
-  #define moreDigitalPinToPCMSKbit(p) digitalPinToPCMSKbit(p == 13 ? 10 : p == 14 ? 51 : p)
55
+  #define moreDigitalPinToPCICR(p)    digitalPinToPCICR(WITHIN(p, 14, 15) ? 10 : p)
56
+  #define moreDigitalPinToPCICRbit(p) (WITHIN(p, 14, 15) ? 1 : digitalPinToPCICRbit(p))
57
+  #define moreDigitalPinToPCMSK(p)    (WITHIN(p, 14, 15) ? (&PCMSK1) : digitalPinToPCMSK(p))
58
+  #define moreDigitalPinToPCMSKbit(p) digitalPinToPCMSKbit(WITHIN(p, 14, 15) ? (p)+36 : p)
59 59
 #endif
60 60
 
61 61
 

+ 1
- 1
buildroot/share/pin_interrupt_test/pin_interrupt_test.ino View File

@@ -2,7 +2,7 @@
2 2
 // Compile with the same build settings you'd use for Marlin.
3 3
 
4 4
 #if defined(ARDUINO_AVR_MEGA2560) || defined(ARDUINO_AVR_MEGA)
5
-  #define moreDigitalPinToPCICR(p) digitalPinToPCICR(WITHIN(p, 13, 14) ? 10 : p)
5
+  #define moreDigitalPinToPCICR(p) digitalPinToPCICR(WITHIN(p, 14, 15) ? 10 : p)
6 6
 #else
7 7
   #define moreDigitalPinToPCICR(p) digitalPinToPCICR(p)
8 8
 #endif

Loading…
Cancel
Save