test

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers ltc2309.cpp Source File

ltc2309.cpp

00001 #include "mbed.h"
00002 #include "ltc2309.h"
00003 
00004     volatile unsigned int IKPa0[8];
00005 
00006 
00007 I2C LTC2309(PB_9,PB_8);
00008 
00009 // rem S/D O/S S1 S0 UNI SLP  tableau de config pour les 8 entrées
00010 volatile char LTC2309config[] = {0b10001000,0b11001000,0b10011000,0b11011000,0b10101000,0b11101000,0b10111000,0b11111000};
00011 // calcul pression a partir de autozero
00012 float pression(unsigned int IKPa, unsigned int IKPa_0)
00013 {
00014     float IKPai = IKPa;       // AutoZéro
00015     float IKPa_0i = IKPa_0;   // Pression lue en temps réél 
00016     return (IKPai-IKPa_0i);   // AutoZéro - Pression lue en temps réél = Valeur en Pascal
00017     }
00018 
00019 // Pour recuperer la valeur de la première case LTC2309config[0];
00020 void LTC2309Init(void)
00021 {
00022     LTC2309.frequency(LTC2309Frequence);
00023 }
00024 void LTC2309Autozero(void)
00025 {
00026     // mesure a vide soufflerie arretee    
00027     IKPa0[0] = LTC2309read(CH0c);       // AutoZéro de l'entrée 0
00028     IKPa0[1] = LTC2309read(CH1c);       // AutoZéro de l'entrée 1
00029     IKPa0[2] = LTC2309read(CH2c);       // AutoZéro de l'entrée 2
00030     IKPa0[3] = LTC2309read(CH3c);       // AutoZéro de l'entrée 3
00031     IKPa0[4] = LTC2309read(CH4c);       // AutoZéro de l'entrée 4
00032     IKPa0[5] = LTC2309read(CH5c);       // AutoZéro de l'entrée 5
00033     IKPa0[6] = LTC2309read(CH6c);       // AutoZéro de l'entrée 6
00034     IKPa0[7] = LTC2309read(CH7c);       // AutoZéro de l'entrée 7
00035     }
00036 // entree 0 a 7....
00037 float LTC2309read(unsigned NumEntree)
00038 {
00039     LTC2309.start();
00040     LTC2309.write(LTC2309Adresse); // adresse + r/w = 0 en lecture
00041     LTC2309.write(LTC2309config[NumEntree]); // mot de config de l'entre
00042     LTC2309.stop();
00043     LTC2309.start();
00044     LTC2309.write((LTC2309Adresse+1)); // r/w a 1 pour lectur
00045     unsigned a = LTC2309.read(1) * 16 + LTC2309.read(1)/16; // decale a droite de 4 bit.
00046     LTC2309.stop();
00047     return pression(a,IKPa0[NumEntree]);
00048 }