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 ---
Forum général sur l'Assembleur !

Modérateur : mazertoc

Soft de commande CNC en asm
Gérard
Avatar de l’utilisateur
Expert
Expert
Messages : 1640
Âge : 65
Enregistré en : septembre 2015
Localisation : Alsace - Haut-Rhin

#81 Message par Gérard » mar. 15 mai 2018 08:50

Temps-x, ta bonté te perdra ... exit
Le 18/04/19 je suis devenu papy de jumeaux, le 01/09/23 une petite cousine des jumeaux est née.

Soft de commande CNC en asm
F6FCO
Avatar de l’utilisateur
Expert
Expert
Messages : 1412
Âge : 70
Enregistré en : décembre 2017
Localisation : Furtif je suis.
Contact :

#82 Message par F6FCO » jeu. 17 mai 2018 14:20

Temps-x a écrit :

Code : Tout sélectionner



Z10                  
X0 Y0 Z10         
X0 Y0 Z1          
X0 Y0 Z0        





Bonjour les gens et Temps-X,
J'ai commenté ce bout de code ailleurs sur le forum mais je ne sais plus ou, je te le remet avec des commentaires (mais pour l'utiliser il faudra les enlever)

Code : Tout sélectionner

;Il faut comprendre qu on a déjà fait les origines de la pièce, donc quand l'outil est aux positions X=0, Y=0 il est dans le coin en bas à gauche du brut (de la pièce à usiner)
; Ensuite on a fait un toucher pièce avec l'
axe Z, cest à dire qu'on est venu tangenter sur le dessus de la pièce et qu'on a fait notre Z=0. Si on n a pas de palpeur pour cette opération on peut utiliser du papier à cigarette, quand le papier est arraché c'est qu'on est à 0,04mm au dessus de la pièce.

Z10             ;      on remonte l'outil de 10mm au dessus de la pièce, c'est la position de repos hors usinage       
X0 Y0 Z10             
;     ici rien ne se passe, on est toujours à X=0, Y=0 et Z=10
X0 Y0 Z1              
;    on ne bouge pas X ni Y mais l'outil descend à 1mm de la surface de la pièce
X0 Y0 Z0        ;    l'
outil descend en contact avec la pièce (z=0) et on peut commencer à graver    


Tu vas te demander pourquoi descendre en deux fois ? juste parce qu'il est impensable de descendre d'un seul coup d'un seul, la pointe ultra-fine de la fraise n'y résisterait pas. Sur une vraie CNC l'outil descend en vitesse rapide et ensuite va au toucher en vitesse lente, mais on n'en est pas encore là :wink:

La suite de mes aventures pour Satinas qui s'est donné la peine de coder une macro pour qu'on puisse s'amuser :-)
Comme je l'ai expliqué je passe la moitié de la semaine dans un endroit ou je n'ai pas accès à internet alors dur-dur de progresser dans ces conditions. J4ai néanmoins fais une petite avancée, disons une grosse avancée pour moi qui n'avait jamais fais joujou avec une liaison asynchrone:
- J'ai "un peu" dégrossi l'utilisation de Teraterm bien qu'il y ait encore plein de termes inconnus tels que SSH, Telnet, TCP/IP, VT100, TEK, etc. etc.
Quand on va se balader dans les menus çà fait un peu peur mais je vais profiter de mon retour à la civilisation pour aller fouiner sur le net pour parfaire ma culture, en plus je suis sur que la plupart ne me seront d'aucune utilité.
- J'ai réussi à faire une liaison de mon PC portable vers mon analyseur logique à travers l'USB équipée d'un module FTDI. L'analyseur logique LA1010 affiche les caractères ascii ce qui est bien pratique :wink:, je n'aurai rien pu faire sans cet appareil.
- Je me suis rendu compte que TeraTerm envoie tout le fichier d'un coup, mais çà je le savais après avoir lu Satinas.
- Maintenant il va falloir que je gère tout cela à partir du 18F4525 mais là ce n'est pas gagné, va falloir que j'arrive à faire la config pour faire une liaison UART asyncrhone.
Voilà ou j'en suis pour l'instant :-) .
Une porte nand prend 2 bits en entrée... la cochonne !!! :langue:

