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
- F6FCO
Expert- Messages : 1417
- Âge : 70
- Enregistré en : décembre 2017
- Localisation : Furtif je suis.
- Contact :
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à
![Clin d’œil :wink:](./images/smilies/icon_e_wink.gif)
La suite de mes aventures pour Satinas qui s'est donné la peine de coder une macro pour qu'on puisse s'amuser
![Sourire :-)](./images/smilies/icon_e_smile.gif)
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
![Clin d’œil :wink:](./images/smilies/icon_e_wink.gif)
- 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
![Sourire :-)](./images/smilies/icon_e_smile.gif)
Soft de commande CNC en asm
Bonsoir F6FCO, et tout le forum,
Merci pour tous c'est explication, heureusement que tu es là
, 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+
Merci pour tous c'est explication, heureusement que tu es là
![Tire la langue :razz:](./images/smilies/icon_razz.gif)
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.
![tab ==>](./images/smilies/icon_vide.gif)
Modifié en dernier par Temps-x le ven. 18 mai 2018 01:06, modifié 1 fois.
Soft de commande CNC en asm
Soft de commande CNC en asm
- F6FCO
Expert- Messages : 1417
- Âge : 70
- Enregistré en : décembre 2017
- Localisation : Furtif je suis.
- Contact :
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.
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.
Soft de commande CNC en asm
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 :
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 :)
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
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+
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+
Soft de commande CNC en asm
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
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
Bonjour satinas, F6FCO, et tout le forum,
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+
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.
![tab ==>](./images/smilies/icon_vide.gif)
Soft de commande CNC en asm
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.
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 46 invités