专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
TI
INA226
2019-07-15 16:27
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
TI MCU
9481
7
988
请问各位大神有没调试过电流监测芯片INA226的,小弟最近在调试这块芯片,但是出不来数据,想请教各位大神。代码如下,
#include<reg51.h>
#include<intrins.h>
#include<absacc.h>
#define uchar unsigned char
#define uint unsigned int
#define read_addr 0x81 //写配置寄存器时对应的器件地址
#define write_addr 0x80 //读转换结果时对应的器件地址
uchar H_AD; // H_AD用于存储高八位A/D转换结果
uchar L_AD; // L_AD用于存储低八位A/D转换结果
sbit SDA = P1^0;
sbit SCL = P1^1;
void delay_ms(uint n)
{
uchar i;
while(n--)
{
for(i=0;i<100;i++);
}
}
void Start(void)
{
SDA = 1;
SCL = 1;
_nop_();_nop_();_nop_();_nop_();
SDA = 0;
_nop_();_nop_();_nop_();_nop_();
}
void Stop(void)
{
SDA = 0;
SCL = 1;
_nop_();_nop_();_nop_();_nop_();
SDA = 1;
_nop_();_nop_();_nop_();_nop_();
}
void slave_ACK(void)
{
// SDA = 0;
// _nop_();_nop_();_nop_();_nop_();
// SCL = 1;
// _nop_();_nop_();_nop_();_nop_();
// SCL = 0;
uchar i=0;
SCL=1;
_nop_();_nop_();_nop_();_nop_();
while((SDA==1)&&(i<255))
i++;
SCL=0;
_nop_();_nop_();_nop_();_nop_();
}
void check_ACK(void)
{
SDA=1;
SCL=1;
F0=0;
if(SDA==1)
F0=1;
SCL=0;
}
void ATWriteByte(uchar dat)
{
uchar i;
for(i=0;i<8;i++)
{
SCL = 0;
_nop_();_nop_();_nop_();_nop_();
SDA = ((dat<<i)&0x80)?1:0;
SCL = 1;
}
SCL = 0;
}
uchar ATReadByte(void)
{
uchar i,temp = 0;
SDA = 1;
for(i=0;i<8;i++)
{
SCL = 0;
_nop_();_nop_();_nop_();_nop_();
SCL = 1;
_nop_();_nop_();_nop_();_nop_();
temp <<= 1;
if(SDA==1)
{
temp |= 0x01;
}
}
return temp;
}
void setting_INA226(void)
{
Start();
ATWriteByte(write_addr);
slave_ACK();
ATWriteByte(0x00);
slave_ACK();
ATWriteByte(0x42);
slave_ACK();
ATWriteByte(0x93);
slave_ACK();
ATWriteByte(write_addr);
slave_ACK();
ATWriteByte(0x01);
slave_ACK();
Stop();
}
void READ_INA226(void)
{
Start();
ATWriteByte(read_addr);
slave_ACK();
H_AD=ATReadByte();
check_ACK();
L_AD=ATReadByte();
Stop();
ES=0;
SBUF=H_AD;
while(TI==0);
TI=0;
SBUF=L_AD;
while(TI==0);
TI=0;
ES=1;
}
void init()
{
TMOD=0x21;
TH1=0xfd;
TL1=0xfd;
TR1=1;
SM0=0;
SM1=1;
REN=1;
PS=1;
EA=1;
ES=1;
}
void main()
{
init();
setting_INA226();
READ_INA226();
}
复制代码
请大神帮忙看看程序把。我的目的是想要测经过一个25毫欧姆的电阻的电流,从想从数据输出寄存器中读出分流电压。
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
7条回答
外方爱
2019-07-16 08:44
void check_ACK(void)
这个函数里是几个意思 我看不懂
加载中...
查看其它7个回答
一周热门
更多
>
相关问题
CPLD的方波输出
4 个回答
11个版本Quartus II 软件下载,安装包网盘合集,附教程,47G!
20 个回答
请大家帮忙到21IC发展大家谈支持我申请新版面
20 个回答
【通知】21ic中国电子网服务条款 (所有人员必读)
1 个回答
满载而归乙亥年,大展鸿途庚子年---集签赢好礼
20 个回答
相关文章
×
关闭
采纳回答
向帮助了您的知道网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
TI
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
×
付费偷看金额在0.1-10元之间
确定
×
关闭
您已邀请
0
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
这个函数里是几个意思 我看不懂
一周热门 更多>