Séquence DCC

Auteur  
# 24/07/2010 à 21:38 Bernard
D'abord, félécitation pour vos réalisations !
J'ai réalisé une centrale DCC en C++ sur un PC et je pilote un booster (fabrication maison : 1 pont en H) par le port //.
Ma console pilote 8 locomotives et la séquence DCC et la suivante :
Trame commande loco1, loco2, ... puis trame fonction loco1, loco2, ... et on recommence.
Cela fonctionne très bien.
Par contre je voudrais programmer les CV de la même manière, mais je n'y vois pas très clair car la norme est confuse.
Qu'avez-vous adopté dans votre console, aussi bien pour le pilotage que pour la programmation ?
Je me suis plongé dans les sources assembleur mais j'avoue que l'assembleur c'est très très loin !
Merci d'avance
# 26/07/2010 à 19:54 ulysse
Bonsoir,

Tu trouveras toutes les sequences decrites dans les annexes de la documentation. Pour la programmation, la norme n'a rien fait de simple avec les 4 methodes de programmation. Pour ma part, j'utilise la methode avec les pages qui fonctionne sur tous les decodeurs. Bien entendu tous les decodeurs sur la voie a cet instant seront programmes. Dans le code assembleur, le pilotage DCCn'est pas evident a comprendre. Par contre comme il fonctionnait mal pour la programmation, j'ai fait la programmation a part sans interruption (vers la fin du code). C'est bcp plus facile a comprendre. N'hesites pas si tu as des questions.

Ton projet m'intrigue, tu arrives a generer un signal DCC a la micro seconde pres avec le port //

A bientot,

Ulysse.
# 27/07/2010 à 11:43 Bernard
Merci d'avoir répondu rapidement.
J'ai survolé la doc (fichier free_DCC_2010) mais je n'ai pas trouvé la séquence de trames envoyée,
mais je vais continuer mes recherches.
Pour ma part, j'ai programmé un timer à 75 us (pour 4 locomotives) et j'envoie alors la séquence suivante :
1 trame de commande loco1, trame de cde loco2, ...puis trame de fonctions loco1, loco2,...
Si une loco n'est pas présente la trame correspondante est remplacée par une trame vide.
Pour ce qui est de la programmation en C++ des trames, j'ai préparé un fichier WORD que je peut vous envoyer par email (voir mon adresse).

A bientôt

Bernard
# 27/07/2010 à 17:26 ulysse.
Bonjour Bernard,

Tu peux trouver quelques explication en annexe de la doc free-dcc. Par exemple pour fdcc2008 "la trame de programmation" page 68.

Pour le code du pic, toujours dans le cas de free dcc 2008, jettes un coup d'oeil a partir du label prog_dcc_wo_it_adr.

En envoyant la combinaison de trames IDLE, RESET, PAGE, PROG du code, ca marche pour tous les decodeurs que j'ai teste.

call TXIDLE
call TXIDLE
call TXIDLE
call TXIDLE
call TXIDLE
call TXIDLE
call TXIDLE
call TXIDLE
call TXIDLE
call TXIDLE
call TXIDLE
call TXIDLE
call TXIDLE
call TXIDLE
call TXIDLE
call TXIDLE
call TXIDLE
call TXIDLE
call TXIDLE
call TXIDLE
call TXIDLE
call TXIDLE

call TXRESET
call TXRESET
call TXRESET

call TXPAGEPRESET1
call TXPAGEPRESET1
call TXPAGEPRESET1
call TXPAGEPRESET1
call TXPAGEPRESET1
call TXPAGEPRESET1

call TXRESET
call TXRESET
call TXRESET
call TXRESET
call TXRESET
call TXRESET
call TXRESET
call TXRESET
call TXRESET
call TXRESET

call TXPROGADR10
call TXPROGADR10
call TXPROGADR10
call TXPROGADR10
call TXPROGADR10
call TXPROGADR10

call TXRESET
call TXRESET
call TXRESET
call TXRESET
call TXRESET
call TXRESET
call TXRESET
call TXRESET
call TXRESET
call TXRESET

