C’est quand même une sale bête ce truc !
Consolons nous en lisant les CR sur la migration du mode parallèle vers série sur le logiciel Mach3… ça semble être de la même joyeuseté ![]()
C’est quand même une sale bête ce truc !
Consolons nous en lisant les CR sur la migration du mode parallèle vers série sur le logiciel Mach3… ça semble être de la même joyeuseté ![]()
Super nouvelle
![]()
Je passe Samedi à l’ACoLab pour solder mon stock de bois. Je ramènerai les cartes et ferai des essais sur le PC
Misère et peau de banane, la carte mesa (imitation chinoise) c’est pas mieux. C’est dommage car elle fonctionnait presque. Les I/O fonctionnaient mais la carte finissait par planter le lien entre le Pc et la carte. Le problème était documenté (en chinois) mais le fix proposé ne permettait que de rallonger un peu le délai avant que la carte ne se plante. Dommage. Je me la suis faite rembourser.
C’est déjà ça ![]()
Et une vraie ça coûte combien ?
@thomas : c’est censé faire quoi le programme benchmark? Je l’ai lancé en utilisant la carte integrée (pas celles que nous avons faites), il me dit qu il va faire 100000 cycles de test et rien ne se passe, ni plantage, ni sortie du programme, ni message rien, ca tourne en rond.
Il faut modifier le fichier benchmark.c pour mettre la bonne adresse IP puis lancer la compilation avec build.sh.
Il manque un lien symbolique vers le fichier kbmatrix.h pour que la compilation se passe bien.
Une fois lancé, il ne se passe ‹ rien › pendant 20-30 secondes le temps qu’il fasse le test. Il affiche ensuite un résultat du test.
Un moyen de voir que quelque chose se passe est d’avoir le terminal série d’ouvert en parallèle. Il affiche 2-3 trucs pendant le test
Oui c’est bien ce que j’avais fait sauf le terminal serie qui m’envoie des checksum error et des packet loss, synchronizing (plein,plein,plein) mais le programme tourne toujours en rond. Avais tu essayé avec nos cartes ou avec la carte intégrée?
Les deux. Et elles ont fonctionnées toutes les deux.
Il m’est arrivé aussi les checksum error, je faisait un reset électrique de la carte.
perso, je n’ai jamais eu aucun resultat et seulement des erreurs checksum sur la laison serie des que je lance la commande. j’ai essaye d’alimenter sur le port USB, sur une alim dediée, pas de changement.
@Thomas . J’ai essaye un nuke depuis How to recover a "bricked" Raspberry Pi Pico 2 or other RP2350 board - CNX Software == Pas vraiment de changement.
Par contre depuis 2 ou 3 jours, j’ai bien le bon resultat avec l’utility trouvé sur le site. Mais rien de plus au niveau de linuxcnc, comme toi.
Je ne sais pas par quel miracle mais c’est tombé en marche à la maison en faisant tourner LinuxCNC dans une machine virtuelle. ![]()
LinuxCNC : 2.9.8
Debian : Trixie
Je pense qu’on a un peut trop violemment simplifier les fichiers de config dans hal_driver/test_config.
Pour référence mon stepper-ninja.hal qui fonctionne :
loadrt [KINS]KINEMATICS
loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[KINS]JOINTS
loadrt stepgen-ninja ip_address="192.168.0.177:8888"
addf motion-command-handler servo-thread
addf motion-controller servo-thread
addf stepgen-ninja.0.watchdog-process servo-thread
addf stepgen-ninja.0.process-send servo-thread
addf stepgen-ninja.0.process-recv servo-thread
net Xpos joint.0.motor-pos-cmd
net Ypos joint.1.motor-pos-cmd
net Zpos joint.2.motor-pos-cmd
net Xpos stepgen-ninja.0.stepgen.0.command
net Ypos stepgen-ninja.0.stepgen.1.command
net Zpos stepgen-ninja.0.stepgen.2.command
net Xfdb stepgen-ninja.0.stepgen.0.feedback joint.0.motor-pos-fb
net Yfdb stepgen-ninja.0.stepgen.1.feedback joint.1.motor-pos-fb
net Zfdb stepgen-ninja.0.stepgen.2.feedback joint.2.motor-pos-fb
setp stepgen-ninja.0.stepgen.0.step-scale [JOINT_0]INPUT_SCALE
setp stepgen-ninja.0.stepgen.1.step-scale [JOINT_1]INPUT_SCALE
setp stepgen-ninja.0.stepgen.2.step-scale [JOINT_2]INPUT_SCALE
# ************ stepgen settings ******************************
setp stepgen-ninja.0.stepgen.0.enable 1
setp stepgen-ninja.0.stepgen.1.enable 1
setp stepgen-ninja.0.stepgen.2.enable 1
setp stepgen-ninja.0.stepgen.3.enable 1
setp stepgen-ninja.0.stepgen.pulse-width [STEPGEN_NINJA]PULSE_WIDTH # nanosec
# ************ PWM setting **************************
#setp stepgen-ninja.0.pwm.max-scale [STEPGEN_NINJA]PWM_MAXIMUM_SCALE
#setp stepgen-ninja.0.pwm.min-limit [STEPGEN_NINJA]PWM_MINIMUM_LIMIT
#setp stepgen-ninja.0.pwm.frequency [STEPGEN_NINJA]PWM_FREQUENCY
# ************ encoder setting **********************
setp stepgen-ninja.0.encoder.0.scale [STEPGEN_NINJA]ENCODER_0_SCALE
setp axis.x.jog-scale 0.01
setp axis.y.jog-scale 0.01
setp axis.z.jog-scale 0.01
#net encoder-counts <= stepgen-ninja.0.encoder.0.scaled-count
net encoder-counts => axis.x.jog-counts
net encoder-counts => axis.y.jog-counts
net encoder-counts => axis.z.jog-counts
net tool-prep-loop iocontrol.0.tool-prepare iocontrol.0.tool-prepared
net tool-change-loop iocontrol.0.tool-change iocontrol.0.tool-changed
net estop-loop-in iocontrol.0.user-enable-out stepgen-ninja.0.io-ready-in
net estop-loop-out iocontrol.0.emc-enable-in stepgen-ninja.0.io-ready-out
Et le stepper-ninja.ini
# EMC controller parameters for a simulated machine.
# General note: Comments can either be preceded with a # or ; - either is
# acceptable, although # is in keeping with most linux config files.
# General section -------------------------------------------------------------
[EMC]
# Version of this INI file
VERSION = 1.1
# Name of machine, for use with display, etc.
MACHINE = LinuxCNC-HAL-SIM-AXIS
# Debug level, 0 means no messages. See src/emc/nml_int/emcglb.h for others
# DEBUG = 0x7FFFFFFF
DEBUG = 0
# Sections for display options ------------------------------------------------
[DISPLAY]
# Name of display program, e.g., axis
DISPLAY = axis
# Cycle time, in seconds, that display will sleep between polls
CYCLE_TIME = 0.100
# Path to help file
HELP_FILE = doc/help.txt
# Initial display setting for position, RELATIVE or MACHINE
POSITION_OFFSET = RELATIVE
# Initial display setting for position, COMMANDED or ACTUAL
POSITION_FEEDBACK = ACTUAL
# Highest value that will be allowed for feed override, 1.0 = 100%
MAX_FEED_OVERRIDE = 1.2
MAX_SPINDLE_OVERRIDE = 1.0
# Prefix to be used
PROGRAM_PREFIX = /home/violazsolt/linuxcnc/nc_files
# Introductory graphic
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 0
#EDITOR = gedit
INCREMENTS = 1mm, .1mm, .01mm, .001mm
[FILTER]
PROGRAM_EXTENSION = .png,.gif,.jpg Grayscale Depth Image
PROGRAM_EXTENSION = .py Python Script
png = image-to-gcode
gif = image-to-gcode
jpg = image-to-gcode
py = python
# Task controller section -----------------------------------------------------
[TASK]
# Name of task controller program, e.g., milltask
TASK = milltask
# Cycle time, in seconds, that task controller will sleep between polls
CYCLE_TIME = 0.001
# Part program interpreter section --------------------------------------------
[RS274NGC]
# File containing interpreter variables
PARAMETER_FILE = sim_mm.var
# Motion control section ------------------------------------------------------
[EMCMOT]
EMCMOT = motmod
# Timeout for comm to emcmot, in seconds
COMM_TIMEOUT = 1.0
# BASE_PERIOD is unused in this configuration but specified in core_sim.hal
BASE_PERIOD = 0
# Servo task period, in nano-seconds
SERVO_PERIOD = 1000000
# section for main IO controller parameters -----------------------------------
[EMCIO]
# Name of IO controller program, e.g., io
EMCIO = io
# cycle time, in seconds
CYCLE_TIME = 0.100
# tool table file
TOOL_TABLE = sim_mm.tbl
TOOL_CHANGE_POSITION = 0 0 50.8
# Hardware Abstraction Layer section --------------------------------------------------
[HAL]
# The run script first uses halcmd to execute any HALFILE
# files, and then to execute any individual HALCMD commands.
#
# list of hal config files to run through halcmd
# files are executed in the order in which they appear
HALUI = halui
HALFILE = stepper-ninja.hal
HALFILE = axis_manualtoolchange.hal
HALFILE = simulated_home.hal
# list of halcmd commands to execute
# commands are executed in the order in which they appear
#HALCMD = save neta
# Single file that is executed after the GUI has started. Only supported by
# AXIS at this time (only AXIS creates a HAL component of its own)
POSTGUI_HALFILE = test_postgui.hal
# Trajectory planner section --------------------------------------------------
[TRAJ]
COORDINATES = X Y Z
LINEAR_UNITS = mm
ANGULAR_UNITS = degree
DEFAULT_LINEAR_VELOCITY = 166.6667
MAX_LINEAR_VELOCITY = 166.6667
DEFAULT_LINEAR_ACCELERATION = 1000
MAX_LINEAR_ACCELERATION = 1000
POSITION_FILE = position_mm.txt
[KINS]
KINEMATICS = trivkins
JOINTS = 3
[STEPGEN_NINJA]
# step pulse width
PULSE_WIDTH = 2900
STEPGEN_3_SCALE = 6400
# scale factor for encoder
ENCODER_0_SCALE = 0.25
# pwm output fequency
PWM_FREQUENCY = 10000
# pwm output scale (maximum value for a full scale output)
PWM_MAXIMUM_SCALE = 12500
# pwm output minimum duty cycle (minimum value to output)
PWM_MINIMUM_DUTY = 255
# Axes sections ---------------
[AXIS_X]
MAX_VELOCITY = 255
MAX_ACCELERATION = 1000
MIN_LIMIT = -254
MAX_LIMIT = 254
[AXIS_Y]
MAX_VELOCITY = 255
MAX_ACCELERATION = 1000
MIN_LIMIT = -254
MAX_LIMIT = 254
[AXIS_Z]
MAX_VELOCITY = 256
MAX_ACCELERATION = 1000
MIN_LIMIT = -50.8
MAX_LIMIT = 101.6
# Joints sections -------------
[JOINT_0]
TYPE = LINEAR
HOME = 0.000
MAX_VELOCITY = 255
MAX_ACCELERATION = 1000
BACKLASH = 0.000
INPUT_SCALE = 1000
OUTPUT_SCALE = 1.000
MIN_LIMIT = -254
MAX_LIMIT = 254
FERROR = 1.27
MIN_FERROR = .254
HOME_OFFSET = 0.0
HOME_SEARCH_VEL = 127
HOME_LATCH_VEL = 25.4
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = NO
HOME_SEQUENCE = 1
HOME_IS_SHARED = 1
[JOINT_1]
TYPE = LINEAR
HOME = 0.000
MAX_VELOCITY = 255
MAX_ACCELERATION = 1000
BACKLASH = 0.000
INPUT_SCALE = 1000
OUTPUT_SCALE = 1.000
MIN_LIMIT = -254
MAX_LIMIT = 254
FERROR = 1.27
MIN_FERROR = .254
HOME_OFFSET = 0.0
HOME_SEARCH_VEL = 127
HOME_LATCH_VEL = 25.4
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = NO
HOME_SEQUENCE = 1
[JOINT_2]
TYPE = LINEAR
HOME = 0.0
MAX_VELOCITY = 255
MAX_ACCELERATION = 1000
BACKLASH = 0.000
INPUT_SCALE = 1000
OUTPUT_SCALE = 1.000
MIN_LIMIT = -50.8
MAX_LIMIT = 101.6
FERROR = 1.27
MIN_FERROR = .254
HOME_OFFSET = 25.4
HOME_SEARCH_VEL = 127
HOME_LATCH_VEL = 25.4
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = NO
HOME_SEQUENCE = 0
HOME_IS_SHARED = 1
super nouvelle, je vais essayer chez moi.
J’ai essayé chez moi. Sur la carte reseau supplementaire, aucun changement. Je me suis donc mis dans les memes conditions que toi c’est à dire sur la carte reseau principale (192.168.0.177). La le resultat n’est plus le meme . Je n’ai plus le message que nous avions avant, mais je retombe sur les checksum erreur que j’avais avec l’utilitaire de benchmark.
Peux tu me dire exactement ce que tu as fait.
Pour ma part:
j’ai recupere le firmware stepper-ninja-pico2-W5500.uf2 dans github que j’ai chargé sur la carte
j’ai ensuite changé @IP + port + gateway en utilisant minicom
puis j’ai recupere ton .hal et ton .ini en changeant l’ip dans le fichier hal
j’ai essaye comme ca aucun changement
j’ai passé la carte sur 192.168.0
j’ai changé @ip et gateway avec minivom et dans le fichier hal
j’ai relancé linuxcnc at j’ai eu les checksum erreur mais pas le message que nous avions avant.
Remarque : Je suis sur la carte intégrée et pas celle que nous avons fabriqué. Je recupererai la carte fabriquée a l’acolab des que je pourrai.
sur le reseau 192.168.0, L’utilitaire de benchmark ne me donne plus les checksum erreur sur le reseau 0 mais me donne des erreur I2C Il arrive cependant à la fin et me donne les stats.
Le fichier uf2 du dépot github est pour une carte avec un expander I2C. D’où les erreurs dans le terminal série du pico.
Je n’ai pas changé les paramètres réseaux par défaut, tout à été fait en 192.168.0.177 pour le pico.
Le mieux est de repartir du fichier config.h par défaut dans firmware/inc le configurer en fonction de nos besoins.
Recompiler le firmware. Mettre le uf2 sur le pico. Vérifier que le pico répond au ping
Recompiler l’utilitaire de benchmark. Vérifier que l’utilitaire fonctionne.
Recompiler le driver pour LinuxCNC.
Faire les modif’ dans le fichier stepper-ninja.hal du répertoire hal-driver/test_config suivant le fichier ci dessus.
Lancer LinuxCNC depuis le répertoire hal-driver/test_config : linuxcnc stepper-ninja.ini
que veux tu dire par Recompiler le driver pour LinuxCNC?
Réinstaller le hal-driver
Bonne nouvelle il n’y a plus d’erreur sur toutes les interfaces reseau et cerise sur le gateau on recupere bien 0V ou 3.29V sur le enable (Pin17,GPIO13) on fonction du set/clear dans linuxcnc. Mon erreur etait de partir du principe que ce qui etait sur le site (firmware, .ini et .hal) etaient de confiance et donc etaient le pilier sur lequel on pouvait se baser. Merci Thomas d’avoir trouvé que ce n’etait pas le cas, ca m’a « amusé » quelques heures.
J’espere que 3.29V seront suffisant pour declencher la break-board.
@Thomas tu m’as bien dit qu’on pouvait injecter du 5V sur les Pin GPIO en entree, tu m’avais envoyé de la doc dans ce forum mais je n’ai pas trouvé cette confirmation.
Etape suivante , traduire le .hal actuel en .hal stepgen-ninja.
Le pico PI peut être alimenté en 5V par la prise USB ou par sa broche alim extérieure
Mais les entrées et sorties (ensemble GPIO) ne fonctionne qu’en 3V (maxi 3,3V)
Tu mets 5V sur une pin d’entrée et pschiiuutt ! = pico foutu ![]()
Oui et c’est ce qui me gène car je vois ce que tu dis partout sauf dans les 2 documents fournis par Thomas dans ce forum:
RP-008373-DS-2-rp2350-datasheet.pdf page 1335
RP-008373-DS-2-rp2350-datasheet.pdf (7,6 Mo)
Fault Tolerant Digital. These pins are described as Fault Tolerant,
which in this case means that very little current flows into the pin
whilst it is below 3.63 V and IOVDD is 0 V. Additionally, they will
tolerate voltages up to 5.5 V, provided IOVDD is powered to 3.3 V.
These pins have enhanced ESD protection. Programmable Pull-Up,
Pull-Down, Slew Rate, Schmitt Trigger and Drive Strength. Default Drive
Strength is 4 mA.
et pico-2-datasheet.pdf page 22 mais je n’ai pas trouvé cette info dans le schema page 22
pico-2-datasheet.pdf (3,3 Mo)