Voir les contributions

Cette section vous permet de consulter les contributions (messages, sujets et fichiers joints) d'un utilisateur. Vous ne pourrez voir que les contributions des zones auxquelles vous avez accès.


Messages - Dominique

Pages: 1 ... 39 40 [41] 42 43 ... 171
601
Bibliothèques / Re : Analog pushes avec Commanders
« le: mai 25, 2021, 07:04:37 pm »
Si l’état de la lampe se nomme « etatLampe » de type booléen, vous faites :
etatLampe = !etatLampe;
Regardez cet exemple (que je vous ai suggéré):

https://www.arduino.cc/en/tutorial/switch

602
Bibliothèques / Re : Analog pushes avec Commanders
« le: mai 25, 2021, 03:29:42 pm »
Si vous associez à chaque lampe une variable d’état « allumée »  ou « éteinte », et commandez la lampe en fonction de son état, alors chaque appui sur un bouton doit simplement changer l’état : CQFD !

C’est un cas qui existe un peu partout en cherchant avec le mot « toggle »  8)

603
Vos projets / Re : projet centrale "LaBox" wifi DCC++ Can
« le: mai 21, 2021, 08:17:09 pm »
Je n’en doutais pas.  ;) :D

Exercice plus difficile : la page précédente sur masques et filtres est-elle claire ?
Je l’ai refaite en faisant les tests, les masques fonctionnant différemment de ce que je pensais.
Attention, c’est peut-être différents sur d’autres contrôleurs Can  ???

604
Vos projets / Re : projet centrale "LaBox" wifi DCC++ Can
« le: mai 21, 2021, 04:01:58 pm »
Suite des tests des masques et filtres CAN (de la page précédente) :

Voici le programme LaBox avec gestion des messages CAN échangés avec un satellite (N°5) qui fonctionne en même temps que les commandes de loco avec un smartphone

Il est basé sur le programme exemple LaBox avec la bibliothèque version 0.8.2, auquel est ajouté le test Can présenté à la page précédente :
https://forum.locoduino.org/index.php?topic=922.msg13295#msg13295

605
Vos projets / Re : projet centrale "LaBox" wifi DCC++ Can
« le: mai 21, 2021, 01:40:41 pm »
Très jolie carte : bravo Christophe,

Peux-tu joindre le schéma ?
J'idée d'avoir une passerelle WiFi-Can avance dans mon réseau. Je serais intéressé par un couple de cartes de ce type, ainsi que la source des ESP32 30 pins utilisés.

Merci d'avance

606
Bus DCC / Re : Moniteur DCC - Version autonome du sniffer de Rudy
« le: mai 19, 2021, 10:53:57 am »
Pour rafraichir le sujet, je serais intéressé par un petit circuit imprimé regroupant la partie détection avec 6N137 et un afficheur + 2 boutons de configuration permettant par soft de filtrer les trames à l'affichage.

.. ça existe sans doute déjà ?



607
Vos projets / Re : Re : projet centrale "LaBox" wifi DCC++ Can
« le: mai 19, 2021, 10:42:13 am »
Nouvelle version 0.8.1 :

Corrige le bouton 'Stop' de WiThrottle qui mets bien maintenant la vitesse DCC à 1 (arrêt urgence).
OK
Citer
Corrige le bouton 'Idle' de WiThrottle qui mets bien maintenant la vitesse DCC à 0 (arrêt total normal).
OK
Citer
Stoppe l'effet 'timeout' de déconnexion des throttles pendant la lecture de l'adresse de la loco.
NoK : le throttle est toujours déconnecté à la fin de la lecture
Et la lecture ne se fait pas : la loco ne gigote pas, ce qui me fait supposer que les commandes de lecture de CV sur la main ne sont pas émises.
Alors que les commandes de vitesse/direction et fonction sont bien émises.
A vérifier au sniffer DCC.
Citer
Corrige un problème de compilation sur l'IDE 2.0 Beta 6.
je n'ai pas pu tester
Citer
Allumage du DCC si une demande de lecture d'adresse de loco a été faite au menu.
OK
Citer
Ajout de la led de statut pendant le setup() dans labox.ino (merci Dominique).
OK: merci Thierry
Citer
Retrait de la répétition des fonctions pour le moment.
Pour allumer les lumières (phares), il faut encore cliquer sur FL, puis F1 (ou F2..). Un nouveau clic sur F0 eteint les lumières.

