Étape 3: Le code : la communication sérielle.
Comment la communication avec les échelles et la dataconversion se passe-t-il ?
Les échelles que j’utilise est un PCB KERN 6000-0. Il a un mode où il envoie en permanence revanche 18 octets contenant le poids par le port série. L’atmega8 met en mémoire tampon les 18 octets entrants. Le dernier octet transmis est toujours un saut de ligne (ascii 10). Dès que le numéro de série reçoit le saut de ligne (ascii 10), une interruption est déclenchée et le code passe à la routine d’interruption. Cette routine commence en désactivant les variables nécessaires à la dataconversion. Il commence à lire la série tampon. Il existe 18 octets dans chaque datatransfer, seulement 9 à 12 d’octets contiennent le poids réel. Ces octets sont stockés pour la conversion. Tous les autres octets sont déversés dans une variable temporaire pour vider la mémoire tampon.
Les octets stockées contiennent les 4 chiffres du poids sous forme de caractères ascii. Cela signifie qu’il faut les convertir pour les valeurs décimales correctes avant que nous pouvons faire tous les calculs avec eux. Heureusement cela peut faire très facilement en soustrayant 48 de valeurs entrantes comme chaque valeur ascii est supérieure à la valeur décimale du même caractère de 48.
Ensuite, la valeur du premier caractère est multipliée par 1000, la deuxième par 100 et le troisième par 10. Ces trois résultats sont ensuite additionnées et la quatrième valeur est ajoutée. Ce résultat final est un entier contenant le poids mesuré par l’échelle.
Une fois que ce poids est connu, il est comparé avec le poids désiré dans la boucle principale et les LEDs sont définies.