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
 /**
46
 /**
47
  * Patch for pins_arduino.h (...\Arduino\hardware\arduino\avr\variants\mega\pins_arduino.h)
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
  * So we extend them here because these are the normal pins for Y_MIN and Y_MAX on RAMPS.
50
  * So we extend them here because these are the normal pins for Y_MIN and Y_MAX on RAMPS.
51
  * There are more PCI-enabled processor pins on Port J, but they are not connected to Arduino MEGA.
51
  * There are more PCI-enabled processor pins on Port J, but they are not connected to Arduino MEGA.
52
  */
52
  */
53
 #if defined(ARDUINO_AVR_MEGA2560) || defined(ARDUINO_AVR_MEGA)
53
 #if defined(ARDUINO_AVR_MEGA2560) || defined(ARDUINO_AVR_MEGA)
54
   #define digitalPinHasPCICR(p)   (WITHIN(p, 10, 15) || WITHIN(p, 50, 53) || WITHIN(p, 62, 69))
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
 #endif
59
 #endif
60
 
60
 
61
 
61
 

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

2
 // Compile with the same build settings you'd use for Marlin.
2
 // Compile with the same build settings you'd use for Marlin.
3
 
3
 
4
 #if defined(ARDUINO_AVR_MEGA2560) || defined(ARDUINO_AVR_MEGA)
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
 #else
6
 #else
7
   #define moreDigitalPinToPCICR(p) digitalPinToPCICR(p)
7
   #define moreDigitalPinToPCICR(p) digitalPinToPCICR(p)
8
 #endif
8
 #endif

Loading…
Cancel
Save