Mise à Jour Firmware Nunchuk

Réglages logiciels, firmware, utilisation,...
Répondre
Maru
Messages : 2
Enregistré le : 06 sept. 2018 20:49

Mise à Jour Firmware Nunchuk

Message par Maru »

Bonjour,

J'ai fait une mise à jour du programme nunchuk, il fonctionne sur un nunchuk chinois. Il a pas été testé sur nunchuk original.
Il corrige également le pb de blocage écran TFT après utilisation du nunchuk.
J'ai découpé le nunchuk en 3 positions:
- de 0 à 1/3 => les moteurs font des pas de 0.1mm
- de 1/3 à 2/3 => les moteurs font des pas de 1 mm
- de 2/3 au max => cela avance en vitesse rapide.
Quand on relâche les boutons C ou Z cela remet à zéro les compteurs XYZ.

Toute la conf nunchuck est dans le fichier NunchukConfig.h

Permet de diminuer la clock I2C au cas où des nunchuk serait vraiment lent.
#define CLOCK_I2C 400000U //100000U ou 400000U

Debug permet de déboguer le programme à différents niveaux.
Il suffit de se mettre dans repetier en mode logs. Par contre le debug peut bloquer l’écran tft, le sérial0 étant partagé entre l’USB et le TFT.
A utiliser qu’en cas de problème.
#define DEBUG_NUNCHUK 0// 0 =>no debug ,1 =>All Debug,2 =>NunchukDeviceClass,3 =>NunchukClass,4=>CalcMove;

//---------------------------Axe Z-----------------------------//
#define AXE_Z_STEP_1 0.1f => pas du premier tiers
#define AXE_Z_SPEED_1 10 => vitesse d’avance
#define AXE_Z_TRESHOLD_1 60 => seuil max de déclenchement du premier tiers
#define AXE_Z_DELAY_1 500 => délai en ms avant qu’il avance d’un pas de 0.1 mm
//-------------------------------------------------------------//
#define AXE_Z_STEP_2 1
#define AXE_Z_SPEED_2 10
#define AXE_Z_TRESHOLD_2 120
#define AXE_Z_DELAY_2 1000
//-------------------------------------------------------------//
#define AXE_Z_STEP_3 0.1f
#define AXE_Z_SPEED_3 15
#define AXE_Z_TRESHOLD_3 121 => inactif
#define AXE_Z_DELAY_3 0 => inactif
//-------------------------------------------------------------//

#define MIDDLE_THRESHOLD (3u) seuil de point milieu nunchuck avant qu’il fasse avancer les moteurs

Le firmware est dispo ici Firmware

Je laisse le soin à Kachidoki de regarder cette mise à jour.
Avatar du membre
RoMaker
Administrateur du site
Messages : 5063
Enregistré le : 02 janv. 2017 20:24
Localisation : Montpellier
Contact :

Re: Mise à Jour Firmware Nunchuk

Message par RoMaker »

Merci beaucoup pour cette maj, j'ai pas trouvé le temps de la tester :oops: j'essaye ça au plus vite ;)
Avatar du membre
Regis07
Messages : 174
Enregistré le : 31 janv. 2019 21:49
Localisation : Bandol

Re: Mise à Jour Firmware Nunchuk

Message par Regis07 »

Maru a écrit : 10 mars 2019 20:53 Bonjour,

J'ai fait une mise à jour du programme nunchuk, il fonctionne sur un nunchuk chinois. Il a pas été testé sur nunchuk original.
Il corrige également le pb de blocage écran TFT après utilisation du nunchuk.
J'ai découpé le nunchuk en 3 positions:
- de 0 à 1/3 => les moteurs font des pas de 0.1mm
- de 1/3 à 2/3 => les moteurs font des pas de 1 mm
- de 2/3 au max => cela avance en vitesse rapide.
Quand on relâche les boutons C ou Z cela remet à zéro les compteurs XYZ.

Toute la conf nunchuck est dans le fichier NunchukConfig.h

Permet de diminuer la clock I2C au cas où des nunchuk serait vraiment lent.
#define CLOCK_I2C 400000U //100000U ou 400000U

Debug permet de déboguer le programme à différents niveaux.
Il suffit de se mettre dans repetier en mode logs. Par contre le debug peut bloquer l’écran tft, le sérial0 étant partagé entre l’USB et le TFT.
A utiliser qu’en cas de problème.
#define DEBUG_NUNCHUK 0// 0 =>no debug ,1 =>All Debug,2 =>NunchukDeviceClass,3 =>NunchukClass,4=>CalcMove;