608
Vos projets / Re : projet centrale "LaBox" wifi DCC++ Can
« le: mai 18, 2021, 12:15:28 pm »
Thierry,
Je suis d'accord avec toi pour les vitesses sur Withrottle: c'est la même chose avec une curiosité : en quittant Withrottle, la vitesse affichée sur l'Oled passe à 0 mais la loco ne s'arrête pas. Sur le moniteur le throttle 5 est disconnected après la commande Q
11:59:08.755 -> 5 From Throttle : MT-S18<;>r
11:59:08.860 -> 5 From Throttle : Q
11:59:08.860 -> Throttle 5 MT-S18<;>r
11:59:08.860 -> 5 -> <T1 18 34 0>MT-S18<;>
11:59:08.860 -> Locomotives ------------------
11:59:08.860 -> 0 : Loco reg:1 id:18 max:128      +/-speed:-33      functions: 1
11:59:08.860 -> 1 : Loco reg:2 id:14 max:128      +/-speed:0      functions:
11:59:08.959 -> Throttle 5 Q
11:59:08.959 -> Converter : client 5 disconnected

En ce qui concerne la lecture des CVs, rien ne marche (comme Michel) et pourrais-tu me dire où il faut regarder ou comparer le code ?
Ma mesure de courant sur l'Oled a l'air correcte (environ 50 mA avec ma petite loco, <5mA quand elle s'arrête suite à un mauvais contact).
Le message ERROR s'affiche juste après l'échec de la lecture du CV1 mais juste une fraction de seconde !
A la fin le throttle est déconnecté.

11:51:23.777 -> readCVraw : start reading cv 29
11:51:23.850 -> bit : 0 iter : 15, max : 5
11:51:24.484 -> bit : 1 iter : 6, max : 8
11:51:25.152 -> bit : 2 iter : 5, max : 7
11:51:25.787 -> bit : 3 iter : 0, max : 5
11:51:26.458 -> bit : 4 iter : 6, max : 6
11:51:27.122 -> bit : 5 iter : 1, max : 7
11:51:27.760 -> bit : 6 iter : 0, max : 5
11:51:28.420 -> bit : 7 iter : 12, max : 6
11:51:29.064 -> verif :  iter : 14, max : 5
11:51:29.666 -> readCVraw : start reading cv 1
11:51:29.734 -> bit : 0 iter : 10, max : 4
11:51:30.392 -> bit : 1 iter : 1, max : 11
11:51:31.020 -> bit : 2 iter : 7, max : 4
11:51:31.679 -> bit : 3 iter : 6, max : 5
11:51:32.336 -> bit : 4 iter : 12, max : 6
11:51:32.977 -> bit : 5 iter : 3, max : 5
11:51:33.645 -> bit : 6 iter : 2, max : 3
11:51:34.266 -> bit : 7 iter : 11, max : 7
11:51:34.957 -> verif :  iter : 6, max : 5
11:51:35.616 -> readCVraw : start reading cv 29
11:51:35.683 -> bit : 0 iter : 3, max : 3
11:51:36.320 -> bit : 1 iter : 1, max : 5
11:51:36.986 -> bit : 2 iter : 9, max : 5
11:51:37.636 -> bit : 3 iter : 12, max : 5
11:51:38.292 -> bit : 4 iter : 0, max : 5
11:51:38.927 -> bit : 5 iter : 17, max : 6
11:51:39.596 -> bit : 6 iter : 5, max : 4
11:51:40.259 -> bit : 7 iter : 17, max : 4
11:51:40.891 -> verif :  iter : 19, max : 6
11:51:41.473 -> readCVraw : start reading cv 1
11:51:41.545 -> bit : 0 iter : 8, max : 6
11:51:42.208 -> bit : 1 iter : 17, max : 7
11:51:42.870 -> bit : 2 iter : 19, max : 5
11:51:43.490 -> bit : 3 iter : 18, max : 5
11:51:44.159 -> bit : 4 iter : 14, max : 6
11:51:44.825 -> bit : 5 iter : 8, max : 4
11:51:45.449 -> bit : 6 iter : 18, max : 4
11:51:46.115 -> bit : 7 iter : 2, max : 3
11:51:46.777 -> verif :  iter : 18, max : 4
11:51:47.435 -> readCVraw : start reading cv 29
11:51:47.502 -> bit : 0 iter : 7, max : 5
11:51:48.154 -> bit : 1 iter : 17, max : 5
11:51:48.815 -> bit : 2 iter : 5, max : 5
11:51:49.474 -> bit : 3 iter : 0, max : 5
11:51:50.100 -> bit : 4 iter : 2, max : 3
11:51:50.769 -> bit : 5 iter : 11, max : 6
11:51:51.397 -> bit : 6 iter : 3, max : 3
11:51:52.058 -> bit : 7 iter : 0, max : 3
11:51:52.718 -> verif :  iter : 10, max : 6
11:51:53.322 -> readCVraw : start reading cv 1
11:51:53.389 -> bit : 0 iter : 2, max : 5
11:51:54.039 -> bit : 1 iter : 11, max : 6
11:51:54.705 -> bit : 2 iter : 7, max : 5
11:51:55.326 -> bit : 3 iter : 12, max : 6
11:51:55.977 -> bit : 4 iter : 4, max : 6
11:51:56.630 -> bit : 5 iter : 6, max : 3
11:51:57.284 -> bit : 6 iter : 8, max : 5
11:51:57.955 -> bit : 7 iter : 10, max : 6
11:51:58.626 -> verif :  iter : 9, max : 5
11:52:09.962 -> Converter : client 5 disconnected

Une remarque au passage :
La manette de michel démarre le DCC à la fin de son setup (elle envoie <1>, même plusieurs fois)
Withrottle n'envoie <1> qu'après la connexion wifi, ce qui est normal
Mais pour récupérer l'adresse DCC d'une loco, il faut donc connecter un Throttle au préalable. La commande du menu HMI ne le fait pas !
Ne serait-il pas utile d'établir le DCC (comme <1>) juste avant une lecture d'adresse, quite à le couper juste après s'il n'y a aucun throttle connecté ?

609
Vos projets / Re : Re : projet centrale "LaBox" wifi DCC++ Can
« le: mai 17, 2021, 10:11:55 pm »
Curieux, dans mon relevé sur le serial, il n'y a pas de tentative de lecture du CV1 ...

ne serait-ce pas le transmetteur radio qui bloque le RxTx de l'USB ?

610
Vos projets / Re : projet centrale "LaBox" wifi DCC++ Can
« le: mai 17, 2021, 09:48:37 pm »
tiens, c'est déjà mieux que mes tests

La lumière s'allume effectivement en cliquant sur "light" puis F1 (ou F2 ou F3 ou F4). un clic sur light eteint la lumière.
Je ne lis toujours pas l'adresse
Je continue les tests.

611
Vos projets / Re : projet centrale "LaBox" wifi DCC++ Can
« le: mai 17, 2021, 05:40:25 pm »
Voici quelques exemples de programmation des filtres et masques avec la bibliothèque ACAN_ESP32 :

1) La méthode settings est crée en indiquant la vitesse du bus CAN (exemple, ici 500 kb/s):

