Der Standard-Pin für X-MIN ist 37, und beim Hochladen des Firmwire wurde eine Fehlermeldung angezeigt ... Soll ich die Endstop-Pin-Definition ändern oder stattdessen die Endstop-Interrupt-Funktion deaktivieren?
In file included from sketch\Marlin_main.cpp:320:0:
sketch\endstop_interrupts.h: In function 'void setup_endstop_interrupts()':
endstop_interrupts.h:128: error: static assertion failed: X_MIN_PIN is not interrupt-capable
static_assert(digitalPinToPCICR(X_MIN_PIN) != NULL, "X_MIN_PIN is not interrupt-capable");
^
endstop_interrupts.h:148: error: static assertion failed: Y_MIN_PIN is not interrupt-capable
static_assert(digitalPinToPCICR(Y_MIN_PIN) != NULL, "Y_MIN_PIN is not interrupt-capable");
^
endstop_interrupts.h:168: error: static assertion failed: Z_MIN_PIN is not interrupt-capable
static_assert(digitalPinToPCICR(Z_MIN_PIN) != NULL, "Z_MIN_PIN is not interrupt-capable");
^
exit status 1
static assertion failed: X_MIN_PIN is not interrupt-capable
Ich habe keine Zeit damit verbracht, nach Fakten zu suchen. Es können jedoch nur einige der GPIO-Pins am AVR so eingerichtet werden, dass Interrupts bereitgestellt werden. Ich vermute, Ihre X_MIN_PIN wurde vom Board-Designer willkürlich auf einen unterbrechungsfreien Pin gesetzt. (Ich weiß das nicht genau ... Aber das ist meine Ausgangsposition.)
Aus einer entgegengesetzten Perspektive. Die RAMPS-Karte verfügt über jeden Endanschlag, wobei sowohl Min als auch Max auf Pins gesetzt sind, die unterbrochen werden können.
Sie können PINS_DEBUGGING
aktivieren und dann M43
senden, um eine vollständige Liste aller Pins und ihrer Funktionen zu erhalten. Wenn Sie über genügend nicht verwendete Interrupt-fähige Pins verfügen, können Sie möglicherweise Ihre Endstops auf diese verschieben.
Entschuldigung für die späte Antwort, die Karte, die ich benutze, ist MKS Rumba + Karte, und sie geben an, dass sie Schutzschaltungen für die Endstop-Pins hat.
PIN: 0 Port: E0 RXD protected
PIN: 1 Port: E1 TXD protected
PIN: 2 Port: E4 HEATER_0_PIN protected
PIN: 3 Port: E5 <unused/unknown> Input = 0 TIMER3C PWM: 0 WGM: 1 COM3C: 0 CS: 3 TCCR3A: 1 TCCR3B: 3 TIMSK3: 0
PIN: 4 Port: G5 SPINDLE_LASER_PWM_PIN Input = 0 TIMER0B PWM: 128 WGM: 3 COM0B: 0 CS: 3 TCCR0A: 3 TCCR0B: 3 TIMSK0: 5 compare interrupt enabled overflow interrupt enabled
PIN: 5 Port: E3 SERVO0_PIN Input = 0 TIMER3A PWM: 0 WGM: 1 COM3A: 0 CS: 3 TCCR3A: 1 TCCR3B: 3 TIMSK3: 0
PIN: 6 Port: H3 HEATER_BED_PIN protected
PIN: 7 Port: H4 FAN_PIN protected
PIN: 8 Port: H5 E0_AUTO_FAN_PIN protected
. FAN1_PIN protected
. HEATER_3_PIN protected
PIN: 9 Port: H6 HEATER_2_PIN Output = 0 TIMER2B PWM: 0 WGM: 1 COM2B: 0 CS: 4 TCCR2A: 1 TCCR2B: 4 TIMSK2: 0
PIN: 10 Port: B4 <unused/unknown> Input = 0 TIMER2A PWM: 0 WGM: 1 COM2A: 0 CS: 4 TCCR2A: 1 TCCR2B: 4 TIMSK2: 0
PIN: 11 Port: B5 BTN_EN1 Input = 1 TIMER1A PWM: 2000 WGM: 4 COM1A: 0 CS: 2 TCCR1A: 0 TCCR1B: 10 TIMSK1: 2 non-standard PWM mode compare interrupt enabled
PIN: 12 Port: B6 BTN_EN2 Input = 1 TIMER1B PWM: 0 WGM: 4 COM1B: 0 CS: 2 TCCR1A: 0 TCCR1B: 10 TIMSK1: 2 non-standard PWM mode
PIN: 13 Port: B7 LED_PIN Input = 0 TIMER0A PWM: 0 WGM: 3 COM0A: 0 CS: 3 TCCR0A: 3 TCCR0B: 3 TIMSK0: 5 overflow interrupt enabled
. TIMER1C is also tied to this pin TIMER1C PWM: 0 WGM: 4 COM1C: 0 CS: 2 TCCR1A: 0 TCCR1B: 10 TIMSK1: 2 non-standard PWM mode
PIN: 14 Port: J1 SPINDLE_LASER_ENABLE_PIN Input = 0
PIN: 15 Port: J0 SPINDLE_DIR_PIN Input = 0
PIN: 16 Port: H1 X_DIR_PIN protected
PIN: 17 Port: H0 X_STEP_PIN protected
PIN: 18 Port: D3 LCD_PINS_D4 Output = 1
PIN: 19 Port: D2 LCD_PINS_RS Output = 0
PIN: 20 Port: D1 SDA Input = 1
PIN: 21 Port: D0 SCL Input = 1
PIN: 22 Port: A0 E0_DIR_PIN protected
PIN: 23 Port: A1 E0_STEP_PIN protected
PIN: 24 Port: A2 E0_ENABLE_PIN protected
PIN: 25 Port: A3 E1_DIR_PIN Output = 0
PIN: 26 Port: A4 E1_STEP_PIN Output = 0
PIN: 27 Port: A5 E1_ENABLE_PIN Output = 1
PIN: 28 Port: A6 E2_DIR_PIN Output = 0
PIN: 29 Port: A7 E2_STEP_PIN Output = 0
PIN: 30 Port: C7 <unused/unknown> Input = 0
PIN: 31 Port: C6 <unused/unknown> Input = 0
PIN: 32 Port: C5 <unused/unknown> Input = 1
PIN: 33 Port: C4 Z_MIN_PIN protected
PIN: 34 Port: C3 <unused/unknown> Input = 1
PIN: 35 Port: C2 Y_MIN_PIN protected
PIN: 36 Port: C1 <unused/unknown> Input = 1
PIN: 37 Port: C0 X_MIN_PIN protected
PIN: 38 Port: D7 LCD_PINS_D5 Input = 0
PIN: 39 Port: G2 E2_ENABLE_PIN Output = 1
PIN: 40 Port: G1 LCD_PINS_D7 Input = 0
PIN: 41 Port: G0 LCD_PINS_D6 Input = 0
PIN: 42 Port: L7 LCD_PINS_ENABLE Output = 0
PIN: 43 Port: L6 BTN_ENC Input = 1
PIN: 44 Port: L5 BEEPER_PIN Output = 0 TIMER5C PWM: 0 WGM: 1 COM5C: 0 CS: 3 TCCR5A: 1 TCCR5B: 3 TIMSK5: 0
PIN: 45 Port: L4 CASE_LIGHT_PIN protected
. PS_ON_PIN protected
PIN: 46 Port: L3 KILL_PIN Input = 1 TIMER5A PWM: 0 WGM: 1 COM5A: 0 CS: 3 TCCR5A: 1 TCCR5B: 3 TIMSK5: 0
PIN: 47 Port: L2 Y_DIR_PIN protected
PIN: 48 Port: L1 X_ENABLE_PIN protected
PIN: 49 Port: L0 SD_DETECT_PIN Input = 0
PIN: 50 Port: B3 AVR_MISO_PIN Input = 1
. MISO_PIN Input = 1
PIN: 51 Port: B2 AVR_MOSI_PIN Output = 1
. MOSI_PIN Output = 1
PIN: 52 Port: B1 AVR_SCK_PIN Output = 0
. SCK_PIN Output = 0
PIN: 53 Port: B0 AVR_SS_PIN Output = 1
. SDSS Output = 1
. SS_PIN Output = 1
PIN: 54 Port: F0 (A 0) Y_STEP_PIN protected
PIN: 55 Port: F1 (A 1) Y_ENABLE_PIN protected
PIN: 56 Port: F2 (A 2) Z_DIR_PIN protected
PIN: 57 Port: F3 (A 3) Z_STEP_PIN protected
PIN: 58 Port: F4 (A 4) <unused/unknown> Analog in = 447 Input = 0
PIN: 59 Port: F5 (A 5) <unused/unknown> Analog in = 383 Input = 0
PIN: 60 Port: F6 (A 6) <unused/unknown> Analog in = 343 Input = 0
PIN: 61 Port: F7 (A 7) <unused/unknown> Analog in = 490 Input = 0
PIN: 62 Port: K0 (A 8) Z_ENABLE_PIN protected
PIN: 63 Port: K1 (A 9) <unused/unknown> Analog in = 556 Input = 1
PIN: 64 Port: K2 (A10) <unused/unknown> Analog in = 745 Input = 1
PIN: 65 Port: K3 (A11) TEMP_BED_PIN protected
PIN: 66 Port: K4 (A12) <unused/unknown> Analog in = 1023 Input = 1
PIN: 67 Port: K5 (A13) TEMP_2_PIN Analog in = 1023
PIN: 68 Port: K6 (A14) TEMP_1_PIN Analog in = 1023
PIN: 69 Port: K7 (A15) TEMP_0_PIN
In M43
das "geschützte" Etikett, dass der Pin von Marlin vor Änderungen geschützt wird.
Hilfreichster Kommentar
Sie können
PINS_DEBUGGING
aktivieren und dannM43
senden, um eine vollständige Liste aller Pins und ihrer Funktionen zu erhalten. Wenn Sie über genügend nicht verwendete Interrupt-fähige Pins verfügen, können Sie möglicherweise Ihre Endstops auf diese verschieben.