Petit rappel des différences de processeurs en programmation de C.

Je travaille depuis quelques semaines sur mon interface/télécommande pour mon enregistreur Revox B77. J’ai presque terminé mon interface WEB au niveau fonctionnalités (j’ai appris à utiliser HTML, JS, CSS, WEBSOCKETS, JSON dans tous les sens) la télécommande fonctionne presque mais j’aimerais ajouter des délais pour retarder ou avancer le freinage des bandes du B77. Je crée donc une page web supplémentaire avec les délais, j’utilise pour ceci la fonction HTML « input type=nombres ». Je veux lire un nombre entier (de -100 à  +100) à mémoriser dans l’EEPROM de mon ESP8266. Je déclare les variables pour le stockage intermédiaire en « int » et les premiers essais sont concluants, les nombres sont bien mémorisés (Serial.print… m’indique le bon fonctionnement).

 

<Interfaces après correction>

Surprise, après Reset du module ESP, les nombres restitués s’affichent juste pour les nombres positifs, mais faux pour les nombres négatifs ! J’ai l’impression que “C” utilise un « unsigned int » pour restituer les nombres alors que je les ai bien déclarés en « int ». L’effet est qu’à la place de m’afficher par exemple « -100 » il m’affiche « 65436 » Damned!
Après 4h de tests et une revue de chaque ligne de code, il est passé 2h du matin, quand je me dis que « int » n’est peut-être pas la bonne définition !!!! Processeur 32 bits => « int » correspond à « int32_t » et non pas « int16_t » ce qui expliquerait le comportement ! Je remplace les déclarations des variables en int16_t (-32767 à +32767) et tout rentre dans l’ordre ! je peux enfin aller me coucher ! Mon code est prêt pour un nouveau test pratique !!!
Super la programmation, mais pleine d’embûches !!!

 

Rolf Ziegler 7/2017
Présentation du projet au printemps 2018