//---------------------------Axe Z-----------------------------//
#define AXE_Z_STEP_1 0.1f => pas du premier tiers
#define AXE_Z_SPEED_1 10 => vitesse d’avance
#define AXE_Z_TRESHOLD_1 60 => seuil max de déclenchement du premier tiers
#define AXE_Z_DELAY_1 500 => délai en ms avant qu’il avance d’un pas de 0.1 mm
//-------------------------------------------------------------//
#define AXE_Z_STEP_2 1
#define AXE_Z_SPEED_2 10
#define AXE_Z_TRESHOLD_2 120
#define AXE_Z_DELAY_2 1000
//-------------------------------------------------------------//
#define AXE_Z_STEP_3 0.1f
#define AXE_Z_SPEED_3 15
#define AXE_Z_TRESHOLD_3 121 => inactif
#define AXE_Z_DELAY_3 0 => inactif
//-------------------------------------------------------------//

#define MIDDLE_THRESHOLD (3u) seuil de point milieu nunchuck avant qu’il fasse avancer les moteurs

Le firmware est dispo ici Firmware

Je laisse le soin à Kachidoki de regarder cette mise à jour.
Je viens de faire le test, avec un Nunchuk chinois, ça marche mais plus rien ne fonctionne avec un Nunchuk original.
Aucun mouvement ne fonctionne et rien non plus avec l'écran TFT.
De retour avec le Firmware 0.95, fonctionnement correct.
Régis
Kachidoki
Messages : 1549
Enregistré le : 18 août 2017 20:22

Re: Mise à Jour Firmware Nunchuk

Message par Kachidoki »

Bonjour Maru et bienvenue sur le forum.

J'ai lancé un coup de Beyond Compare entre les deux versions, et le moins qu'on puisse dire, c'est que ce n'est pas qu'une simple mise à jour !

Alors j'ai pas encore creusé en profondeur, mais j'ai déjà plusieurs remarques, dont la première qui est probablement plus pour Romain :
  • La version que je maintiens sur github et gitlab est basée sur la dernière version de Repetier : 1.0.3. Cette mise à jour 0.96 semble basée sur la version 1.0.2.
Pour Maru :
  • Il y a une non homogénéité dans les appellations, on utilise le terme Nunchuk, et non pas Nunchuck. Le mélange des deux peut conduire à des confusions lors de la relecture de code.
  • D'un point de vue strictement programmeur, la charte de codage de Repetier n'est pas respectée, indentation, tabulation, nommage, termes en français etc... De même que ça manque de factorisation, tu as par exemple trois fois (presque) le même code qui est dupliqué pour les calculs des axes.
  • Dans la "NunchukClass::loop", tu instancies un objet "nunchuk" de type classe "Nunchuck", qui est assez énorme. Outre le 'c' qui s'est introduit, on a du mal à comprendre son rôle face à la "NunchukClass" (couche appli), surtout que j'ai l'impression qu'elle reprend le boulot de la "NunchukDeviceClass" (couche physique). C'est quoi exactement cette nouvelle classe, une surcouche à la couche physique ? De plus, cet objet instancie lui-même plusieurs tableaux de classe "axe". Tout ça va obliger le MCU à faire de l'allocation dynamique à chaque tour de boucle (j'ai compté grossièrement 130 octets en RAM). De tête on utilise un peu moins des trois quarts de la RAM, donc on ne devrait pas être confronté au problème de la fragmentation mémoire, mais le CPU perd un temps fou pour pas grand chose. Je me demande comment le motion planner arrive encore à tourner à vitesse normale.
  • J'ai l'impression que tu rempli le buffer par petits segments à chaque tour de boucle, ce qui doit probablement introduire une latence dans les changement de direction ?
Bon je m'arrête là pour le moment, j'ai pas envie de te dégoûter tout de suite. :lol:
Maru
Messages : 2
Enregistré le : 06 sept. 2018 20:49

Re: Mise à Jour Firmware Nunchuk

Message par Maru »

Bonjour Kachidoki

Effectivement c'est un 1.0.2 mais c'est celle que distribue Romain sur son site.
C'est quoi l'adresse du gitlab ou du github.
Je pensais avoir corrigé tous les termes nunchuck apparemment non ;)
Concernant la classe, il est vrai que lorsqu'on développe sur pc on utilise plutôt des classes que l'on passe dans les méthodes pour faciliter la maintenance du code, on n'est pas limité par la ram et le processeur :lol: .
Répondre