N'hesites pas si tu as des questions.

Super, si tu arrive a generer directement le signal DCC a partir du PC, plus besoin d'electronique. J'aimerai bien voir ton code.

A bientot,

Ulysse.
# 27/07/2010 à 20:03 Bernard
OK, je n'étais pas allé jusqu'au bout.
Pour optimiser ma console pourrais tu me dire ce que tu fais pour le pilotage ? Selon quelle période envoie-tu une séquence (moi c'est 75 ms et non pas us) ?
Est-il nécessaire d'envoyer également systématiquement les trames de fonction ?

A bientôt

Bernard
# 29/07/2010 à 18:30 ulysse
Salut Bernard,

Pour ma part, j'envoie 4 fois par secondes un ordre de vitesse et de fonction aux 16 locomotives. (Avec des trames idles pour les canaux non utilises).
vit1 vit2 ... vit16 fct1 fct2 ... fct16 vit1 ...

Mais tu peux changer cela. Tu peux envoyer les trames de fonctions quand tu veux.

Essaye quand meme d'envoyer les infos regulierement, au moins si le decodeur perd l'alim (pb de captage), il recevra rapidement les bonnes donnees lorsqu'il recuperera l'alim.

A bientot,

Ulysse.
# 30/07/2010 à 13:35 Bernard
Pourquoi utilise tu la méthode par page pour la programmation au lieu de la méthode à adressage direct qui me semble plus simple , est-ce parce qu'il faut envoyer 4 octets dans la trame au lieu de trois ?

A bientôt

Bernard
# 30/07/2010 à 14:12 ulysse
Bonjour Bernard,

La methode a adressage directe decrite dans la premiere norme semble ne pas marcher sur tous les decodeurs (du moins sur les miens).

C'est vrai que c'est un peu embettant qu'il y ai autant de methode de programmation.

A bientot,

Ulysse.
# 14/10/2010 à 13:15 Daniel (site web)
Bonjour Ulysse et Bernard

J'ai lu avec intérêt vos messages concernant la génération des trames DCC. Pour ma part, j'ai réussi à en venir à bout pour la commande des locs, ainsi que pour l'écriture des CV (en mode direct).
Si, en mode écriture, je vois bien à l'oscillo le pulse (ACK) du décodeur, là où ça coince, c'est qu'en mode lecture, rien et cela sur plusieurs types de décodeurs.
J'utilise la "Configuration Variable Access Instruction - Long Form" c'est à dire les messages 1110CCAA 0 AAAAAAAA 0 DDDDDDDD et plus précisément du mode manipulation bit (RP 9.2.1) afin de pouvoir lire, bit par bit, un CV.

Ma question : avez vous déja utilisé ce mode ? Si oui, pouvez vous m'envoyer un exemple de programme ou de trame DCC pour voir où je me plante.

Merci beaucoup par avance

Daniel


# 14/10/2010 à 13:34 Bernard
Non, moi j'utilise le mode à adressage direct, et comme je n'ai pas d'oscillo, je ne m'occupe pas des trames émises par le décodeur.
En quoi programmes-tu tes trames ?
Moi je programme en C++ et je commande un pont en H à travers le port // d'un PC.

A bientôt
Bernard
# 14/10/2010 à 14:31 RovDan (site web)
Mes trames sont élaborées en Visual Basic et mises en forme par le PicBasic de ma carte DCC. Cela ne pose aucun problème.

L'écriture des Cv se fait par adressage direct et ne pose aucun souci. Maintenant, je souhaiterais évoluer et pouvoir lire les valeurs des Cvs autrement qu'avec mon vieux PR1 de Digitrax. Donc, je vois bien ces pulses d'ACK lors de l'écriture. En revanche, rien quand je suis en lecture. Pourtant, je pense bien respecter le protocole. Quelque chose a dû m'échapper quelque part...

Merci encore

Daniel

http://www.roverch.net/modelisme/modelisme.html
Répondre à ce message
 
test

Créer un site gratuit avec e-monsite - Signaler un contenu illicite sur ce site

×