Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of AS5600 by
LTC2944.cpp
00001 // LTC2944 V1.0 00002 // 07/03/2017 GR : 00003 #include "LTC2944.h" 00004 //Serial pc(USBTX, USBRX); // I/O terminal PC 00005 00006 00007 00008 LTC2944::LTC2944(PinName sda, PinName scl) : i2c(sda,scl),pc(USBTX, USBRX) 00009 { 00010 address=0xC8; // adresse I2C 00011 //i2c.frequency(400000); 00012 } 00013 void LTC2944::setRsense(float r) 00014 { 00015 rsense=r; 00016 } 00017 // 00018 void LTC2944::setMode(unsigned char m) 00019 { 00020 dataw[0]=0x01; // registre B control 00021 i2c.write(address,dataw,1,1); // positionnement de l'adresse 00022 i2c.read(address,datar,1); // lecture du registre 00023 pc.printf("valm1 %x \n",datar[0]); 00024 dataw[1]=(datar[0]&~0xC0)|(m<<6); 00025 i2c.write(address,dataw,2); // ecriture 00026 i2c.write(address,dataw,1,1); // positionnement de l'adresse 00027 i2c.read(address,datar,1); // lecture du registre 00028 pc.printf("valm2 %x \n",datar[0]); 00029 } 00030 // 00031 void LTC2944::setPrescaler(unsigned char p) 00032 { 00033 dataw[0]=0x01; // registre B control 00034 i2c.write(address,dataw,1,1); // positionnement de l'adresse 00035 i2c.read(address,datar,1); // lecture du registre 00036 pc.printf("valp1 %x \n",datar[0]); 00037 dataw[1]=(datar[0]&~0x38)|(p<<3); 00038 i2c.write(address,dataw,2); // ecriture 00039 i2c.write(address,dataw,1,1); // positionnement de l'adresse 00040 i2c.read(address,datar,1); // lecture du registre 00041 pc.printf("valp2 %x \n",datar[0]); 00042 } 00043 // 00044 void LTC2944::setImin(float imin) 00045 { 00046 dataw[0]=0x12; // registre B control 00047 i2c.write(address,dataw,1,1); // positionnement de l'adresse 00048 i2c.read(address,datar,2); // lecture du registre 00049 pc.printf("valImin1 %x %x \n",datar[0],datar[1]); 00050 short val=(short)((imin*rsense*32767/64)+32767); 00051 dataw[1]=(char)(val>>8); 00052 dataw[2]=(char)(val&0x00FF); 00053 i2c.write(address,dataw,3); // ecriture 00054 i2c.write(address,dataw,1,1); // positionnement de l'adresse 00055 i2c.read(address,datar,2); // lecture du registre 00056 pc.printf("valmin2 %x %x \n",datar[0],datar[1]); 00057 } 00058 00059 void LTC2944::setImax(float imin) 00060 { 00061 dataw[0]=0x10; // registre B control 00062 i2c.write(address,dataw,1,1); // positionnement de l'adresse 00063 i2c.read(address,datar,2); // lecture du registre 00064 pc.printf("valImax1 %x %x \n",datar[0],datar[1]); 00065 short val=(short)((imin*rsense*32767/64)+32767); 00066 dataw[1]=(char)(val>>8); 00067 dataw[2]=(char)(val&0x00FF); 00068 i2c.write(address,dataw,3); // ecriture 00069 i2c.write(address,dataw,1,1); // positionnement de l'adresse 00070 i2c.read(address,datar,2); // lecture du registre 00071 pc.printf("valmax2 %x %x \n",datar[0],datar[1]); 00072 } 00073 // 00074 float LTC2944::getVoltage(void) 00075 { 00076 dataw[0]=8; // adresse de la tension 00077 i2c.write(address,dataw,1,1); // positionnement de l'adresse 00078 i2c.read(address,datar,2); // lecture du registre de deux octets 00079 return((((unsigned short)(datar[0])<<8)+datar[1])*70.8/0xFFFF); 00080 } 00081 00082 float LTC2944::getCurrent(void) 00083 { 00084 dataw[0]=0xE; // adresse de la tension 00085 i2c.write(address,dataw,1,1); // positionnement de l'adresse 00086 i2c.read(address,datar,2); // lecture du registre de deux octets 00087 unsigned short value=((unsigned short)(datar[0])<<8)|(unsigned short)datar[1]; 00088 return(((float)(value)-32767.0)*64./rsense/32767.0); 00089 } 00090 00091 unsigned short LTC2944::getAccumulatedCharge(void) 00092 { 00093 dataw[0]=0x2; // adresse de la tension 00094 i2c.write(address,dataw,1,1); // positionnement de l'adresse 00095 i2c.read(address,datar,2); // lecture du registre de deux octets 00096 return(((unsigned short)(datar[0])<<8)|(unsigned short)datar[1]); 00097 00098 } 00099 unsigned char LTC2944::getStatus(void) 00100 { 00101 dataw[0]=0x0; // adresse status 00102 i2c.write(address,dataw,1,1); // positionnement de l'adresse 00103 i2c.read(address,datar,1); // lecture du registre de deux octets 00104 return(datar[0]); 00105 00106 } 00107 unsigned char LTC2944::alertResponse(void) 00108 { 00109 i2c.read(0x18,datar,1); // lecture du registre de deux octets 00110 00111 00112 return( datar[0]); 00113 }
Generated on Sat Jul 16 2022 19:25:09 by
1.7.2