Soft de commande CNC en asm
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2585
Enregistré en : juillet 2016
Localisation : Terre

#83 Message par Temps-x » jeu. 17 mai 2018 22:30

Bonsoir F6FCO, et tout le forum,

Merci pour tous c'est explication, heureusement que tu es là :razz: , Je me servirais pas de Teraterm , enfin pour l'instant.
Car j'ai une très bonne maîtrise de la RS232, j'ai même écrit un petit programme ICI

Comme tu es avec nous, je vais essayer de développer un petit programme pour simuler le Gcode.

==> A+
Modifié en dernier par Temps-x le ven. 18 mai 2018 01:06, modifié 1 fois.
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

Soft de commande CNC en asm
satinas
Expert
Expert
Messages : 1225
Enregistré en : novembre 2015

#84 Message par satinas » jeu. 17 mai 2018 23:12

Bonsoir,
avec 2 convertisseurs usb-série connectés ensemble avec un câble croisé, on peux tester facilement tous les softs de comm, et notamment la macro teraterm, 'F' pour recevoir une nouvelle ligne gcode, 'U' pour la recevoir à nouveau.

Soft de commande CNC en asm
F6FCO
Avatar de l’utilisateur
Expert
Expert
Messages : 1412
Âge : 70
Enregistré en : décembre 2017
Localisation : Furtif je suis.
Contact :

#85 Message par F6FCO » ven. 18 mai 2018 17:45

En cherchant bien je dois bien arriver à trouver un deuxième module FTDI dans mes tiroirs pour essayer ta méthode, j'en avais plusieurs dans ma première vie arduinoesque.
Si çà intéresse quelqu'un je me suis fais une feuille de calcul (Excel ou Open Office) pour calculer la valeur du registre SPBRG et le débit.
Une porte nand prend 2 bits en entrée... la cochonne !!! :langue:

Soft de commande CNC en asm
satinas
Expert
Expert
Messages : 1225
Enregistré en : novembre 2015

#86 Message par satinas » ven. 18 mai 2018 18:32

Bonjour, chacun sa méthode, selon ses habitudes, y aura sans doute des amateurs
J'ai pas touché à Excel depuis 20 ans :)
Celle du programme en cours :

Code : Tout sélectionner

#define   OSC         48000000          ; Fosc=48MHz, Fcy=12Mhz, Tcy=83,33ns  (18F)
#define   BRG         (OSC/4/115200-1)

     movlf     BAUDCON,0x08    ; uart, brg16=1
     movlf     SPBRGH, BRG/256 ; uart, 115200 bauds
     movlf     SPBRG,  BRG%256 ; uart, 115200 bauds
     movlf     TXSTA,  0x24    ; uart, tx on, brgh=1
     movlf     RCSTA,  0x80    ; uart on, rx off


Le spi partagé par l'afficheur, le tactile et la sdcard marche pas mal. Ca cohabite bien. Par contre je lâche pas le programme de lecture du touchscreen tant que JMarc n'a pas montré le sien, faut qu'il bosse un peu :)

Soft de commande CNC en asm
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2585
Enregistré en : juillet 2016
Localisation : Terre

#87 Message par Temps-x » dim. 20 mai 2018 00:47

Bonsoir satinas, F6FCO, et tout le forum,

Une petite question pour satinas, sur une carte SD, peux ton lire plus de 512 octets, si oui, comment fais tu pour aller au delà des 512 octets

Sachant qu' une table d'allocation des fichiers existe pour les partitions de FAT32( 512 octets = 1 secteur)

Voilà ce que j'ai appris sur la FAT32