static const uint32_t DESIRED_BIT_RATE = 500UL * 1000UL ; // 0,5 Mb/s
ACAN_ESP32_Settings settings (DESIRED_BIT_RATE) ;

2) On choisit le mode de fonctionnement: NormalMode dans tous les cas de nos réseaux ou LoopBackMode dans les exemples donnés avec la bibliothèque aux fins de test uniquement.
La définition des pins Tx et Rx pour le can sont laissées en commentaire car elles sont celles utilisées par LaBox, donc inchangées par rapport aux valeurs pas défaut.

settings.mRequestedCANMode = ACAN_ESP32_Settings::NormalMode ;
//  settings.mRxPin = GPIO_NUM_4 ; // Optional, default Tx pin is GPIO_NUM_4
//  settings.mTxPin = GPIO_NUM_5 ; // Optional, default Rx pin is GPIO_NUM_5

Si on veut utiliser un seul jeu de masque et filtre, la méthode singleStandardFilter permet de déclarer le type de message (ici data, puis le filtre, puis le masque).
Ensuite on appelle begin avec 2 arguments: settings et filter.
const ACAN_ESP32_Filter filter = ACAN_ESP32_Filter::singleStandardFilter (ACAN_ESP32_Filter::data, 0x000, 0x01F) ;
 // masque = tous les Id acceptes de 00 à 1F
