Fine corsa su movimento NEMA 17 con Accelstepper

Salve ho una difficoltà (magari banale per alcuni):

  • Ho una macchina triassiale (tipo una stampante 3D), alla quale vi sono collegati 3 nema17 con rispettivi fine corsa.
  • Dato che gli interrupt nel mio Mega2560 sono già impegnati per gli arresti di emergenza, vorrei collegare gli endstop ad input digitali.
  • Chiaramente utilizzando la libreria Accelstepper (e Multistepper) ho il problema che i motori possono lavorare un passo alla volta controllando un pin digitale, con conseguenza di vibrazione e rumore.
  • Osservando il Marlin ho notato che non tutti i pin dei fine corsa sono collegati agli interrupt (vedi pin Ramps 1.4, asse y).

La mia domanda è se qualcuno conosce (o riesce ad indicarmi sul Marlin) una modalità per cui è possibile leggere lo stato di un pin digitale come un interrupt (magari più lentamente, con le sue limitazioni, etc.. ogni cosa ha un prezzo da pagare).

Evitando risposte ovvie, se su Marlin lo hanno fatto vuol dire che si può fare, vorrei capire come.
La macchina si basa su CONTROLLINO MEGA che utilizza il classico MEGA2560.

Link Marlin
Link Libreria Accelstepper

Vi ringrazio in anticipo

Dimenticate sempre che oltre ai pin dedicati per gli interrupt, i pin digitali, se pur con alcune limitazioni, possono essere usati come PinChangeInterrupt ...

Consiglio di utilizzare la libreria EnableInterrupt (installabile dal library manager del IDE) che si prende totale carico della loro gestione.

Guglielmo

1 Like

Il firmware Marlin utilizza proprio il Pin Change Interrupt su base AVR e il "fastio" per i pin non associati ad interrupt.

1 Like

Vi ringrazio innanzitutto per le informazioni ed il tempo dedicatomi. Proverò il PinChangeInterrupt sui pin digitali, il "fastIO" e la libreria proposta.
:+1: