
La bonne configuration du PIC, et les timings des séquences, ont été vérifiés à l'aide de l'analyseur logique - échantillonnage à 20ns - et de l'insertion dans le code d'une instruction inversant l'état d'une sortie. Première erreur: j'ai oublié que le codage de l'activation du diviseur d'horloge de la CPU différait selon que l'on est en mode HS (High Speed) ou HSPLL (HighSpeed avec horloge dérivée du PLL intégré). Ce problème corrigé, il m'a fallu partir à la chasse à une erreur d'un cycle dans l'échantillonnage. La lecture du listing résultant de l'assemblage m'a permis de découvrir l'origine du problème. La taille du code non structuré conduit à encoder la plupart des branchements sur deux mots, consommant alors 2 cycles, et non un seul. Une fois le code revu, les premières trames reçues et décodées sans aucune erreur - 56µs et 112µs - s'affichent sur l'écran de l'analyseur logique.

Mon code gère deux signaux d'information que j'utilise pour déclencher l'analyseur: un signal devenant vrai lorsqu'un préambule complet est reçu et un signal devenant vrai quand une trame complète a été reçue, sans erreur. Cette approche s'avère être indispensable pour mettre rapidement au point un programme aussi pointu en terme de précision dans l'échantillonnage.
La suite: transmettre les trames - 7 ou 14 octets - sur la liaison série de test avant de s'attaquer à configurer et utiliser la sortie USB.
Aucun commentaire:
Enregistrer un commentaire