const uint32_t errorCode = ACAN_ESP32::can.begin (settings, filter);

Si on veut utiliser deux jeux de masque et filtre, la méthode dualStandardFilter permet de déclarer deux type de message (ici data, puis le filtre, puis le masque).
Ensuite on appelle begin avec 2 arguments: settings et filter.
const ACAN_ESP32_Filter filter = ACAN_ESP32_Filter::dualStandardFilter (
    ACAN_ESP32_Filter::data, 0x000, 0x00F,    // acceptés de 00 à 0F
    ACAN_ESP32_Filter::data, 0x010, 0x00F);   // acceptés de 10 à 1F
 const uint32_t errorCode = ACAN_ESP32::can.begin (settings, filter);

Enfin, si on ne veut pas de filtrage du tout, il n'y a aucune déclaration de filtre à faire.
Ensuite on appelle begin avec un seul argument: settings.

const uint32_t errorCode = ACAN_ESP32::can.begin (settings) ;

En pièce jointe se trouve le programme de tests que j'ai utilisé sur l'ESP32 de LaBox, en laison CAN avec un satellite qui reçoit des messages avec l'ID 25 et qui emet des messages avec l'Id 15.

612
Vos projets / Re : projet centrale "LaBox" wifi DCC++ Can
« le: mai 17, 2021, 05:39:38 pm »
Pour illustrer les possibilités - certes limitées - de filtrage CAN de l'ESP32, la bibliothèque ESP32_CAN propose des exemples correspondant aux cas ci-dessus :
Ils sont traduits de la documentation acan-esp32.pdf qui se trouve dans le dossier "extra" de la bibliothèque.

Dans chaque cas, la définition des filtres et masques tient en une seule ligne dans le setup :

ESP32CANAcceptOnlyStandardFilterDemo
  const ACAN_ESP32_Filter filter = ACAN_ESP32_Filter::acceptStandardFrames () ;
Dans ce cas, les messages étendus sont rejetés et tous les messages standards sont acceptés.

ESP32CANAcceptOnlyExtendedFilterDemo
  const ACAN_ESP32_Filter filter = ACAN_ESP32_Filter::acceptExtendedFrames () ;
Dans ce cas les messages standards sont rejetés et tous les messages étendus sont acceptés.

ESP32CANSingleStandardFilterDemo
  const ACAN_ESP32_Filter filter = ACAN_ESP32_Filter::singleStandardFilter (ACAN_ESP32_Filter::data, 0x123, 0x404) ;
Le premier argument indique si on veut recevoir :
  • data: uniquement des messages de données
  • remote: uniquement des message de remote
  • dataAndRemote: les deux.
Les bits de 0x404 sont le #2 et #10. Les bits #2 et #10 de 0x123 sont ignorés dans le filtrage. En conséquence les messages d'identifiants 0x123, 0x127, 0x523 et 0x527 sont reçus.
un "0" comme dernier argument indique que le seul message accepté sera celui dont l'identifiant est égal au 2ème argument.

ESP32CANDualStandardFilterDemo
  const ACAN_ESP32_Filter filter = ACAN_ESP32_Filter::dualStandardFilter (
    ACAN_ESP32_Filter::data, 0x123, 0x110,
    ACAN_ESP32_Filter::remote, 0x456, 0x022
  ) ;
Pour le 1er filtre, les bits de 0x110 sont les #4 et #8: bits 4 et 8 de 0x123 sont ignorés dans le filtrage. Donc les identifiants 0x023, 0x033, 0x123 and 0x133 sont recevables.
Pour le 2eme filtre, les bits de 0x022 sont les #1 et #5: bits 1 et 5 de 0x456  sont ignorés dans le filtrage. Donc les identifiants 0x454, 0x456, 0x474 et 0x476 sont recevables et s'ajoutent à ceux du 1er filtre.

