基于SOPC的18B20温度测量
nios ii IDE下软件中,程序不能跳出18B20复位函数,还有那个程序能不能指导一下,这个东西没做过,对niosii 的编程也不熟悉。
有些人写DS18B20的初始化函数喜欢写成初始化成功才返回,初始化失败就一直在那循环
毕业设计的时候做过
没有啊,就是让DQ写1延时,写0一些列操作,等待18B20相应啊,有程序参考一下吗?最好是nios ii IDE下的,
你可以把程序贴出来看看
//*********18B20复位函数**********//
void ow_reset(void)
{
char presence=1;
while(presence)
{
IOWR_ALTERA_AVALON_PIO_DATA(DQ_BASE,0x01);
delay(7);
IOWR_ALTERA_AVALON_PIO_DATA(DQ_BASE,0x00);
delay(550); //550us
IOWR_ALTERA_AVALON_PIO_DATA(DQ_BASE,0x01);
delay(44); //44us
presence=IORD_ALTERA_AVALON_PIO_DATA(DQ_BASE); //presence=0,继续下一步
}
delay(110); //延时110us
IOWR_ALTERA_AVALON_PIO_DATA(DQ_BASE,0x01);
}
复位函数,不知道这么写对不对?
应该是时序问题,初始化成功presence=0之后才会跳出while循环
围观。。
围观。。
怎么改呢?指导指导
怎么改呢?指导指导
怎么改呢?指导指导
怎么改呢,指导指导,
我有纯verilog代码。要吗
围观 18B200不错,学习一下,很好
根据DS18B20的datasheet,里面有时序图
我有vhdl的程序,有没有用sopc做的,就像单片机一样,直接把单片机用sopc builder中建立的软核控制器替换掉,这样来测温度的,
恩恩,时序看过了,没问题,对三态io口的读写怎么操作呢?
alt_u8 init_18b20() //初始化18b20
{
alt_u8 n=0;
JP2_0->DIRECTION=1;JP2_0->DATA=0x01; //初始状态高电平
usleep(20);
JP2_0->DIRECTION=1;JP2_0->DATA=0x00; //拉低
usleep(600);\
JP2_0->DIRECTION=1;JP2_0->DATA=0x01; //释放总线
usleep(40);
JP2_0->DIRECTION=0;
n=JP2_0->DATA&0x01;
usleep(500);
JP2_0->DIRECTION=1;JP2_0->DATA=0x01;
return n;
}
===============================================================
小编应该是没有给三态双向IO定义方向,以上是我写的初始化程序,可以用,但是我现在卡在了读数据的地方,小编可以交流交流吗?