questions firmware grbl pour stm32

  • Auteur de la discussion 01power
  • Date de début
01power
01power
Ouvrier
24 Sept 2017
449
01600
  • Auteur de la discussion
  • #1
Salut a tous

mes questions sont lié au firmware, tout en bas du message

c'est pour ma graveuse laser, j'espère avoir posé au bon endroit

je place le contexte
il y a un certain temps j'ai acheter a un très bon prix un kit mks robin V1.2 qui intègre une puce stm32f103vet6 au départ car je l'ai trouver a un très prix raisonnable (25€ il me semble) avec : 5 driver tmc2209, écran tactile 3.5", puce wifi,
je me suis dis on verra pour un future projet (avantage pas besoins de créer une carte fille)
carte mks
mks robin nano.png


carte stm32
STM32-Blue-Pill-Development-Board-Pinout.jpg


sur le pin map pour grbl
sur son equivalent marlin pour la carte mks
dans grbl ils définissent le port et le pin séparément alors que dans marlin c'est directement le pin

mon problème est que sur la carte mks le X dir et le Y dir (et d'autres) ne sont pas sur le même port donc pas évident de replacer correctement l'attribution des pin GRBL pour la MKS

mes questions :

Pour quoi dans grbl ils utilise pas directement les pin ? (je sais on est pas dans la tête du codeur mais quelqu'un aurais une idée ?)
Et peut on faire en sorte de se passer de l'attribution des ports pour directement utiliser la définition du pin?
 
01power
01power
Ouvrier
24 Sept 2017
449
01600
  • Auteur de la discussion
  • #2
petites précisions
le lien vers le code source grbl stm32 : https://github.com/MoonCactus/grbl-STM32F103
il y a aussi la carte MKS DLC (carte MKS pour usage CNC sur base de stm32f103c8t6, a peine plus large que le 328p mais en 32bit) mais je ne veux pas faire de nouveaux achats pour l'instant
 
coredump
coredump
Compagnon
8 Jan 2007
4 710
FR-06
GRBL attaque directement les périphériques stm32, alors que marlin utilise la couche d'adaptation arduino. Plus simple a comprendre mais moins performante.
 
01power
01power
Ouvrier
24 Sept 2017
449
01600
  • Auteur de la discussion
  • #4
Salut merci pour cette réponse rapide
Donc a moins de retravailler entièrement le code de grbl je ne pourrais pas utiliser les assignations des pin de ma carte mks avec grbl

Donc il ne me reste que a prendre une carte stm32f103c8t6 ou un autre compatible et lui faire une interface pour s'adapter à mon shield cnc si je souhaite passer a du 32bit si je veux limiter mon investissement
 
coredump
coredump
Compagnon
8 Jan 2007
4 710
FR-06
Bien sûr que tu peux, il faut juste traduire l'assignement Arduino vers le nom du port et son numéro de pin. C'est pas sorcier mais demande de se pencher sur la documentation du microprocesseur.
 
coredump
coredump
Compagnon
8 Jan 2007
4 710
FR-06
Par exemple PE4 c'est la pin 4 du port GPIOE, ainsi de suite.
La limite de grbl c'est que les pins de step doivent être sur le même port GPIO.
 
S
speedjf37
Compagnon
15 Oct 2009
2 475
indre et loire
#ifdef CPU_MAP_STM32F103

// Define step pulse output pins. NOTE: All step bit pins must be on the same port.
#define STEP_PORT GPIOA
#define RCC_STEP_PORT RCC_APB2Periph_GPIOA
#define X_STEP_BIT 0
#define Y_STEP_BIT 1
#define Z_STEP_BIT 2
#define STEP_MASK ((1<<X_STEP_BIT)|(1<<Y_STEP_BIT)|(1<<Z_STEP_BIT)) // All step bits


mon problème est que sur la carte mks le X dir et le Y dir (et d'autres) ne sont pas sur le même port donc pas évident de replacer correctement l'attribution des pin GRBL pour la MKS
Bonjour,

Effectivement ces 2 informations sont incompatibles et impose de fortement modifier le code en perdant la rapidité de commutation sur un seul port .

Edit: sur le site officiel il n'évoquent que Marlin

JF
 
Dernière édition:
01power
01power
Ouvrier
24 Sept 2017
449
01600
  • Auteur de la discussion
  • #8
Par exemple PE4 c'est la pin 4 du port GPIOE, ainsi de suite.
La limite de grbl c'est que les pins de step doivent être sur le même port GPIO.
Ça je l'avais compris c'est pour ça que j'avais mis les photos et bouts de code pour bien clarifier la question

#ifdef CPU_MAP_STM32F103

// Define step pulse output pins. NOTE: All step bit pins must be on the same port.
#define STEP_PORT GPIOA
#define RCC_STEP_PORT RCC_APB2Periph_GPIOA
#define X_STEP_BIT 0
#define Y_STEP_BIT 1
#define Z_STEP_BIT 2
#define STEP_MASK ((1<<X_STEP_BIT)|(1<<Y_STEP_BIT)|(1<<Z_STEP_BIT)) // All step bits




Bonjour,

Effectivement ces 2 informations sont incompatibles et impose de fortement modifier le code en perdant la rapidité de commutation sur un seul port .

Edit: sur le site officiel il n'évoquent que Marlin

JF
C'est justement due à toutes les info collecté que j'ai poser la question

La perte doit être relativement faible pour l'avoir abandonné sur marlin et autres firmware 3d

Perso je ne me vois retravailler tout le firmware grbl pour changer la façon de faire

Je sais que grbl a été super optimisé pour rentrer sur un at328 et profiter des meilleur perf possible pour cette puce

Mais sur les puces 32bit on est bien plus libre sur les performances possibles
 
coredump
coredump
Compagnon
8 Jan 2007
4 710
FR-06
En lisant le code j'ai compris, c'est sur les DIR qu'il y a le soucis.
Techniquement le changement n'est pas énorme et ne touche qu'un fichier (stepper.c) pour les steps/dir, a voir pour le reste.
 
01power
01power
Ouvrier
24 Sept 2017
449
01600
  • Auteur de la discussion
  • #10
Je vais verrifier mais il me semble qu'il y a un peu plus que ça, pour les fin de courses aussi de mémoire, et quelques autre elements

Si non j'aurais bien aimer trouver le code source mks de la carte mks robin (j'ai énormément chercher, le marlin est différent) que j'ai pour le comparer a celui de la mks dlc pour mettre la sortie laser et d'autres fonctions a la place de step et dir du 2 ème extrudeur
 
coredump
coredump
Compagnon
8 Jan 2007
4 710
FR-06
MKS n'est pas réputé pour son respect de l'opensource, tu risques fort de le chercher longtemps...
 
01power
01power
Ouvrier
24 Sept 2017
449
01600
  • Auteur de la discussion
  • #12
Je ne leur ai pas demandé et j'ai pas de point de comparaison car j'ai pas chercher pour toutes leurs autres cartes ni comparer avec leur concurent qui de ce que j'ai lu ne fournissent pas le code source mais juste le firmware compiler
 
Haut