ESP32CANSingleExtendedFilterDemo
  const ACAN_ESP32_Filter filter = ACAN_ESP32_Filter::singleExtendedFilter (ACAN_ESP32_Filter::data, 0x12345678, 0x20202) ;
Le 1er argument est "date" ou"remote" ou "dataAndRemote"
Le 3eme argument si "0" indique que le seul message accepté sera celui dont l'identifiant est égal au 2ème argument.
Les bits de 0x20202 sont le #1 , #9 et #17: ils sont ignorés dans le filtrage de 0x12345678.
Donc les identifiants 0x12345478, 0x1234547A, 0x12345678, 0x1234567A, 0x12365478, 0x1236547A, 0x12365678 et 0x1236567A seront acceptés.

ESP32CANDualExtendedFilterDemo
  const ACAN_ESP32_Filter filter = ACAN_ESP32_Filter::dualExtendedFilter (
    0x12345678, 0x00060000, // First filter
    0x19876543, 0x00009000  // Second filter
  ) ;
Noter que les bits 0 to 12 dans les paramètres sont toujours ignorés par ce type de filtre.
Par exemple, le 1er filtre compris entre 0x12344000 et 0x12345FFF donnera toujours le même résultat.
Dans le 2ème masque 0x00009000, le bit #12 est toujours ignoré, donc toutes les valeurs entre 0x00008000 et 0x00009FFF donneront le même résultat. Finallement, ce filtre accepte des messages data et remote étendus dont l'identifiant est de la forme 1 0010 0011 0xx0 010x xxxx xxxx xxxx (215 étendus et 215 remote) ou 1 1001 1000 0111 x00x xxxx xxxx xxxx (214 étendus, 214 remote).

après chaque définition de filtre et masque suit le begin du Can:
  const uint32_t errorCode = ACAN_ESP32::can.begin (settings, filter);

613
Vos projets / Re : projet centrale "LaBox" wifi DCC++ Can
« le: mai 17, 2021, 05:39:31 pm »
S'il n'y avait qu'un seul couple masque-filtre, les possibilités de filtrage seraient limitées.
Le SJA1000 permet d'utiliser 2 couples masque-filtre dont les plages d'acceptance s'additionnent : il suffit qu'un message soit acceptable par l'un des couples pour être autorisé à entrer dans la file de réception.

Contrairement au MCP2515 qui a 2 masques et 6 filtres, l'ESP32 n'a que 2 masques de 32 bits et 2 filtres de 32 bits chacun.
En fait, les masques sont définis dans 4 registres 8 bits AMR0, AMR1, AMR2, AMR3 (dits "Acceptance Mask Registers").
Et les filtres sont définis dans 4 registres 8 bits ACR0, ACR1, ACR2, ACR3 (dits "Acceptance Code Registers").
Ces 8 registres peuvent être combinés de 4 façons différentes pour réaliser le filtrage des messages. Mais, selon le cas, il faut faire attention à ce qu'on fait !

1) Un seul filtre pour messages standard (Id de 11 bits):
L'identifiant de 11 bits, le bit de mode remote RTR et les 2 premiers octets de donnée du message sont inclus dans le processus d'acceptance. Un message peut néanmoins être accepté s'il ne contient qu'un seul ou aucun octet de données ou s'il est un message de remote (bit RTR) donc sans données.


2) Deux filtres pour messages standard (Id de 11 bits):
Dans ce cas, le premier filtre compare l'Id entier (11 bits) et le RTR, ainsi que le premier octet de données. Le deuxième filtre compare seulement l'identifiant et le RTR.


3) Un seul filtre pour messages étendus (Id de 29 bits):
Ici, la totalité de l'identifiant, incluant le RTR est comparé aux registres.


4) Deux filtres pour messages étendus (Id de 29 bits):
Ici, seuls les 2 premiers octets de l'ID sont comparé et ceci pour les 2 filtres.



PS: je ne garanti pas les éventuelles erreurs dans les figures qui sont issues de la datasheet !

614
Vos projets / Re : projet centrale "LaBox" wifi DCC++ Can
« le: mai 17, 2021, 05:38:10 pm »
Ayant commencé à étudier l'intégration du bus Can avec la bibliothèque ACAN_ESP32 de Pierre Molinaro, je vous présente un petit exposé sur les masques et les filtres qui permettent de limiter la réception de messages aux seuls qui sont attendus par le programme.

