Auteur Sujet: Bus CAN avec DCCpp  (Lu 27453 fois)

Tony04

  • Hero Member
  • *****
  • Messages: 569
    • Voir le profil
Bus CAN avec DCCpp
« 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

« Modifié: juillet 25, 2018, 06:22:06 pm par Tony04 »

Thierry

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 810
    • Voir le profil
Re : Bus CAN avec DCCpp
« Réponse #1 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 !

Tony04

  • Hero Member
  • *****
  • Messages: 569
    • Voir le profil
Re : Re : Bus CAN avec DCCpp
« Réponse #2 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

Jean-Luc

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1715
    • Voir le profil
Re : Bus CAN avec DCCpp
« Réponse #3 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.
Cordialement

Tony04

  • Hero Member
  • *****
  • Messages: 569
    • Voir le profil
Re : Bus CAN avec DCCpp
« Réponse #4 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...


Jean-Luc

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1715
    • Voir le profil
Re : Re : Bus CAN avec DCCpp
« Réponse #5 le: juillet 26, 2018, 02:38:50 pm »
et là pas question d'utiliser la pin 3 à la place (également timer2).

Pourquoi ?
Cordialement

Tony04

  • Hero Member
  • *****
  • Messages: 569
    • Voir le profil
Re : Re : Re : Bus CAN avec DCCpp
« Réponse #6 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).


Thierry

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 810
    • Voir le profil
Re : Bus CAN avec DCCpp
« Réponse #7 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...

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 3041
  • 100% Arduino et N
    • Voir le profil
Re : Bus CAN avec DCCpp
« Réponse #8 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

Cordialement,
Dominique

Tony04

  • Hero Member
  • *****
  • Messages: 569
    • Voir le profil
Re : Bus CAN avec DCCpp
« Réponse #9 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

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 3041
  • 100% Arduino et N
    • Voir le profil
Re : Bus CAN avec DCCpp
« Réponse #10 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
Cordialement,
Dominique

Tony04

  • Hero Member
  • *****
  • Messages: 569
    • Voir le profil
Re : Bus CAN avec DCCpp
« Réponse #11 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...

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 3041
  • 100% Arduino et N
    • Voir le profil
Re : Bus CAN avec DCCpp
« Réponse #12 le: juillet 26, 2018, 05:59:59 pm »
Chic alors  :D
Cordialement,
Dominique

Tony04

  • Hero Member
  • *****
  • Messages: 569
    • Voir le profil
Re : Re : Bus CAN avec DCCpp
« Réponse #13 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