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

PIC33F64MC506芯片,IC模块的配置

[复制链接]
874|8
手机看帖
扫描二维码
随时随地手机跟帖
galjewf|  楼主 | 2020-7-8 09:56 | 显示全部楼层 |阅读模式
靠自己查找手册写的初始化函数,我只知道需要TIMER2的初始化。有什么地方写错了吗
int Input_caputre(void)
{
        IC1CONbits.ICM = 0b00;
        IC1CONbits.ICTMR = 1;        //Select Timer2 as the IC1 Time base
        IC1CONbits.ICI = 0b01;                // Interrupt on every fourth capture event
        IC1CONbits.ICM = 0b011;                //Capture mode, every 4th rising edge
       
        IPC0bits.IC1IP = 3; // Setup IC1 interrupt priority level
        IFS0bits.IC1IF = 0; // Clear IC1 Interrupt Status Flag
        IEC0bits.IC1IE = 1; // Enable IC1 interrupt
       
        return 1;
}
int timer2_init()
{
    T2CONbits.TON = 0;              // 确保T2关闭,再进行初始化
        T2CONbits.TCKPS = 0;
        T2CONbits.T32 = 0;
    T2CONbits.TCS = 0;
        TMR2 = 0;
        PR2 = 0x0FF;

        IFS0bits.T2IF = 1;
        IEC0bits.T2IE = 1;
        IPC1bits.T2IP = 1;

        T2CONbits.TON = 1;
        return 1;
}
void __attribute__((__interrupt__,no_auto_psv))_IC1Interrupt(void)
{
        unsigned int t1,t2;
        t1=IC1BUF;
        t2=IC1BUF;
        IFS0bits.IC1IF=0;
        LATB=(PORTF ^ 0x01);
}

使用特权

评论回复
评论
zxq1131 2020-7-10 08:50 回复TA
@galjewf :应该没问题,就是捕捉四次中断 ,但是你又才读两次,可能造成输入捕捉溢出,溢出之后就不会产生中断了。 
galjewf 2020-7-9 15:59 回复TA
@zxq1131 :对,是应该仿真的,虽然我又开了一个关于仿真错误的帖子。也就是说我这个软件代码的配置是正确的咯? 
zxq1131 2020-7-9 13:04 回复TA
你可以软件仿真,看有没有进入中断。而且我看你的备注是每4次捕获中断一次,而且是4次上升沿捕获一次,也就是要16次才能进入中断啊 
galjewf|  楼主 | 2020-7-9 09:12 | 显示全部楼层
bellstudio 发表于 2020-7-8 20:52
你倒是描述下问题现象啊

抱歉,第一次发帖不懂规矩。这款芯片的IC1-IC4功能的引脚是RD8~RD11。程序原理是利用IC检测按键开关的上升沿电平,进入中断反转io口的输出。烧进芯片后io输出无变化。

使用特权

评论回复
galjewf|  楼主 | 2020-7-9 09:16 | 显示全部楼层
或者说各位能不能告诉在下,在哪可以找到这款芯片各种外设的官方例程呢。去官网逛了一圈没找到

使用特权

评论回复
淘猫汤姆| | 2020-7-9 18:43 | 显示全部楼层
手册  http://ww1.microchip.com/downloads/en/DeviceDoc/70198D.pdf


例子
https://www.microchip.com/doclisting/CodeExamplesByFunc.aspx


使用特权

评论回复
galjewf|  楼主 | 2020-7-10 10:37 | 显示全部楼层
感谢各位的耐心解答,在下已经通过楼上发的网址里找到了官方例程,成功使用IC/输入捕捉模块实现了功能。
下面贴出官方文档编号和在下的代码

官方代码编号CE058

int Input_caputre3(void)
{
        T3CON        = 0x8030;
       
        IC3CON = 0;
        IC3CONbits.ICTMR = 0;        //Select Timer3 as the IC3 Time base
        IC3CONbits.ICSIDL = 0;
        IC3CONbits.ICI = 0b0;                //每个捕捉事件中断一次
        IC3CONbits.ICM = 0b1;                //Capture mode, every edge (rising and falling)
       
        IPC9bits.IC3IP = 3; // Setup IC3 interrupt priority level
        IFS2bits.IC3IF = 0; // Clear IC3 Interrupt Status Flag
        IEC2bits.IC3IE = 1; // Enable IC3 interrupt
       
        return 1;
}
int Input_caputre1(void)
{
        T3CON        = 0x8030;                // 1:256 internal clock, start T3.
        IPC0bits.IC1IP  =  1;                         // Setup Input Capture 1 interrupt for desired priority
        // level (this example assigns level 1 priority)
        IFS0bits.IC1IF                 = 0;                 // Clear the IC1 interrupt status flag
        IEC0bits.IC1IE                 = 1;                 // Enable IC1 interrupts
        IC1CON                         = 0x0000;        // Turn off Input Capture 1 Module
        IC1CONbits.ICSIDL        = 0;                // Input capture module will continue to operate in CPU Idle mode
        IC1CONbits.ICTMR        = 0;                // TMR3 contents are captured on capture event
        IC1CONbits.ICI                = 0;                // Interrupt on every capture event
        IC1CONbits.ICM                = 1;                // Capture mode, every edge (rising and falling)

}
void __attribute__((__interrupt__,no_auto_psv))_IC1Interrupt(void)
{
        unsigned int t1;
        IFS0bits.IC1IF =  0;
        t1=IC1BUF;
        LATF=(PORTF ^ 0xff);
        //IC1flag = 1;
}
void __attribute__((__interrupt__,no_auto_psv))_IC3Interrupt(void)
{
        unsigned int t1;
        IFS2bits.IC3IF = 0;
        t1=IC3BUF;
        LATF=(PORTF ^ 0xff);
       
}

使用特权

评论回复
淘猫汤姆| | 2020-7-10 17:22 | 显示全部楼层
赞楼主 主动结贴,还发出了代码示例版主呢,来给穿个酷字

使用特权

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

本版积分规则

9

主题

41

帖子

0

粉丝