打印

Atmega128 PCF8563时钟芯片 检测不到ACK信号

[复制链接]
1869|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
#define     SDA           PORTA.1
#define     SCL           PORTA.0
#define     RAMSDA_1      PORTA|=0X02                 /*PA1*/
#define     RAMSDA_0      PORTA&=~0X02
#define     RAMSCL_1      PORTA|=0X01                /*PA0*/
#define     RAMSCL_0      PORTA&=~0X01
#define     RAMSDA_OUT    DDRA|=0X02
#define     RAMSDA_IN     DDRA&=~0X02            
#define     RAMSDA_READ   PINA&0X02   

void IIC_Start(void)
{
    RAMSDA_1;
   // delay_us(200);
    RAMSCL_1;
    delay_us(200);
    RAMSDA_0;
    delay_us(200);
    RAMSCL_0;
    delay_us(200);
}     

void IIC_Stop(void)
{
        RAMSCL_0;
        // delay_us(200);
        RAMSDA_0;
        delay_us(200);
        RAMSCL_1;
        delay_us(200);
        RAMSDA_1;
        delay_us(200);
}     

void Wait_ACK()
{  
      uchar errtime=20;
      RAMSDA_OUT;   
      RAMSDA_1;
      delay_us(200);
      RAMSDA_IN;
      RAMSCL_1;
      delay_us(200);
      
      while((PINA&0X02)==0X02)  
      {
        errtime--;
        if(!errtime)
        {
         Usart_PutString("System Wrong!!!");
         IIC_Stop();        
        }
      }
      RAMSCL_0;      
      delay_us(200);   
      RAMSDA_OUT;
}        


void IIC_Write_Byte(uchar wdata)
{
       uchar i;
       for(i=0;i<8;i++)     
       {
       if((wdata&0x80)==0x80)  
         {
          RAMSDA_1;
         }
       else  RAMSDA_0;
       wdata<<1;
      
       RAMSCL_1;
       delay_us(200);
       RAMSCL_0;  
       }
      
    Wait_ACK();
}

void main(void)
{
    Port_init();                    /*端口初始化*/
    IIC_init();                     /*IIC通讯初始化*/
    IIC_Write_Byte(write_ADD);
}


今天写PCF8563时钟芯片的程序,刚开始就单纯写一个字节,发现把引脚拉高后,芯片不会把SDA脚拉低,各位大侠有时间的话帮我看看程序吧,谢谢!

相关帖子

沙发
NE5532| | 2012-8-6 20:04 | 只看该作者
这个函数你用到哪里去了?
void IIC_Start(void)

使用特权

评论回复
板凳
myron520|  楼主 | 2012-8-7 10:54 | 只看该作者
不好意思,这个我复制的时候漏掉了,这个函数没调用的话编译时会警告的!下面这个是我仿真的波形[code][/code]

使用特权

评论回复
地板
myron520|  楼主 | 2012-8-7 10:59 | 只看该作者
这个是仿真的波形,很明显拉低了,可是我实际电路上调试就一直都是高电平。

使用特权

评论回复
5
myron520|  楼主 | 2012-8-7 11:48 | 只看该作者
发现问题了,是自己太粗心了,自己写程序的时候对着电路图SDA和SCL端口反了,而仿真的时候又是对着程序的端口仿真的,所以仿真好的。谢谢2楼仔细检查我的程序,结题咯!!

使用特权

评论回复
6
深圳路人乙| | 2012-8-8 11:46 | 只看该作者
嗯,发现问题了就好,这款料我们有原装正品有销售 QQ:1132553136

使用特权

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

本版积分规则

0

主题

21

帖子

1

粉丝