On se reportera d'abord sur les 2 articles "La bibliothèque ACAN" (1) et (2)

L'ESP32 étant équipé en interne d'un chip SJA1000 de NXP, je joins la datasheet ICI.

Avant de rentrer dans le cas spécifique de ce contrôleur Can, voici des généralités sur les filtres et les masques :
Le but de ces registres est d'analyser chaque message qui passe sur le bus pour décider si ce message intéresse le noeud (votre carte connectée au bus Can) ou pas. Si oui, le message est placé dans la file de réception, sinon il est ignoré.

La décision d'acceptance se fait sur l'analyse de l'identifiant (Id), bit à bit, au regard de 2 registres appelés Masque et Filtre.
Si la logique d'acceptance est favorable, alors le message est réceptionné dans la file de réception et sera servi à votre programme par le jeu d'une interruption. Tout ceci est géré en interne par le composant Can et la bibliothèque.

Il faut donc se concentrer sur ce qu'il faut mettre dans les filtres et les masques !

Principe :
Chaque bit du masque ne fait rien d’autre que de valider ou invalider le bit correspondant du filtre.
Dans le cas de l'ESP32 :
Un bit '0' valide le bit correspondant du filtre.
Un bit '1' permet d'ignorer le bit correspondant du filtre.


Chaque bit du filtre validé par le masque teste l’égalité avec le bit correspondant de l’identifiant, les autres bits pouvant avoir n’importe quelle valeur donc sont validés d’office.
Le résultat global du test (un & sur l’ensemble des tests bit individuels) autorise l’entrée du message dans la file d’attente du récepteur Rx du CAN et arme une interruption.
Donc un message dont l’identifiant n’est pas validé par ce test est invisible par le programme.

Le plus simple pour comprendre est de regarder quelques exemples basés, pour commencer, sur le cas des identifiants de 11 bits (standards).
Dans le cas du SJA1000, cela peut concerner aussi des identifiants de 29 bits (étendus) et il existe un ou 2 couples de masques et filtres maximum, ainsi que des possibilités de filtrage sur les 2 premiers octets de données du message.
Mais il faut procéder par étape donc on commence à s'interesser uniquement au cas des identifiants courts (11 bits) pour comprendre la logique.

Exemples pour un identifiant de 11bits :

MasqueFiltreResultat
0b00000000000 (0x0000) (tous les bits validés)0b11111111111 (0x07FF)Le Rx ne recevra que les messages avec l’Id 0x07FF
0b00000000000 (0x0000) (tous les bits validés)0b01111111110 (0x03FE)Le Rx ne recevra que les messages avec l’Id 0x03FE
0b00000000001 (0x0001)0b01111111111 (0x03FF)Le Rx ne recevra que les messages avec l’Id 0x03FE ou 0x03FF car le bit 0 du filtre est invalidé par le bit 0 du masque
0b00000000001 (0x0001)0b01111111110 (0x03FE)Le Rx ne recevra que les messages avec l’Id 0x03FE ou 0x03FF car le bit 0 du filtre est invalidé (idem cas précédent)
0b00000000000 (0x0000) (tous les bits validés)0b01111111000 (0x03F8)Le Rx ne recevra que les messages avec l’Id 0x03F8
0b00000000111 (0x0007)0b01111111000 (0x03F8)Le Rx recevra tous les messages avec l’Id 0x03F8, 0x03F9, 0x03FA, 0x03FB,0x03FC, 0x03FD, 0x03FE, 0x03FF car les bit 0,1 & 2 du filtre sont invalidés
0b00000000000 (0x0000) (tous les bits validés)0b00000000001 (0x0001)Le Rx ne recevra que les messages avec l’Id 0x001
0b00000000111 (0x0007)0b00000000000 (0x0000)Le Rx recevra tous les messages avec l’Id 0x000,0x001,  0x002, 0x003, 0x004, 0x005, 0x006, 0x007 car les bits 0,1 & 2 jeu filtre sont invalidés
0b11111111000 (0x07F8)0b00000000000 (0x0000)Le Rx recevra tous les messages don’t l’Id se termine par 0, 1, 2, 3, 4, 5, 6, ou 7 (0x121 = acepté, 0x0128 = eliminé)
0b11111111111 (0x07FF)0b00000000000 (0x0000)Tous les messages sont acceptés quelque soit l'identifiant



