Bonjour,
Je travail sur le 16F877 (MPLAB) en c (HI-TECH) ; j'utilise PROTEUS pour effectuer des tests de concordance.
Je but actuellement sur un problème de conversion décimal -> volt. Je souhaite mesurer une tension d'amplitude max 16V.
J'ai paramétré un pont diviseur R1=10k,R2=22k donc Vcan=16V x 0.3125 = 5V.
Je souhaite afficher NN,N V exemple : 15,8V
Pour les entiers pas de problème mais se sont les décimales qui refusent de fonctionner.
Pour les entiés :
int tension=0;
tension = Data_CAN*16/1023; // Si Data_CAN=1022 : tension = 15,98... tronqué à 15
Pour les décimales, mon idée de départ était de déclarer un unsigned short long qui fait 24bits celon la doc de HI-TECH donc :
unsigned short long milli_tension=0;
milli_tension = Data_CAN*160/1023; // Si Data_CAN=1022 : tension = 159,84... tronqué à 9. (je le tronque lors de l'affichage sur mon lcd pour n'afficher que l'unité.)
Mais là, surprise : j'affiche un '0' à la place du '9' attendu... après mur réfléxion, je me dit que la librairie HI-TECH ne permet sûrement pas de pouvoir travailler avec les jeux d'instructions du pic sur une variable de 24bits.
Quelqu'un aurait une solution à m'apporter ? (de préférence peu gourmande en Program Space)
Cdt.
-----