Developpeurs-de-Crealead-Agence
--- #### "Rapido" #### Debogage à l'oscilloscope ---
5 Mars 2020
Jérémie FRANÇOIS / jfrancois@tecrd.com
#### Contexte Transmission radio à 2.09 euros !
* `Emetteur`: 1 (sinon 0, pas d'émission) * `Récepteur`: binaire + "signal brut"
H3VA + H3V4F et 2 Digistumps
### Problème * Logiciel simple et propre, cablage OK * Données bizarrement corrompues : * Toujours au début du message * Aléatoires ensuite * `Sent: 01101001001011110010` * `Recv: 10111101001011011010` * `Err.: !!-!-!--------!-!---`
### Signal reçu Niveau de signal au repos (sans émission)
C'est le signal radio qui sert à reconstruire les 0 et 1
### Signal reçu Mordu par l'`AGC` : _Automatic Gain Control_
Y a-t-il du signal ? Comme nous, il monte le volume pour le savoir !
### Préambule Aidons l'AGC : on transmet des `010101...`
Cela permet de déterminer le niveau physique du "1" (calibration)
### Préambule Mais où commencent mes données ?
Pas pratique : le préambule commence dans le bruit de fond !
### Start symbol Calage du début des données utiles
Suffisament de `01...` puis un code différent de `0xAA` et `0x55` ;-)
### Ça ne suffit pas :( Les signaux constants se font corrompre !
Une longue série de `1...`
et le signal "retombe" à `0` !
### Ça ne suffit pas :( L'`AGC` a frappé de nouveau
Il recalibre automatiquement le gain `et` l'offset !
Solution
### La faute au binaire ! * ne pas envoyer des `0` ou des `1`, mais * les encoder par des transitions `0⇒1` ou `1⇒0` Ex. l'`encodage Manchester`
Le signal change tous les 2T au maximum, idéal pour que l'AGC travaille bien !
Apparté
#### Fréquence d'horloge? * Soit fixé : BAUD rate ... et bonnes horloges ! * Ou bien dérivé du préambule, * ou du Manchester (tjs. 1 ou 2 cycles)
### Conclusion (1/2) * Le bug est obtenu au niveau logiciel * Mais impossible à comprendre au niveau logiciel * C'est la `couche physique` OSI, le monde réel : * outils de débogage électroniques * et RTFM encore plus pour du matériel
### Autres cas vicieux (2/2) Mais pas si rares... * cables et rallonges USB (résistance) * cables résaux RJ45 non blindés (débit) * reboots intempestifs (Raspberry, wifi...) * terminateur RS485 ...
Ne pas perdre de vue la réalité, ça aide !