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
F6FCO
Avatar de l’utilisateur
Expert
Expert
Messages : 1413
Âge : 70
Enregistré en : décembre 2017
Localisation : Furtif je suis.
Contact :

#241 Message par F6FCO » lun. 29 oct. 2018 11:27

Merci Gérard, çà va déjà beaucoup mieux, la bête est solide.

J'ai déjà bien avancé mais je crois que je vais rapidement arriver dans les limites en vitesse du PIC :sad: . J'aurais du lui mettre un quartz de 20Mhz au lieu d'un 4 et je crois même que çà n'aurait pas été suffisant.
J'ai codé les prises de POM (Prise Origine Machine), en clair sur un appui poussoir la machine amène ses trois axes sur le point de référence zéro, c'est à dire si on se place devant la machine complètement à gauche pour le X, à fond pour le Y et en complètement en haut pour le Z.
La prise de POM sert principalement à indiquer à la machine quel est son volume usinable, des constantes dans le programme lui montrant ses déplacements maxi. De cette façon elle ne peut pas aller plus bas que zéro et pas plus loin que sa limite maxi, une sécurité qui évite que les chariots aillent taper dans le bâti d'un coté ou l'autre.
Elle connait ainsi son espace de jeu et est sécurisée.

Mais voilà, en programmation çà implique pour chaque pulse (et il en faut 800 pour parcourir 1mm) d'incrémenter une variable et de faire un test pour vérifier si on n'atteint pas une limite mini ou maxi suivant le sens de translation. C'est très lourd pour un petit PIC.
Et je ne parle que les POM, ensuite il y a aussi les POP à coder qui fonctionnent sur le même principe et qui viennent rajouter une couche.

Ca prend tellement de temps machine que pour LinuxCNC par exemple, on doit faire un test de latence du PC, que le coeur de Linux prendra en compte dans les calculs et il est conseillé de ne pas utiliser le PC pour autre chose lors d'un usinage.
Une porte nand prend 2 bits en entrée... la cochonne !!! :langue:

Soft de commande CNC en asm
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 2589
Âge : 73
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#242 Message par paulfjujo » lun. 29 oct. 2018 18:24

bonsoir


F6FCO a écrit :. J'aurais du lui mettre un quartz de 20Mhz au lieu d'un 4 et je crois même que çà n'aurait pas été suffisant.



tu as le mode HS PLL , qui devrait te permettre 4x4=16MHz

ou sinon, tu te passes du quartz, prends l'osscillateur interne du PIC .. à 8MHZ x 4 PLL => 32MHz
voir meme 16x4=64MHz ..mais là ça craint un peu
Aide toi, le ciel ou FantasPic t'aidera

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

#243 Message par F6FCO » lun. 29 oct. 2018 19:48

Bonsoir,
Merci pour les infos Paul, je ne connaissais pas et je vais regarder le datasheet, 32Mhz çà va certainement arranger les choses, je vais voir si je suis capable de faire çà dans la limite de mes connaissances actuelles. Il ne faudra pas oublier de recalculer les tempos.

Je pourrais aussi changer le xtal pour un 20Mhz (ou 25Mhz) mais çà me porte peine de tout décâbler pour intervenir sur la platine, c'est que c'est serré et c'est un coup à faire des erreurs au remontage.
Mais j'ai quand-même avancé dans ce domaine cet après-midi ( l'avantage d'être accidenté) en divisant le problème par 800: au lieu de compter et faire des tests de limite à chaque impulsion ce qui ralentit énormément j'interviens seulement toutes les 800, cad à chaque mm parcouru. J'ai pu ainsi fixer les limites du X après avoir fait la POM sans que çà se connaisse sur la fluidité. Une fois la POM faite, impossible d'envoyer le chariot en-deçà de la référence zéro et au-delà de la limite maxi fixée par une constante à 130mm pour le X, donc d'aller taper dans le bâti suite à une fausse manœuvre ou une erreur de gcode.
Ca c'était seulement pour les déplacements manuels, reste à faire la même chose en mode automatique (usinage).
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 : 2595
Enregistré en : juillet 2016
Localisation : Terre

#244 Message par Temps-x » lun. 29 oct. 2018 20:19

Bonsoir,

Code : Tout sélectionner



     movlw B
'01000000'
     movwf OSCTUNE                       ; PLL * 4, Fosc=32MHz, Fcy=8MHz, Tcy=125ns



==> 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
F6FCO
Avatar de l’utilisateur
Expert
Expert
Messages : 1413
Âge : 70
Enregistré en : décembre 2017
Localisation : Furtif je suis.
Contact :

#245 Message par F6FCO » lun. 29 oct. 2018 20:32

Trop bien :wink:
J'avais commencé à regarder le datasheet mais tout arrive tout fait, çà m'évitera de batailler :-)
Une porte nand prend 2 bits en entrée... la cochonne !!! :langue:

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

#246 Message par F6FCO » mar. 30 oct. 2018 00:09

Re,
Je viens de passer en 32Mhz, il m'a fallu aussi changer la config: CONFIG OSC = HSPLL.
Pour une fréquence de pulse de 4,6Khz çà me fait maintenant une largeur d'alternance de 217µs, je vais pouvoir y caser quelques instructions sans que çà ne perturbe trop.
Merci de ton aide.


Pffftttt! à cause de vous c'est que je deviens addict moi :roll:
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 : 2595
Enregistré en : juillet 2016
Localisation : Terre

#247 Message par Temps-x » mar. 30 oct. 2018 01:59

Bonsoir,

F6FCO a écrit :Source du message il m'a fallu aussi changer la config: CONFIG OSC = HSPLL


C'est normal si tu utilise un quartz, sans quartz ça donne ça : CONFIG OSC = INTIO67

J'espère que tu vas mieux.


==> 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
F6FCO
Avatar de l’utilisateur
Expert
Expert
Messages : 1413
Âge : 70
Enregistré en : décembre 2017
Localisation : Furtif je suis.
Contact :

#248 Message par F6FCO » mar. 30 oct. 2018 11:37

Je me remet lentement, c'est que je ne suis plus un perdreau de l'année.

Un truc qui me saoule depuis ce matin:

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
    
plusz    
    nop
    etc
.
    etc.
    
    

C'est une partie du code de la POM Z.
donc on fait 0-0x81 ce qui donne 0x7F un résultat négatif et on peut sauter à plusz, tout va bien.
Mais qu'au premier passage dans cette routine seulement, aux passages suivants on fait bien l'opération, en pas à pas je trouve bien le résultat négatif 0x7F dans W mais le bit N de STATUS ne se lève plus et je passe directement au return.
Je bloque dessus depuis ce matin, pensant à un bug j'ai redémarré MPlab plusieurs fois mais çà continue à persister.
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

#249 Message par satinas » mar. 30 oct. 2018 13:36

Salut, c'est l'équipe de jour :)

addwf, addwfc, subwf, subfwb
andwf, iorwf, xorwf
comf, swapf
decf, decfsz, decfsnz, incf, incfsz, incfsnz
rlcf, rlncf, rrcf, rrncf
movf

Toutes ces instructions s'appliquent à une case mémoire ram. Elles exécutent une opération dont le résultat peut aller soit dans W, soit dans cette même case mémoire.
soit "addwf adr,W"
soit "addwf adr,F"
Par défaut, c'est la case mémoire qui reçoit le résultat, cela peut peut être se paramétrer différemment, je sais pas.
Donc "addwf adr,F" et "addwf adr" c'est pareil

movf est un cas un peu particulier, car "movf adr", c'est à dire "movf adr,F", prend le contenu de adr, et le replace dans adr. Autant dire qu'il ne fait rien, mais pas tout à fait car il met à jour au passage les flags d'état Z et N du registre STATUS. Cela permet par exemple de tester si le contenu d'un registre ou d'une case mémoire est nul ou négatif.
Avec ça tu devrais trouver pourquoi il y a un os ...

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

#250 Message par F6FCO » mar. 30 oct. 2018 17:51

Merci Satinas,
Grâce à toi et en remontant dans le programme j'ai trouvé le bug... sans pouvoir l'expliquer :sad:

Un equ qui se transforme en variable.
Voici la copie d'écran d'une partie de la déclaration de mes variables:

declarations.PNG


Et la copie d'écran de la fenêtre File registers

file registers.PNG


La constante limite_maxiZ s'est promu variable et est allée s'intercaler au milieu de la variable 32bits CoordX_old. Çà foutait un bazar pas possible
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Une porte nand prend 2 bits en entrée... la cochonne !!! :langue:


Retourner vers « Langage ASM »

Qui est en ligne

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