1
Vos projets / Re : Re : LaBox" : Une Centrale DCC polyvalente et abordable
« Dernier message par Brunotoutsimple le mai 16, 2024, 09:19:45 pm »Bonjour.
Je viens de recevoir un ESP32 pour construire « La Box »
Pressé d’explorer le code pour la rendre compatible RailCom.
La modification est très simple, ajout de deux delay au bon endroit.
Dans le fichier DCCRMT.cpp, chercher :
void IRAM_ATTR interrupt(rmt_channel_t channel, void *t) {
La modifier comme ci-dessous.Code: [Sélectionner]void IRAM_ATTR interrupt(rmt_channel_t channel, void *t) {
et dans le setup(), mettre la pin D25 en sortie :
delayMicroseconds(22);
digitalWrite(25,1);
delayMicroseconds(412); // ___________---___________
digitalWrite(25,0);
RMTChannel *tt = channelHandle[channel];
if (tt) tt->RMTinterrupt();
if (channel == 0)
DCCTimer::updateMinimumFreeMemoryISR(0);
}
pinMode(25, OUTPUT);
L’introduction du CutOut dans la trame DCC se fait de manière matérielle avec un circuit TTL logique 7400 (4 portes Nand) , voir les photos en pièces jointes.
De cette façon le signal DCC original n’est pas altéré, que du contraire, il est tamponné.
Placer des Delay dans une interruption, n’est pas très élégant, il est possible de les remplacer par des Timers.
Bien à vous.
Bonsoir
Super Lebelge2!
Etant novice, Vous dites que c'est pas très élégant de mettre des delays pour des interruptions et c'est ce que j'avais lu pour les interruptions pour Arduino. Est-ce que vous serait possible de modifier le programme afin d'introduire les Timers que vous le suggérez.
Vous dites d'ajouter la ligne suivante dans le setup(), c'est où? SVP
Code: [Sélectionner]
dans le setup(), mettre la pin D25 en sortie :
pinMode(25, OUTPUT);