LOCODUINO

Discussions Générales => Bus CAN => Discussion démarrée par: Tony04 le juillet 25, 2018, 11:34:03 am

Titre: Bus CAN avec DCCpp
Posté par: Tony04 le juillet 25, 2018, 11:34:03 am
Bonjour à tous,

j'essaye depuis plusieurs heures d'intégrer les routines du bus CAN dans le NANO qui fabrique le signal DCC avec la bibliothèque DCCpp.

Il se trouve que les bits 10 et 11 du NANO sont utilisés pour la communication avec la carte CAN mais sont également nécessaires pour le DIR du booster MAIN et le PWM du booster PROG. J'ai essayé d'attribuer la pin 6 ou 9 (libres chez moi) à DCC_SIGNAL_PIN_MAIN dans Config.h mais dés la mise sous tension avec <1>, ma machine file à fond sans contrôle possible.
Je suppose que c'est une question de timer lié à ces pins...

J'utilise un LMD18200  et j'ai mis dans le setup:
  DCCpp::beginMain(UNDEFINED_PIN, DCC_SIGNAL_PIN_MAIN, 3, A0);
  DCCpp::beginProg(UNDEFINED_PIN, DCC_SIGNAL_PIN_PROG, 5, A1);


Y aurait-il une âme charitable pour me donner la solution ?

Bonne journée à vous
Antoine

Titre: Re : Bus CAN avec DCCpp
Posté par: Thierry le juillet 25, 2018, 11:25:11 pm
Tu n'as pas besoin de toucher aux différents fichiers .h . Pour utiliser la broche 1, il suffit de le dire dans le beginMain :

DCCpp::beginMain(UNDEFINED_PIN, 1, 3, A0);
Cela dit, sur un Nano les broches 10 et 5 sont utilisables pour les timers, ce qui n'est pas le cas des autres. Et le timer est obligatoire pour le DCC. Donc, pas de 10 ou de 5, pas de DCC !
Titre: Re : Re : Bus CAN avec DCCpp
Posté par: Tony04 le juillet 26, 2018, 08:58:36 am
Bonjour Thierry,

Cela dit, sur un Nano les broches 10 et 5 sont utilisables pour les timers, ce qui n'est pas le cas des autres. Et le timer est obligatoire pour le DCC. Donc, pas de 10 ou de 5, pas de DCC !

C'est bien ce que j'ai cru comprendre, adieu donc le bus CAN et le DCC sur le même NANO. Du coup pour communiquer entre les deux je vais utiliser la liaison série.

Merci Thierry pour tes explications et bonne journée

Cordialement
Antoine
Titre: Re : Bus CAN avec DCCpp
Posté par: Jean-Luc le juillet 26, 2018, 11:58:53 am
Bonjour,

Si j'ai bien compris, DCCpp utilise la PWM engendrée par le TIMER 1 sur la pin 10 (OC1B) pour le signal DCC. Il pourrait très bien faire la même chose sur la pin 9 (moyennant une modification de DCCpp) et libérer ainsi le SPI. Pour rappel il n'est pas obligatoire que la pin 9 (CS) soit employée comme chip select pour le SPI. Elle doit juste être programmée en sortie pour que le SPI soit en mode maître.
Titre: Re : Bus CAN avec DCCpp
Posté par: Tony04 le juillet 26, 2018, 02:24:02 pm
Bonjour Jean-Luc,

merci pour ta réponse; je peux toujours faire l'essai pour libérer la pin 10 mais le problème est le même pour la pin 11 pour la voie de programmation que j'aimerais quand même garder, et là pas question d'utiliser la pin 3 à la place (également timer2).
Mais j'essaie quand même pour la pin 10.

à plus tard donc...

Titre: Re : Re : Bus CAN avec DCCpp
Posté par: Jean-Luc le juillet 26, 2018, 02:38:50 pm
et là pas question d'utiliser la pin 3 à la place (également timer2).

Pourquoi ?
Titre: Re : Re : Re : Bus CAN avec DCCpp
Posté par: Tony04 le juillet 26, 2018, 03:41:58 pm
Pourquoi ?

Elle est utilisée par le PWM du LMD18200 dans ce montage: http://www.locoduino.org/spip.php?article187
Mais je viens de voir qu' elle aussi je peux la remplacer.

Je suis entrain de faire les différents essai et te tiens au courant (avec du DCC  :) j'espère).

Titre: Re : Bus CAN avec DCCpp
Posté par: Thierry le juillet 26, 2018, 04:09:18 pm
Et je suis preneur des modifs pour les intégrer à DCCpp et ainsi un peu plus ouvrir les possibilités de la bibliothèque...
Titre: Re : Bus CAN avec DCCpp
Posté par: Dominique le juillet 26, 2018, 04:09:43 pm
Je pratique DCCpp + Can depuis un bon moment et je ne m’embête pas avec un Nano : je prends un Mega.

C’est un poil plus cher mais tellement plus confortable  ;D

Titre: Re : Bus CAN avec DCCpp
Posté par: Tony04 le juillet 26, 2018, 04:43:44 pm
Bonjour Dominique,

oui je crois que cela va être la solution finale; ce n'était pas une question de prix mais de circuit imprimé que j'ai de dispo avec le support pour le NANO et la carte CAN, cela m'aurait éviter de faire du câblage, vous savez bien que c'est ma bête noire  >:(.
De toute façon je n'arrive pas à modifier ce "maudit" bit 10 en 9 sur le NANO, il n'y a qu'un endroit où il est défini c'est dans config.h et si je passe en 9, je me retrouve avec du continu en sortie du booster.
Je serai quand même preneur si quelqu'un a déjà réussi cette opération, à tout hasard.

Je pars sur le mega

Merci à tous et bonne fin d'am
Antoine
Titre: Re : Bus CAN avec DCCpp
Posté par: Dominique le juillet 26, 2018, 05:00:50 pm
Bonjour Antoine,

Évidemment ce n’est pas juste changer le port 10 en 9 : il faut programmer des registres ou des bits dans certains registres, programmer des interruptions... ça ne s’improvise pas.

Ce n’est pas facile et moi-même j’hésiterais à le faire.

Quand à réduire le temps de câblage pour monter une centrale, je te comprends à 100% : je viens juste de passer 2 jour à en monter une pour l’expo d’Orleans 2018 : elle contient une carte Can, un lcd 20x4, 2 encodeurs quadratiques (sur interruptions). 6 boutons et 4 leds. Le Mega s’impose surtout pour y loger le logiciel qui sera important avec pas mal de configuration.

Ce sera décrit dans Locoduino plus tard dans l’annee.

Évidemment on ferait un circuit imprimé avec un Mega2560 ou un ESP32, ce serait le pied !

Amicalement
Dominique
Titre: Re : Bus CAN avec DCCpp
Posté par: Tony04 le juillet 26, 2018, 05:11:18 pm
Bon courage pour la préparation d'Orléans, si tout va bien on devrait s'y rencontrer...
Titre: Re : Bus CAN avec DCCpp
Posté par: Dominique le juillet 26, 2018, 05:59:59 pm
Chic alors  :D
Titre: Re : Re : Bus CAN avec DCCpp
Posté par: Tony04 le juillet 30, 2018, 10:18:03 am
Je pratique DCCpp + Can depuis un bon moment et je ne m’embête pas avec un Nano : je prends un Mega.

Bonjour Dominique,

voila, c'est fait avec un MEGA qui, comme tu l'avais prévu, fonctionne à merveille. Me voila avec une centrale DCC relié par CAN, c'est le maillon qui me manquait.

Merci encore

Cordialement
Antoine