La table d'allocation est en fait un tableau dont chaque cellule contient un chiffre qui permet de savoir si le cluster qu'elle représente est
utilisé par un fichier, et, le cas échéant, indique l'emplacement du prochain cluster que le fichier occupe.

On obtient donc une chaîne FAT, c'est-à-dire une liste chainée de références pointant vers les différents clusters successifs
jusqu'au cluster de fin de fichier.

Chaque entrée de la FAT a une longueur de 16 ou 32 bits (selon qu'il s'agit d'une FAT16 ou d'une FAT32).

Les deux premières entrées permettent de stocker des informations sur la table elle-même, tandis que les entrées suivantes
permettent de référencer les clusters.

Certaines entrées peuvent contenir des valeurs indiquant un état du cluster spécifique.

Ainsi la valeur 0000 indique que le cluster n'est pas utilisé, FFF7 permet de marquer le cluster comme défectueux pour éviter de l'utiliser,
et les valeurs comprises entre FFF8 et FFFF spécifient que le cluster contient la fin d'un fichier.

C'est pas le coup de communiquer sur la carte SD, c'est de comprendre comment ça fonctionne.

A+
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

Soft de commande CNC en asm
satinas
Expert
Expert
Messages : 1225
Enregistré en : novembre 2015

#88 Message par satinas » dim. 20 mai 2018 07:33

rebonjour,


Si on parle SD et FAT, on va plus parler d'autre chose :)

La sdcard comme les autres disques PC est organisée en secteurs de 512 octets. Pour accéder aux données, c'est simple on fournit l'index du secteur à partir de 0, et on lit ou écrit tout le secteur. Les disques durs récents sont passés à des secteurs de taille plus importante. Au début le PC adressait directement les têtes, plateaux, pistes, mais ensuite c'est le contrôleur du disque qui a pris ça en charge, pour le host c'est simple comme un numéro de secteur.

Pour la SD, je donnerai un résumé de ce que j'ai retenu. Notamment, je me demande si on peut interrompre la lecture d'un secteur, pas sûr que ce soit possible. Je l'ai testé, ça gêne pas la sd, mais si c'est pas dans les spécifs, que j'ai pas fini de lire, il ne faut pas le faire.

Pour la FAT, un disque formaté en FAT contient 2 zones délimitées au formatage.
- ZONE DATA, constituée de clusters, recevant le contenu des dossiers et fichiers. Un cluster est un agrégat de n secteurs contigus. Un fichier de 1 octet occupera 1 cluster, un fichier vide 0 cluster, un dossier vide 1 cluster (voir plus loin). Les clusters sont numérotés à partir de 0 (un peu comme les secteurs du disque). L'index des clusters est de taille 12 bits (FAT12), 16 bits (FAT16), ou 32 bits (FAT32)
- ZONE FAT, elle contient un index de chaînage des clusters, associé à chaque cluster du disque. L'index de chaînage contient l'index du cluster "suite", ou un pattern pour indiquer qu'il est le dernier de la chaîne, ou d'autres patterns indiquant qu'il est disponible, défectueux, .... La zone fat est dupliquée, pour espérer récupérer des données en cas de détérioration de cet endroit sensible.

Une SD de 16Go formatée en FAT32 avec 8 secteurs par cluster contiendra donc :
- une zone data de 4 millions de clusters de 8 secteurs -> 4.000.000 * 8 * 512 octets
- une zone fat de -> 4.000.000 * 4 octets (1 index de chaînage = 4 octets, associé à chaque cluster)