On pourrait presque dire que le masque et plus prépondérant que le filtre dans cette logique d'acceptance.
Le filtre définit une valeur de base et le masque définit une plage d'acceptance autour de la valeur du filtre.



615
Vos projets / Re : projet centrale "LaBox" wifi DCC++ Can
« le: mai 17, 2021, 02:43:46 pm »
Test de la version 080 modifiée pour afficher l'HMI:

1) la lumière ne fonctionne pas: le symbole * s'affiche sur l'Oled mais la lumière ne s'allume pas sur la loco
sur le moniteur:
5 From Throttle : MTAS18<;>F10
Throttle 5 MTAS18<;>F10
DCCpp SetFunctions for loco 18 / Activated : 0


A l'appui suivant, le symbole * s'eteint sur l'Oled et la lumière reste éteinte
5 From Throttle : MTAS18<;>F10
Throttle 5 MTAS18<;>F10
DCCpp SetFunctions for loco 18 / Activated :

Les commandes de vitesse et direction fonctionnent bien:
5 From Throttle : MTAS18<;>V33
Throttle 5 MTAS18<;>V33
DCCpp SetSpeed for loco 18 : 33/128 )

L'appui sur la touche IDLE est sans effet:
5 From Throttle : MTAS18<;>I
Throttle 5 MTAS18<;>I
DCCpp SetSpeed for loco 18 : 32/128 )
5 From Throttle : *
Throttle 5 *
5 -> <T2 18 32 1>*10

L'appui sur la touche STOP n'arrête pas la loco, elle ralenti à la vitesse 1 comme si l'emergency stop n'existait pas dans le décodeur.
D'ailleurs la vitesse 1 est possible avec le curseur et la loco avance bien très lentement !
5 From Throttle : MTAS18<;>X
Throttle 5 MTAS18<;>X
DCCpp SetSpeed for loco 18 : 1/128 )
5 From Throttle : *
Throttle 5 *
5 -> <T2 18 1 1>*10

