Encore quelques nouvelles :
J'ai désormais à ma disposition plusieurs décodeurs avec lesquels j'ai fait des tests, tous concluants :
- ESU LokPilot 4
- ZIMO MX630
- En plus du LaisDCC que j'avais déjà
A chaque fois : fonctionnement normal, lecture et programmation des CV sans problème.
J'ai également pu tester ces décodeurs sur une platine de test ZIMO (celle qui comporte un moteur et une série de leds + un HP) et les résultats sont identiques.
Autre test : utilisation d'un clone chinois à base de LGT8. Mes premiers tests avaient montré que la partie lecture de CV ne marchait pas, bien que la génération de signal DCC soit bonne. Ces tests avaient été réalisés avec le CPU tournant au fond, soit 32Mhz, puisque c'est un des points fort de ce composant.
Il s'avère que c'est aussi cette vitesse qui pose problème : à 16 ou 8 Mhz, tout le code fonctionne et s'adapte à la fréquence d'horloge.
En revanche, à 32 Mhz, la lecture des entrées analogiques retourne des valeurs incohérentes et la détection d'ACK ne fonctionne plus.
D'autres personnes ont aussi des problèmes avec cette partie du composant à cette vitesse, j'ai trouvé quelques sujets sur le NET, sans solution à ce jour.
Quand on y regarde de près, la spécification indique qu'on dispose de sampler à haute vitesse capables de tourner avec une horloge allant entre 300 Khz et 3Mhz. Cette horloge "ADC" est dérivée de l'horloge du CPU par un diviseur.
A 8 Mhz, l'horloge est divisée par 64 pour obtenir 125 Khz
A 16 Mhz, l'horloge est divisée par 128 et donne à nouveau 125 Khz
A 32 Mhz par contre, le diviseur ne peut pas augmenter car 128 est son maximum. Du coup l'horloge des convertisseurs analogiques passe de 125 à 250 Khz, et là plus moyen d'avoir une lecture fiable.
On est pourtant loin des 3Mhz indiqué dans la spec, et meme en deça des 300 Khz donnés comme minimum. Il semblerait que la conception du composant chinois ne suive pas la théorie de la datasheet...et je n'ai trouvé nulle-part d'explication et/ou de solution.
Donc sur ce type de composant, il faut garder le 16 Mhz pour que ça tourne correctement, ce qui fait perdre une partie des avantages par rapport à un Arduino normal. Reste d'autres points forts comme la flash de 48 Ko dont une partie tiens lieu d'EEPROM de taille paramétrable, ce qui permet de repousser à la fois le probleme de taille de l'EEPROM et de nombre limité d'écriture de celle-ci.