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
Soft de commande CNC en asm
Bonjour,
Il y a 2 choses différentes.
Ma réponse n'a rien à voir avec le bug dont tu parles qui n'en est pas un.
Premier problème, il faut mettre "movf translatZ,W"
Pour ton second problème de variables, faut relire un peu le cours Bigonoff pour equ et cblock.
Je n'utilise que equ parce j'aime bien savoir en asm ou sont exactement mes variables.
le variable limite_maxiZ est à l'adresse mémoire 30 = 0x01E
la variable axeX est à l'adresse mémoire 0x008
la variable coordX(4) est à l'adresse mémoire 0x009
la variable espace1 est à l'adresse mémoire 0x00D
la variable axeY est à l'adresse mémoire 0x00E
la variable coordY(4) est à l'adresse mémoire 0x00F
la variable espace2 est à l'adresse mémoire 0x013
la variable axeZ est à l'adresse mémoire 0x0014
la variable coordZ(4) est à l'adresse mémoire 0x015
la variable retour_ligne1 est à l'adresse mémoire 0x019
la variable retour_ligne2 est à l'adresse mémoire 0x01A
la variable retour_ligne3 est à l'adresse mémoire 0x01B
la variable ptr_train_RCIF est à l'adresse mémoire 0x01C
la variable coordX_old(4) est à l'adresse mémoire 0x01D
la variable coordY_old(4) est à l'adresse mémoire 0x021
...
Donc limite_maxiZ tombe au milieu de la variable coordX_old (qui occupe 4 octets)
L'utilisation de equ ne se limite pas aux variables
LF equ d'10'
"movlw LF" met un line-feed dans W
var equ d'11'
"incf var" incrémente la variable var d'adresse 0x00B
Le nom de la colonne affichée dans File Registers, c'est "Symbol Name", pas 'Variable Name"
Il y a 2 choses différentes.
Ma réponse n'a rien à voir avec le bug dont tu parles qui n'en est pas un.
Premier problème, il faut mettre "movf translatZ,W"
Code : Tout sélectionner
Zplus
clrf tampon3
movf translatZ ; variable 8bits qui est chargé à 0x81 et qui va se décrémenter plus loin
subwf tampon3,w ; tampon3-translatZ, ce qui revient à dire 0-0x81=0x7f, résultat négatif et on peut sauter à plusz
bn plusz
return
Pour ton second problème de variables, faut relire un peu le cours Bigonoff pour equ et cblock.
Je n'utilise que equ parce j'aime bien savoir en asm ou sont exactement mes variables.
Code : Tout sélectionner
limite_maxiZ equ d'30'
le variable limite_maxiZ est à l'adresse mémoire 30 = 0x01E
Code : Tout sélectionner
CBLOCK H'08'
axeX:1
coordX:4
espace1
axeY
...
la variable axeX est à l'adresse mémoire 0x008
la variable coordX(4) est à l'adresse mémoire 0x009
la variable espace1 est à l'adresse mémoire 0x00D
la variable axeY est à l'adresse mémoire 0x00E
la variable coordY(4) est à l'adresse mémoire 0x00F
la variable espace2 est à l'adresse mémoire 0x013
la variable axeZ est à l'adresse mémoire 0x0014
la variable coordZ(4) est à l'adresse mémoire 0x015
la variable retour_ligne1 est à l'adresse mémoire 0x019
la variable retour_ligne2 est à l'adresse mémoire 0x01A
la variable retour_ligne3 est à l'adresse mémoire 0x01B
la variable ptr_train_RCIF est à l'adresse mémoire 0x01C
la variable coordX_old(4) est à l'adresse mémoire 0x01D
la variable coordY_old(4) est à l'adresse mémoire 0x021
...
Donc limite_maxiZ tombe au milieu de la variable coordX_old (qui occupe 4 octets)
L'utilisation de equ ne se limite pas aux variables
LF equ d'10'
"movlw LF" met un line-feed dans W
var equ d'11'
"incf var" incrémente la variable var d'adresse 0x00B
Le nom de la colonne affichée dans File Registers, c'est "Symbol Name", pas 'Variable Name"
Soft de commande CNC en asm
- F6FCO
Expert- Messages : 1413
- Âge : 70
- Enregistré en : décembre 2017
- Localisation : Furtif je suis.
- Contact :
D'accord,
Je pensais que çà voulait dire que limite_maxiZ était équivalent à la valeur d'10' et pas plus. Mais il y a alors une autre erreur car bien entendu avant de poser la question j'ai été vérifier si les autres equ avaient été placé en mémoire et non, d’où mon étonnement. Les autres équivalences limite_maxiX equ d'130', limite_miniX equ d'0', etc. n'apparaissaient pas dans la zone des variables.
Ce truc n'est donc toujours pas clair pour moi et j'ai tout remplacé par des #define, çà a réglé le problème.
Je pensais que çà voulait dire que limite_maxiZ était équivalent à la valeur d'10' et pas plus. Mais il y a alors une autre erreur car bien entendu avant de poser la question j'ai été vérifier si les autres equ avaient été placé en mémoire et non, d’où mon étonnement. Les autres équivalences limite_maxiX equ d'130', limite_miniX equ d'0', etc. n'apparaissaient pas dans la zone des variables.
Ce truc n'est donc toujours pas clair pour moi et j'ai tout remplacé par des #define, çà a réglé le problème.
Soft de commande CNC en asm
Bonjour,
+1 effectivement comme déjà expliqué, W et F, même si ils font qu'une lettre sont très important.
+2 exact
attention ne pas confondre adresse et valeur.
Pour l’instant, mais ça change rien car elle peuvent se placer ou elles veulent à tout moment, tant quelle son par déclaré par : EQU
A+
satinas a écrit :Source du message movf translatZ,W
+1 effectivement comme déjà expliqué, W et F, même si ils font qu'une lettre sont très important.
satinas a écrit :Source du message Je n'utilise que equ parce j'aime bien savoir en asm ou sont exactement mes variables.
+2 exact
attention ne pas confondre adresse et valeur.
F6FCO a écrit :Source du message #define, çà a réglé le problème.
Pour l’instant, mais ça change rien car elle peuvent se placer ou elles veulent à tout moment, tant quelle son par déclaré par : EQU
A+
Soft de commande CNC en asm
Soft de commande CNC en asm
Bonjour,
Les données constantes avec #define, en décimal ou hexa selon leur nature.
Les variables avec equ ou cblock, en hexa.
Pourquoi a tu besoin de cette fenêtre file registers pour savoir quelles sont tes variables ?
Si y a un bug dans l'affichage de cette fenêtre, on fait avec, on veut quand même une pièce à conviction :)
Je l'ai jamais utilisée cette fenêtre, le source, le hex, et un peu de debugger avec watch entre les 2.
Je suis revenu au debugger du pic, parce que l'Arduino, comment dire ...
Les données constantes avec #define, en décimal ou hexa selon leur nature.
Les variables avec equ ou cblock, en hexa.
Pourquoi a tu besoin de cette fenêtre file registers pour savoir quelles sont tes variables ?
Si y a un bug dans l'affichage de cette fenêtre, on fait avec, on veut quand même une pièce à conviction :)
Je l'ai jamais utilisée cette fenêtre, le source, le hex, et un peu de debugger avec watch entre les 2.
Je suis revenu au debugger du pic, parce que l'Arduino, comment dire ...
Soft de commande CNC en asm
- F6FCO
Expert- Messages : 1413
- Âge : 70
- Enregistré en : décembre 2017
- Localisation : Furtif je suis.
- Contact :
Bonjour,
Pour debugger je trouve la fenetre file register aussi pratique si ce n'est plus que la fenetre watch.
Dans watch j'ai seulement d'affiché Wreg, Status et les ports au cas ou, dans file register j'ai toutes mes variables en visu et dans l'ordre, et comme dans ce projet elles occupent pas mal de place je peux voir ainsi si elles risquent d'écraser des variables système. Question d'organisation de l'espace de travail dans MPLab, les deux sont affichées et je sais tout de suite ou placer l'oeil pour avoir l'info, vu le nombre de variables si tout était affiché dans watch je ne m'en sortirai pas.
Comme déjà dit, la pièce à conviction au post 250.
J'ai un tiroir plein d'arduinos, pseudo-arduinos et atmegas328, je les garde précieusement pour le jour ou j'aurai un projet utilisant des calculs complexes genre fonctions trigonométriques, chose que je ne me vois pas faire en assembleur.
Ce qui m'étonne c'est que vu la popularité de l'arduino ils n'aient pas encore sorti une IDE plus performante niveau debbugage.
Pour debugger je trouve la fenetre file register aussi pratique si ce n'est plus que la fenetre watch.
Dans watch j'ai seulement d'affiché Wreg, Status et les ports au cas ou, dans file register j'ai toutes mes variables en visu et dans l'ordre, et comme dans ce projet elles occupent pas mal de place je peux voir ainsi si elles risquent d'écraser des variables système. Question d'organisation de l'espace de travail dans MPLab, les deux sont affichées et je sais tout de suite ou placer l'oeil pour avoir l'info, vu le nombre de variables si tout était affiché dans watch je ne m'en sortirai pas.
Comme déjà dit, la pièce à conviction au post 250.
J'ai un tiroir plein d'arduinos, pseudo-arduinos et atmegas328, je les garde précieusement pour le jour ou j'aurai un projet utilisant des calculs complexes genre fonctions trigonométriques, chose que je ne me vois pas faire en assembleur.
Ce qui m'étonne c'est que vu la popularité de l'arduino ils n'aient pas encore sorti une IDE plus performante niveau debbugage.
Soft de commande CNC en asm
Retourner vers « Langage ASM »
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 52 invités