la lecture de l'adresse loco ne fonctionne plus: après démarrage LaBox, Withrottle connecté pour établir le signal DCC sur les rails, mais pas d'adresse de loco sélectionnée. La machine ne bouge pas du tout !
Le message ERROR s'affiche trop vite : on n'a pas le temps de le lire et je ne vois pas de compte-rendu -1 sur la trace moniteur.
14:28:26.021 -> readCVraw : start reading cv 29
14:28:26.095 -> bit : 0 iter : 9, max : 9
14:28:26.731 -> bit : 1 iter : 11, max : 13
14:28:27.393 -> bit : 2 iter : 13, max : 11
14:28:28.069 -> bit : 3 iter : 2, max : 8
14:28:28.696 -> bit : 4 iter : 18, max : 14
14:28:29.367 -> bit : 5 iter : 6, max : 14
14:28:30.023 -> bit : 6 iter : 18, max : 10
14:28:30.653 -> bit : 7 iter : 0, max : 12
14:28:31.323 -> verif :  iter : 19, max : 14
14:28:31.913 -> readCVraw : start reading cv 1
14:28:31.985 -> bit : 0 iter : 14, max : 7
14:28:32.660 -> bit : 1 iter : 6, max : 13
14:28:33.299 -> bit : 2 iter : 1, max : 13
14:28:33.936 -> bit : 3 iter : 3, max : 13
14:28:34.596 -> bit : 4 iter : 19, max : 16
14:28:35.270 -> bit : 5 iter : 0, max : 11
14:28:35.899 -> bit : 6 iter : 10, max : 10
14:28:36.566 -> bit : 7 iter : 1, max : 15
14:28:37.235 -> verif :  iter : 10, max : 11
14:28:37.897 -> readCVraw : start reading cv 29
14:28:37.969 -> bit : 0 iter : 3, max : 17
14:28:38.603 -> bit : 1 iter : 12, max : 15
14:28:39.244 -> bit : 2 iter : 4, max : 13
14:28:39.917 -> bit : 3 iter : 9, max : 10
14:28:40.587 -> bit : 4 iter : 1, max : 11
14:28:41.240 -> bit : 5 iter : 3, max : 11
14:28:41.875 -> bit : 6 iter : 2, max : 14
14:28:42.534 -> bit : 7 iter : 18, max : 13
14:28:43.199 -> verif :  iter : 2, max : 12
14:28:43.766 -> readCVraw : start reading cv 1
14:28:43.838 -> bit : 0 iter : 1, max : 9
14:28:44.510 -> bit : 1 iter : 3, max : 13
14:28:45.141 -> bit : 2 iter : 19, max : 9
14:28:45.814 -> bit : 3 iter : 4, max : 9
14:28:46.448 -> bit : 4 iter : 13, max : 9
14:28:47.108 -> bit : 5 iter : 12, max : 13
14:28:47.769 -> bit : 6 iter : 17, max : 11
14:28:48.435 -> bit : 7 iter : 5, max : 10
14:28:49.070 -> verif :  iter : 7, max : 11
14:28:49.749 -> readCVraw : start reading cv 29
14:28:49.819 -> bit : 0 iter : 0, max : 10
14:28:50.453 -> bit : 1 iter : 5, max : 12
14:28:51.126 -> bit : 2 iter : 8, max : 12
14:28:51.763 -> bit : 3 iter : 10, max : 12
14:28:52.437 -> bit : 4 iter : 15, max : 15
14:28:53.101 -> bit : 5 iter : 14, max : 12
14:28:53.730 -> bit : 6 iter : 6, max : 12
14:28:54.372 -> bit : 7 iter : 15, max : 12
14:28:55.040 -> verif :  iter : 6, max : 12
14:28:55.634 -> readCVraw : start reading cv 1
14:28:55.701 -> bit : 0 iter : 19, max : 11
14:28:56.374 -> bit : 1 iter : 0, max : 12
14:28:57.021 -> bit : 2 iter : 9, max : 9
14:28:57.653 -> bit : 3 iter : 4, max : 12
14:28:58.309 -> bit : 4 iter : 3, max : 11
14:28:58.985 -> bit : 5 iter : 19, max : 10
14:28:59.621 -> bit : 6 iter : 18, max : 11
14:29:00.289 -> bit : 7 iter : 10, max : 8
14:29:00.948 -> verif :  iter : 15, max : 15
14:29:13.753 -> Converter : client 5 disconnected

Dans DCCpp.cpp je vois DCCpp::ackThreshold = 30 dans le begin.
Là on voit qu'on est bien en dessous.. Je dois essayer avec une Labox dernière version du PCB

Voilà avec la version 079 (et du Can intégré) : la lecture est très concluante.
Ca fait comme si la commande de lecture des CVs n'est pas envoyée à la loco (?)
14:53:04.169 -> readCVraw : start reading cv 29
14:53:04.237 -> bit : 0 iter : 11, max : 8
14:53:04.415 -> bit : 1 iter : 3, max : 358
14:53:04.587 -> bit : 2 iter : 6, max : 357
14:53:04.788 -> bit : 3 iter : 8, max : 8
14:53:04.961 -> bit : 4 iter : 15, max : 9
14:53:05.129 -> bit : 5 iter : 11, max : 6
14:53:05.337 -> bit : 6 iter : 6, max : 8
14:53:05.507 -> bit : 7 iter : 6, max : 8
14:53:05.712 -> verif :  iter : 6, max : 392
14:53:05.814 -> readCVraw : start reading cv 1
14:53:05.886 -> bit : 0 iter : 4, max : 8
14:53:06.055 -> bit : 1 iter : 6, max : 362
14:53:06.190 -> 4 From Throttle : *
14:53:06.257 -> bit : 2 iter : 8, max : 6
14:53:06.432 -> bit : 3 iter : 14, max : 11
14:53:06.609 -> bit : 4 iter : 3, max : 361
14:53:06.777 -> bit : 5 iter : 5, max : 8
14:53:06.951 -> bit : 6 iter : 16, max : 9
14:53:07.159 -> bit : 7 iter : 0, max : 6
14:53:07.334 -> verif :  iter : 6, max : 389

Cela ne m'empêche pas de travailler sur le Can en attendant  ;D

Pages: 1 ... 39 40 [41] 42 43 ... 171