打印
[Atmel]

求助Atmega16+sht10 异常

[复制链接]
709|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sht10的data接M16的PA0,clk接M16的PA1,是按照附件中SHT10的典型应用电路连的线,下面的子程序是往sht10里写一个字节的数据,如果成功写入error应该为0,但是不知道为什么error总是为1.电路也反复检查过了,肯定没接错。求解,多谢。
SHT10_SHT11数字温湿度传感器-中文资料.pdf (473.48 KB)
#define DATA_1 PORTA|=0X01
#define DATA_0 PORTA&=0XFE
#define SCK_1 PORTA|=0X02
#define SCK_0 PORTA&=0XFD
#define DATA_SETINPUT DDRA&=0XFE;PORTA|=0X01
#define DATA_SETOUTPUT DDRA|=0X01
#define SCK_SETINPUT DDRA&=0XFD;PORTA|=0X02
#define SCK_SETOUTPUT DDRA|=0X02
#define DATA_IN (PINA&0X01)
#define noACK 0
#define ACK 1

char s_write_byte(unsigned char value)
{
unsigned char i;
char error;
DATA_SETOUTPUT;//DDRA|=0X01
SCK_SETOUTPUT;//DDRA|=0X02

SCK_0;
DATA_0;
for(i=0;i<8;i++)  //发送8位数据,丛机将在上升沿读取数据
{
  SCK_0;
  if(value&(0x80>>i))
   DATA_1;
  else
   DATA_0;
  delay_little();
  SCK_1;
  delay_little();
}
SCK_0;     //在接下来的上升沿读取从机发送的“已收到”信号。
DATA_SETINPUT;
delay_little();
SCK_1;
delay_little();
putchar0(0x01);
error = (DATA_IN?1:0);//在这里,error应为0,不知道为什么老是为1
putchar0(error);
putchar0(0x02);
delay_little();
SCK_0;

DATA_SETOUTPUT;
return error;
}

sht10时序图.jpg (211.78 KB )

sht10时序图.jpg

sht10的应用电路.jpg (55.84 KB )

sht10的应用电路.jpg

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

262

主题

290

帖子

2

粉丝