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.
Dependents: Control_Yokutan_CAN_ver1 Control_Yokutan_CAN_ver2 Control_Yokutan_CAN_ver3 Control_Yokutan_CAN_ver4
Fork of INA226_ver1 by
Revision 0:3a05c5755625, committed 2012-11-24
- Comitter:
- tosihisa
- Date:
- Sat Nov 24 18:15:16 2012 +0000
- Child:
- 1:e0ebc6af5e04
- Commit message:
- 1st
Changed in this revision
| INA226.cpp | Show annotated file Show diff for this revision Revisions of this file |
| INA226.hpp | Show annotated file Show diff for this revision Revisions of this file |
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/INA226.cpp Sat Nov 24 18:15:16 2012 +0000
@@ -0,0 +1,80 @@
+/*
+ * Copyright (c) 2011 Toshihisa T
+ * Released under the MIT License: http://mbed.org/license/mit
+ */
+
+#include "mbed.h"
+#include "INA226.hpp"
+
+INA226::INA226(I2C &i2c_,int addr_,int freq_) : i2c(i2c_),i2c_addr(addr_),freq(freq_)
+{
+ i2c.frequency(freq);
+}
+
+int INA226::isExist(void)
+{
+ char p_addr = 0; //Select Configuration Register.
+ i2c.frequency(freq);
+ if(i2c.write(i2c_addr | 0,&p_addr,sizeof(p_addr)) == 0){
+ return 1;
+ }
+ return 0;
+}
+
+int INA226::rawWrite(char pointer_addr,unsigned short val_)
+{
+ char val[3];
+ val[0] = pointer_addr;
+ val[1] = static_cast<char>((val_ >> 8) & 0x00ff);
+ val[2] = static_cast<char>(val_ & 0x00ff);
+ i2c.frequency(freq);
+ if(i2c.write(i2c_addr | 0,val,sizeof(val)) == 0){
+ return 0;
+ }
+ return 1;
+}
+
+int INA226::rawRead(char pointer_addr,unsigned short *val_)
+{
+ char p_addr = pointer_addr;
+ char val[2];
+ i2c.frequency(freq);
+ if(i2c.write(i2c_addr | 0,&p_addr,sizeof(p_addr)) == 0){
+ if(i2c.read(i2c_addr | 0x01,val,sizeof(val)) == 0){
+ *val_ = static_cast<unsigned short>(val[0]);
+ *val_ = (*val_ << 8) | static_cast<unsigned short>(val[1]);
+ return 0;
+ }
+ }
+ return 1;
+}
+
+int INA226::getVoltage(double *V_)
+{
+ unsigned short val;
+ if(rawRead(0x02,&val) == 0){
+ *V_ = static_cast<double>(val) * 1.25;
+ return 0;
+ }
+ return 1;
+}
+
+int INA226::getCurrent(double *I_)
+{
+ unsigned short val;
+ if(rawRead(0x04,&val) == 0){
+ char *s_p = reinterpret_cast<char *>(&val);
+ short d_s;
+ char *d_p = reinterpret_cast<char *>(&d_s);
+ *(d_p + 0) = *(s_p + 0);
+ *(d_p + 1) = *(s_p + 1);
+ *I_ = static_cast<double>(d_s) /* * 1.25 */;
+ return 0;
+ }
+ return 1;
+}
+
+int INA226::setCurrentCalibration(unsigned short val)
+{
+ return rawWrite(0x05,val);
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/INA226.hpp Sat Nov 24 18:15:16 2012 +0000
@@ -0,0 +1,23 @@
+/*
+ * Copyright (c) 2011 Toshihisa T
+ * Released under the MIT License: http://mbed.org/license/mit
+ */
+#ifndef __INA226_INCLUDE // {
+#define __INA226_INCLUDE
+#include "mbed.h"
+class INA226 {
+ public:
+ INA226(I2C &i2c_,int addr_ = 0x80,int freq_ = 100000);
+ int isExist(void);
+ int rawRead(char pointer_addr,unsigned short *val_);
+ int rawWrite(char pointer_addr,unsigned short val_);
+ int getVoltage(double *V_);
+ int getCurrent(double *I_);
+ int setCurrentCalibration(unsigned short val = 0x0A00);
+
+ private:
+ I2C &i2c;
+ int i2c_addr;
+ int freq;
+};
+#endif // }
