[PIC®/AVR®/dsPIC®产品]

求助!pic16f1829芯片调试IIC模块,SSP1IF没有置1,卡死在while(!SS1IF)

[复制链接]
569|17
手机看帖
扫描二维码
随时随地手机跟帖
Charesles|  楼主 | 2021-1-10 14:22 | 显示全部楼层 |阅读模式
求助!pic16f1829芯片调试IIC模块,SSP1IF没有置1, 卡死在while(!SS1IF)里面。
之前调试成功过,成功点亮oled屏幕使用。调试了2天突然卡死while(SS1IF)不动了,仿真测了下感觉是SS1IF没有置1,没有成功启动,不知道是什么原因,希望有大佬帮帮忙,不胜感激!
初始化程序如下
void IIC_Init(void)
{
    ANSELB = 0;//数字口
    TRISB4 = 1;//input
    TRISB6 = 1;

    GIE =1;//中断允许位
    PEIE = 1;//允许外设中断
    SSP1CON2bits.GCEN = 0;//禁止广播呼叫   
    SSP1CON1bits.SSPM = 0x08;//IIC主模式,时钟=Fosc/( 4*(SSPxADD+1) );
    SSP1ADD = 0X09; //4M/40=100k, SSPxADD=9;
    SSP1CON1bits.SSPEN =1;//使能串口;
    delay_us(2);   
}
void IIC_Start(void)
{
    SSP1CON2bits.SEN = 1;//启动条件使能
   // while(SSP1CON2bits.SEN == 1);
    while(!SSP1IF);//等待启动结束,如果没启动,反复重启动
    SSP1IF = 0;
}
void IIC_Stop(void)
{
    SSP1CON2bits.PEN = 1;//停止条件使能
//   while(SSP1CON2bits.PEN );//硬件清0;
    while(!SSP1IF);
    SSP1IF = 0;
}
//The master ACK 0 or 1
void IIC_ACK(unsigned char x)
{
    SSP1CON2bits.ACKDT = (x & 0X01);//ACK 0 or 1, 0 is active
    SSP1CON2bits.ACKEN = 1;//在SDA和SCL引脚上启动应答顺序,并发送ACKDT数据位,硬件自动清0;
    delay_us(10);
    while(!SSP1IF);
    SSP1IF = 0;
}
void IIC_SendByte(unsigned char u8_data)
{
    unsigned int i;
    SSP1BUF = u8_data;  
    delay_us(10);
    while(!SSP1IF);

    SSP1IF = 0;   
}

使用特权

评论回复
wahahaheihei| | 2021-1-11 22:33 | 显示全部楼层
是不是没配置好

使用特权

评论回复
评论
Charesles 2021-1-14 20:19 回复TA
一开始没问题,后来突然出问题了 
wahahaheihei| | 2021-1-11 22:34 | 显示全部楼层
MCC配置试试看。
一直没有

使用特权

评论回复
小灵通2018| | 2021-1-12 13:19 | 显示全部楼层
这个型号的官方没提供演示例子吗

使用特权

评论回复
shangwangmj| | 2021-1-13 20:16 | 显示全部楼层
我也遇到过MSSP无法启动的情况,后来认真看手册在装入SSPBUF前加几个NOP(若干us)就好了,再后面把晶振调低后连NOP也省了。仅供参考。
2015.jpg

使用特权

评论回复
评论
Charesles 2021-1-14 20:18 回复TA
谢谢,我试下看看 
youyi1997| | 2021-1-14 02:12 | 显示全部楼层
我也是刚发现这个问题,100K速率,会卡死,定时器里面设置超时后置1,退出循环;

使用特权

评论回复
评论
Charesles 2021-1-14 20:17 回复TA
好的,我试试,感谢 
Charesles|  楼主 | 2021-1-15 14:26 | 显示全部楼层
小灵通2018 发表于 2021-1-12 13:19
这个型号的官方没提供演示例子吗

没找到示例,网上看的别人发的例程

使用特权

评论回复
Charesles|  楼主 | 2021-1-15 14:34 | 显示全部楼层
wahahaheihei 发表于 2021-1-11 22:34
MCC配置试试看。
一直没有

MCC是什么呢

使用特权

评论回复
Charesles|  楼主 | 2021-1-15 14:40 | 显示全部楼层
突然又可以了,坏的莫名其妙,又莫名好了,太不稳定了...

使用特权

评论回复
嵌入小菜菜| | 2021-1-15 17:02 | 显示全部楼层
将配置发一下,我看看。

使用特权

评论回复
里面有晴雨| | 2021-1-15 17:58 | 显示全部楼层
是否可以将配置都发出来,看看。在

使用特权

评论回复
Charesles|  楼主 | 2021-1-18 12:48 | 显示全部楼层
嵌入小菜菜 发表于 2021-1-15 17:02
将配置发一下,我看看。

引脚的配置我一开始发的那个就是,请问还需要哪些配置信息呢

使用特权

评论回复
Charesles|  楼主 | 2021-1-18 12:49 | 显示全部楼层
里面有晴雨 发表于 2021-1-15 17:58
是否可以将配置都发出来,看看。在

请问还需要哪些配置信息呢,上面是我初始化引脚的配置

使用特权

评论回复
youyi1997| | 2021-1-19 16:08 | 显示全部楼层
youyi1997 发表于 2021-1-14 02:12
我也是刚发现这个问题,100K速率,会卡死,定时器里面设置超时后置1,退出循环; ...

屏幕截图 2021-01-19 160419.jpg mcc生成的代码卡在这个while1里面 192846006936a515c1.png 超时增加判断,清掉后会退出循环

使用特权

评论回复
评分
参与人数 1威望 +2 收起 理由
Charesles + 2 很给力!
251566208| | 2021-1-22 10:43 | 显示全部楼层
可以加我QQ251566208,找专人给你解答

使用特权

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

本版积分规则

3

主题

26

帖子

1

粉丝