Bienvenue aux nouveaux arrivants sur FantasPic !
- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.
--- L’équipe FantasPic ---
- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.
--- L’équipe FantasPic ---
Modérateur : mazertoc
Soft de commande CNC en asm
Soft de commande CNC en asm
Soft de commande CNC en asm
Remarque rapide à F6FCO (post#144),
Je devrais mettre ma note de fin ce post en action, je crois que le nombre d'échanges sur ce sujet devrait te rassurer.
Même si je n'ai que peu parlé je trouve ce sujet très intéressant.
Je devrais mettre ma note de fin ce post en action, je crois que le nombre d'échanges sur ce sujet devrait te rassurer.
Même si je n'ai que peu parlé je trouve ce sujet très intéressant.
Soft de commande CNC en asm
Bonjour
oui, c'est une espèce de pseudo code que j'ai écrit comme ça me venait. Ce programme pic je l'avais en tête depuis ce post :
viewtopic.php?p=9428#p9428
Fallait bien qu'il sorte un jour :)
Pour les if, faut faire attention, il y a une tabulation façon Python
Il y a un peu de C, du franglais, tout sauf de l'asm (à part les goto), l'asm c'est pour F6FCO, si ma solution l'inspire.
Ca se voit peut être pas, mais ce programme est le pendant de la macro Tera Term. Le format du paquet a un peu changé (header+datas+checksum+trailer), mais la macro s'adaptera facilement.
D'abord faire et tester la partie communication et ensuite s'attaquer au traitement du gcode, faut procéder par étapes.
oui, c'est une espèce de pseudo code que j'ai écrit comme ça me venait. Ce programme pic je l'avais en tête depuis ce post :
viewtopic.php?p=9428#p9428
Fallait bien qu'il sorte un jour :)
Pour les if, faut faire attention, il y a une tabulation façon Python
Il y a un peu de C, du franglais, tout sauf de l'asm (à part les goto), l'asm c'est pour F6FCO, si ma solution l'inspire.
Ca se voit peut être pas, mais ce programme est le pendant de la macro Tera Term. Le format du paquet a un peu changé (header+datas+checksum+trailer), mais la macro s'adaptera facilement.
D'abord faire et tester la partie communication et ensuite s'attaquer au traitement du gcode, faut procéder par étapes.
Soft de commande CNC en asm
- F6FCO
Expert- Messages : 1555
- Âge : 70
- Enregistré en : décembre 2017
- Localisation : Furtif je suis.
- Contact :
Oh que ouais, par étapes , sinon on se noie vite.
Je ne suis jamais vraiment arrivé à écrire en pseudocode, il me faut un logigramme bien graphique pour réfléchir.
Je viens justement de terminer celui de la réception d'un train d'octets pour les trois axes ZXY, c'est tout simple, juste un aiguillage.
Un train d'octets est composé de:
'Z' ascii, valeur Z(32bits), 'espace' ascii, 'X' ascii, valeur X(32bits), 'espace' ascii, 'Y' ascii, valeur Y(32bits).
On ignore les espaces et on se sert des lettres précédant les valeurs pour les ranger dans les bonnes variables. Une fois la valeur Y rangée on sait qu'on a terminé la gestion du train et on envoie l'ordre au PC de se calmer pour avoir le temps de mouvoir les trois axes, ce qui se fera en dehors de l'interrupt évidemment.
Une fois les mouvements des trois axes terminés on enverra au PC l'ordre d'envoyer le train suivant. Normalement on évite de mettre trop de code au sein d'une interruption mais ici on s'en fout un peu car en dehors le PIC n'a rien à faire tant qu'on n'a pas rendu la main.
Les variables concernées:
C'est saoulant ces apostrophes qui font changer la couleur du code entre les balises
Je ne suis jamais vraiment arrivé à écrire en pseudocode, il me faut un logigramme bien graphique pour réfléchir.
Je viens justement de terminer celui de la réception d'un train d'octets pour les trois axes ZXY, c'est tout simple, juste un aiguillage.
Un train d'octets est composé de:
'Z' ascii, valeur Z(32bits), 'espace' ascii, 'X' ascii, valeur X(32bits), 'espace' ascii, 'Y' ascii, valeur Y(32bits).
On ignore les espaces et on se sert des lettres précédant les valeurs pour les ranger dans les bonnes variables. Une fois la valeur Y rangée on sait qu'on a terminé la gestion du train et on envoie l'ordre au PC de se calmer pour avoir le temps de mouvoir les trois axes, ce qui se fera en dehors de l'interrupt évidemment.
Une fois les mouvements des trois axes terminés on enverra au PC l'ordre d'envoyer le train suivant. Normalement on évite de mettre trop de code au sein d'une interruption mais ici on s'en fout un peu car en dehors le PIC n'a rien à faire tant qu'on n'a pas rendu la main.
Les variables concernées:
Code : Tout sélectionner
CBLOCK H'80'
flagZ ; flag pour aiguillage valeur gcode Z
flagX ; flag pour aiguillage valeur gcode X
flagY ; flag pour aiguillage valeur gcode Y
coordZ: 4 ; valeur gcode du déplacement Z, traité dans l'interrupt RX
coordX: 4 ; valeur gcode du déplacement X, traité dans l'interrupt RX
coordY: 4 ; valeur gcode du déplacement Y, traité dans l'interrupt RX
ENDC
C'est saoulant ces apostrophes qui font changer la couleur du code entre les balises
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Soft de commande CNC en asm
Soft de commande CNC en asm
- F6FCO
Expert- Messages : 1555
- Âge : 70
- Enregistré en : décembre 2017
- Localisation : Furtif je suis.
- Contact :
Sitôt lu, sitôt fait. Valeurs en 32bits, si tu veux en 8bits il suffit de demander mais çà n'a pas de sens.
Triangle, sa base fait 100mm:
Rond Ø48mm, un peu long mais c'est parce que le cercle est composé d'une multitude de verticales et horizontales:
Triangle, sa base fait 100mm:
Code : Tout sélectionner
Z000003
Z000003 X000000 Y000000
Z000001 X000000 Y000000
Z000000 X000000 Y000000
Z000000 X000030 Y000050
Z000000 X000100 Y000000
Z000000 X000000 Y000000
Z000003 X000000 Y000000
Fin
Rond Ø48mm, un peu long mais c'est parce que le cercle est composé d'une multitude de verticales et horizontales:
Code : Tout sélectionner
Z000003
Z000003 X000048 Y000025
Z000001 X000048 Y000025
Z000000 X000048 Y000025
Z000000 X000048 Y000027
Z000000 X000048 Y000028
Z000000 X000047 Y000030
Z000000 X000047 Y000031
Z000000 X000047 Y000033
Z000000 X000046 Y000034
Z000000 X000045 Y000035
Z000000 X000045 Y000037
Z000000 X000044 Y000038
Z000000 X000043 Y000039
Z000000 X000042 Y000041
Z000000 X000041 Y000042
Z000000 X000040 Y000043
Z000000 X000039 Y000044
Z000000 X000037 Y000045
Z000000 X000036 Y000045
Z000000 X000035 Y000046
Z000000 X000033 Y000047
Z000000 X000032 Y000047
Z000000 X000030 Y000048
Z000000 X000029 Y000048
Z000000 X000027 Y000049
Z000000 X000026 Y000049
Z000000 X000024 Y000049
Z000000 X000023 Y000049
Z000000 X000021 Y000049
Z000000 X000020 Y000048
Z000000 X000018 Y000048
Z000000 X000017 Y000048
Z000000 X000015 Y000047
Z000000 X000014 Y000047
Z000000 X000012 Y000046
Z000000 X000011 Y000045
Z000000 X000010 Y000044
Z000000 X000008 Y000043
Z000000 X000007 Y000042
Z000000 X000006 Y000041
Z000000 X000005 Y000040
Z000000 X000004 Y000038
Z000000 X000003 Y000037
Z000000 X000003 Y000036
Z000000 X000002 Y000034
Z000000 X000002 Y000033
Z000000 X000001 Y000031
Z000000 X000001 Y000030
Z000000 X000000 Y000028
Z000000 X000000 Y000027
Z000000 X000000 Y000025
Z000000 X000000 Y000024
Z000000 X000000 Y000022
Z000000 X000001 Y000021
Z000000 X000001 Y000019
Z000000 X000001 Y000018
Z000000 X000002 Y000016
Z000000 X000003 Y000015
Z000000 X000003 Y000013
Z000000 X000004 Y000012
Z000000 X000005 Y000011
Z000000 X000006 Y000010
Z000000 X000007 Y000008
Z000000 X000008 Y000007
Z000000 X000009 Y000006
Z000000 X000010 Y000005
Z000000 X000012 Y000005
Z000000 X000012 Y000004
Z000000 X000013 Y000004
Z000000 X000015 Y000003
Z000000 X000016 Y000003
Z000000 X000018 Y000002
Z000000 X000019 Y000002
Z000000 X000021 Y000001
Z000000 X000022 Y000001
Z000000 X000024 Y000001
Z000000 X000025 Y000001
Z000000 X000027 Y000001
Z000000 X000028 Y000002
Z000000 X000030 Y000002
Z000000 X000031 Y000002
Z000000 X000033 Y000003
Z000000 X000034 Y000004
Z000000 X000036 Y000004
Z000000 X000037 Y000005
Z000000 X000038 Y000006
Z000000 X000039 Y000007
Z000000 X000041 Y000008
Z000000 X000042 Y000009
Z000000 X000043 Y000010
Z000000 X000044 Y000012
Z000000 X000044 Y000013
Z000000 X000045 Y000014
Z000000 X000046 Y000016
Z000000 X000046 Y000017
Z000000 X000047 Y000018
Z000000 X000047 Y000020
Z000000 X000048 Y000021
Z000000 X000048 Y000023
Z000000 X000048 Y000025
Z000003 X000048 Y000025
Fin
Soft de commande CNC en asm
Bonsoir
pour le Gcode, alors je viens de tester le Gcode que tu m'as donné, et je m'aperçois que mon programme ne sait pas gérer
les diagonales, donc, il faut lui apprendre.
Voici ce que j'obtiens pour un triangle :
Voici ce que j'obtiens pour un rond :
Ce genre de remarque constructive m'apporte beaucoup, et je te remercie.
Ok je vais modifier tous cela quand ça fonctionnera bien(le Gcode), j'ai encore plein de petit truc à voir, si j'arrive à le faire sur PC,
ça sera plus claire pour moi, de le refaire avec un Pic.
Dans la foulé, je me demande si il y aurait pas un moyen de détecté un pas moteur manqué, en m’étant un capteur.
Par exemple le programme demande d'avancé d'un pas, le microcontrôleur exécute l'ordre et contrôle si l'opération à été effectuer.
Si non effectué il recommence jusqu’à atteindre la valeur fixé par le programmeur, si toujours non effectué un indicateur d'erreur
apparait.
Bon c'est une idée, mais je la trouve élégante
A+
pour le Gcode, alors je viens de tester le Gcode que tu m'as donné, et je m'aperçois que mon programme ne sait pas gérer
les diagonales, donc, il faut lui apprendre.
Voici ce que j'obtiens pour un triangle :
Voici ce que j'obtiens pour un rond :
écrit par [b]F6FCO :[/b]
Si je peux me permettre une remarque constructive: le gcode fonctionne toujours par rapport à une origine qui est
X=0, Y=0 et Z=0. X0 et Y0 sont normalement en bas à gauche de l'usinage, ce serait bien que
ton programme le prenne en compte.
Ce genre de remarque constructive m'apporte beaucoup, et je te remercie.
Ok je vais modifier tous cela quand ça fonctionnera bien(le Gcode), j'ai encore plein de petit truc à voir, si j'arrive à le faire sur PC,
ça sera plus claire pour moi, de le refaire avec un Pic.
Dans la foulé, je me demande si il y aurait pas un moyen de détecté un pas moteur manqué, en m’étant un capteur.
Par exemple le programme demande d'avancé d'un pas, le microcontrôleur exécute l'ordre et contrôle si l'opération à été effectuer.
Si non effectué il recommence jusqu’à atteindre la valeur fixé par le programmeur, si toujours non effectué un indicateur d'erreur
apparait.
Bon c'est une idée, mais je la trouve élégante
A+
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Soft de commande CNC en asm
-
Jérémy
Administrateur du site- Messages : 2732
- Âge : 45
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
[quote=php]
Pour remédier a cela , la solution temporaire est de supprimer la partie =php quand tu clic sur les balises [code ].
EN cliquant sur le bouton code tu intégré deux balises[code=php ] et la fin de balise [\code ] .
F6FCO a écrit :Source du message C'est saoulant ces apostrophes qui font changer la couleur du code entre les balises :furieux:
Pour remédier a cela , la solution temporaire est de supprimer la partie =php quand tu clic sur les balises [code ].
EN cliquant sur le bouton code tu intégré deux balises[code=php ] et la fin de balise [\code ] .
Soft de commande CNC en asm
Retourner vers « Langage ASM »
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 32 invités