Pour les dossiers on stocke des entrées de 32 octets, décrivant les sous-dossiers/fichiers contenus dans le dossier. On remplit les clusters un par un, pas forcément jointifs grâce au chaînage. Chaque fois qu'on commence à remplir un nouveau cluster, on met à jour sa case chaînage dans la zone fat. Le premier cluster de la zone data est le premier cluster data du dossier racine (FAT32, pour FAT12/16 c'est un peu différent).
Dans une entrée figurent le nom (8.3 ou 8.3+long_name), la taille, les attributs, les dates d'accès, et surtout l"index du 1er cluster ou sont stockées les datas. c'est le début de la chaîne data.
Si on ajoute un sous-dossier/fichier, on ajoute derrière une entrée avec un 0 comme premier octet du nom, c'est la fin de liste.
Si on efface un sous-dossier/fichier, on remplace le premier octet du nom par 0xE5, signifiant "entrée effacée". On pourra remplacer ensuite cette entrée par une autre. Il faut aussi dans la fat signaler par un pattern "disponible", tous les clusters data concernés par la suppression
Si on crée un sous-dossier on commence à remplir son premier cluster data avec 2 entrées "." et ".." qui permettent de remonter facilement au début des dossiers courant ou amont (les 2 'entrée '.' et '..' ont leur index 1er cluster qui pointe dessus). Ensuite on indique la fin de liste par une 3ème entrée débutant par l'octet 0.

Pour les fichiers, on remplit les clusters un par un de la même façon. Le dernier cluster chaîné contient les derniers octets du fichier, il faut aller consulter dans l'entrée fat correspondante, la taille du fichier pour savoir combien de clusters sont à lire, et combien d'octets sont à lire dans le dernier cluster chaîné.
Bon j'arrête là, si c'est pas clair, il y a d'autres sources :)

Bonne journée

Soft de commande CNC en asm
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2585
Enregistré en : juillet 2016
Localisation : Terre

#89 Message par Temps-x » dim. 20 mai 2018 17:29

Bonjour satinas, F6FCO, et tout le forum,

satinas a écrit :
Source du message Si on parle SD et FAT, on va plus parler d'autre chose


Oui, mais ce qui bloque actuellement c'est bien ça, pour le reste c'est vraiment banale, j'ai même fini les directions de mets 4 moteurs pas à pas.

Je fini d'écrire le programme du lecteur de Gcode pour PC et je mets ici, pour le pic c'est pas plus compliqué, car on prends un Gcode simple.

Enfin merci pour le retour, je vois que tu es en plein dedans, ben moi aussi.

==> A+
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

Soft de commande CNC en asm
satinas
Expert
Expert
Messages : 1225
Enregistré en : novembre 2015

#90 Message par satinas » dim. 20 mai 2018 21:54

Bonsoir,
Je vois ce projet comme la réunion de plusieurs intervenants dans un objectif commun.

Ce qui est écrit ci-dessus montre que la sdcard est un sujet complexe, qu'il ne faut pas utiliser dans un premier temps pour une application CNC. A mon avis, vous devez démarrer avec la liaison série, qui est ultra-simple quelles que soient les options choisies pour la mettre en oeuvre. On reçoit une ligne gcode, pouvant contenir plusieurs instructions gcode, puis on les exécute.

Le fait que je m'amuse avec ce lcd à 10 sous à tout faire, permet d'aller un peu plus loin. Une fois que ça marche, vous pourrez envisager une deuxième phase, avec la lecture du fichier gcode sur une sdcard, qui marchera bien jusqu'au moment pas trop éloigné, ou la sdcard ne voudra rien savoir, car une sdcard au milieu de copeaux graisseux, je le sens pas trop :)
Vous pouvez aussi faire des affichages sur le lcd, et JMarc est calé la dessus. Le tactile a déjà été expliqué en C, en asm c'est pareil.

J'ai passé des mois sur la fat, ça m'intéresse, mais je pense pas que ça intéresse tout le monde. Je livrerai un programme sdcard pour 18F, sous forme d'un fichier include, et je pense que personne n'y comprendra grand chose, y compris moi dans 1 an, car c'est déjà dur quand on l'explique, alors décrypter un source asm qui le traite, j'en parle pas.
Il faut que je vois vos sources uart, pour adapter la bibliothèque sdcard et la rendre compatible facilement.


Retourner vers « Langage ASM »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 4 invités