Comment définir la taille du tampon G-code sur Marlin?

8

Je reconfigure un Printrbot Simple Metal qui a été modernisé avec un RAMPS + Arduino Mega exécutant Marlin, avec une vitesse d'avance assez lente en raison de limitations mécaniques et de qualité.

Je constate qu'en annulant une impression où quelque chose ne va pas, j'ai une longue période de temps pendant laquelle l'imprimante continue d'imprimer à partir du code G et du tampon de mouvement, bien que le logiciel hôte (Octoprint) ait depuis longtemps cessé d'envoyer G- code.

Existe-t-il un moyen de soit a) configurer Marlin pour avoir un tampon d'impression plus petit (car Octoprint n'a aucun problème à suivre l'imprimante telle qu'elle est) ou b) envoyer un signal particulier ou un code G à l'imprimante qui l'arrête sans continuer à lire le contenu du tampon?

nanofarad
la source
Matt: Merci pour la suggestion de modification. Je l'ai rejeté pour l'instant car cette question n'est pas spécifique à Printrbot. Il est applicable à presque toutes les imprimantes basées sur Marlin, qui se trouvaient être un Printrbot dans ce cas. Si vous pensez toujours que c'est une balise nécessaire, veuillez soumettre à nouveau la modification et je l'approuverai, ou faites-le moi savoir par commentaire.
nanofarad

Réponses:

7

Marlin permet de modifier la taille des tampons, en Configuration_adv.h. Dans la version actuelle, il existe un ifdef qui bascule entre deux cas, l'un avec prise en charge SD et l'autre sans. Les deux ont un planificateur de mouvement de taille 16, qui peut être ajusté.

En outre, dans le même fichier, BUFSIZEpeut être modifié pour modifier la taille de la mémoire tampon stockant non analysées commandes avant qu'ils ne soient analysés et entrer dans le tampon de planificateur de déplacement.

De plus, pour certains firmwares, M112l'imprimante arrêtera immédiatement l'imprimante, quel que soit le contenu du tampon, mais le bouton de réinitialisation devra être utilisé et les axes ne seront pas référencés par la suite. À Marlin, il est codé en dur pour appeler kill().

nanofarad
la source