liufeiluster 发表于 2008-6-24 09:26:37

求助,帮忙解决下啊,谢了

我使用的是合众达的DEC-2812V1.0的板子,接温度传感器DS18B20

(1)
#define   DQ   GpioDataRegs.GPFDAT.bit.GPIOF0
/*   产生复位脉冲初始化DS18B20*/
void TxReset(void)
{
      GpioMuxRegs.GPFMUX.bit.SPISIMOA_GPIOF0=0;   //设置为通用I/O口
      GpioMuxRegs.GPFDIR.bit.GPIOF0=1;      //1:输出0:输入
      DQ=1;
      DELAY(40);
      DQ=0;                         //产生上升沿   
      DELAY(750);
      DQ=1;
}
当我设置GPIOF0为输入口(GpioMuxRegs.GPFDIR.bit.GPIOF0=0),为什么示波器还是会有输出了?

(2)
void RxWait(void)
{

      GpioMuxRegs.GPFDIR.bit.GPIOF0=1;      //1:输出    0:输入
      while(DQ);
      while(~DQ);          //检测到应答脉冲
      DELAY(500);
      GpioMuxRegs.GPFDIR.bit.GPIOF0=1;
      DQ=1;
}
示波器测试DQ端有高低电平跳变,可是程序到while(DQ)就不能运行下去了,
是不是DSP里面不能while(DQ)和while(~DQ)这样表示的?
大家帮忙看一下啊,谢谢!

CN.Cn 发表于 2008-6-25 09:09:19

(!) 找自己原因啦,这个功能没听谁说有问题过!

(2) DQ在RxWait()外部没变化的话,当然运行不下去!

liufeiluster 发表于 2008-6-25 09:22:01

先谢谢了,呵呵。
对于(2)
在示波器上能看到DQ端的高低跳变,即是说外部有变化的,可是运行不下去啊,程序没有问题??

CN.Cn 发表于 2008-6-25 09:33:37

DQ 是输出寄存器,不知是不是输入寄存器???
没用过2812,没看数据手册。印象中应该不是,有单独的输入寄存器。
也许DQ是个 只写的寄存器,读恒为0 或1。对于作为输出的IO 去读,还是自己去看数据手册说明吧!!


综上所叙,自己看数据手册!
页: [1]
查看完整版本: 求助,帮忙解决下啊,谢了