打印

CCP2却未成功

[复制链接]
1296|24
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
stly|  楼主 | 2021-10-9 21:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
PIC24FV16KM202 捕捉模块CCP1设置成功能输入捕捉中断,同样的设置CCP2却未成功

使用特权

评论回复
沙发
wuhany| | 2021-10-9 21:47 | 只看该作者

楼主程序可以公开吗?贴程序看下吧,这么说看不出什么原因

使用特权

评论回复
板凳
stly|  楼主 | 2021-10-9 21:49 | 只看该作者
PIC24FV16KM202 捕捉模块CCP1设置成功能输入捕捉中断,同样的设置CCP2却未成功捕捉输入进中断。可能是什么原因呢?
void initCCP2()
{
CCP2TMRH=0;
CCP2TMRL=0xFFFF;
CCP2PRH=0xFFFF;
CCP2PRL=0x0;

IEC0bits.CCP2IE = 0;   //????????
CCP2CON1Lbits.CCPON=1;  //??????
CCP2CON1Lbits.CLKSEL=0; //????????
CCP2CON1Lbits.TMRPS=0;  //????????
CCP2CON1Lbits.T32=1;    //??32????
CCP2CON1Lbits.CCSEL=1;  //??1???0?????
CCP2CON1Lbits.MOD=0b0010;   //????????????
CCP2CON1Hbits.RTRGEN=1; //  ????????
CCP2CON1Hbits.OPS3=0;   //??????????
CCP2CON1Hbits.TRIGEN=0; //?????????
CCP2CON1Hbits.ONESHOT=0;    // ???????
CCP2CON2Lbits.ASDG=0;   //????????
CCP2CON2Hbits.ICS=0x11;    //??????0-input capture IO;   0x011-?comparator 3 output
CCP2STATLbits.TRSET=1;  //???????
CCP2STATLbits.TRCLR=1;  //???????

IPC0bits.CCP2IP=0b011;                //???????
IPC0bits.T1IP=0b010;        //???1?????
CCP2CON1Lbits.CCPON=1;      //??????
IFS0bits.CCP2IF = 0;        //?????
IEC0bits.CCP2IE = 1;                 //Enable CCP2 interrupt.
}

使用特权

评论回复
地板
xxrs| | 2021-10-9 21:52 | 只看该作者
检查端口初始化, 是否是数字功能

使用特权

评论回复
5
jlyuan| | 2021-10-9 21:54 | 只看该作者
端口是否正确连接到CCP2

使用特权

评论回复
6
stly|  楼主 | 2021-10-9 21:56 | 只看该作者
有初始化,设置了IO方向为输入。连接到CCP2了。

使用特权

评论回复
7
heweibig| | 2021-10-9 21:59 | 只看该作者
除了方向之外,还要看该引脚是否复用了模拟功能, 如果复用了,要设置成数字口, 一般来说是ANSELx寄存器.你看看

使用特权

评论回复
8
stly|  楼主 | 2021-10-9 22:01 | 只看该作者
CPP1是成功的,只设置了RB13,14,15为AD模拟。之前也遇到个问题是无法读取IO的高电平,而刻意设ANSEL=0时,该IO口似乎才能读到1

使用特权

评论回复
9
stly|  楼主 | 2021-10-9 22:04 | 只看该作者
另外LAT读不到,而PORT才读到

使用特权

评论回复
10
zhanghqi| | 2021-10-9 22:06 | 只看该作者
试试将CCP2的口设ANSEL=0再试

使用特权

评论回复
11
wyjie| | 2021-10-9 22:08 | 只看该作者
读PORT, 写LAT,你寄存器都操作错了,怎么能行呢.

使用特权

评论回复
12
zwll| | 2021-10-9 22:10 | 只看该作者
花点时间看下datasheet,研究一下基础的东西吧..

使用特权

评论回复
13
dingy| | 2021-10-9 22:17 | 只看该作者
对于IO口来说,如果做数字功能, 必须先设置对应的ANSELx为数字引脚,然后设置TRISXx为输入/输出功能.

使用特权

评论回复
14
stly|  楼主 | 2021-10-9 22:19 | 只看该作者
请问所有口是默认为功能口吗?

使用特权

评论回复
15
tian111| | 2021-10-9 22:23 | 只看该作者
似乎默认是输入口吧

使用特权

评论回复
16
jiahy| | 2021-10-9 22:25 | 只看该作者
如果是打算用功能口则进行功能设置,否则都要先进行ANSELX设置吗?

使用特权

评论回复
17
wangpe| | 2021-10-9 22:27 | 只看该作者
没有ANSELX设置有时也是能IO读写的。

使用特权

评论回复
18
liliang9554| | 2021-10-9 22:29 | 只看该作者
在哪些datasheet会说明呢?

使用特权

评论回复
19
stly|  楼主 | 2021-10-9 22:31 | 只看该作者
我看到的datasheet里没这样说的详细

使用特权

评论回复
20
stly|  楼主 | 2021-10-9 22:33 | 只看该作者
下面的说法读LAT也是可以啊。( Writes to the latch, write the latch.)

All port pins have three registers directly associated
with their operation as digital I/O. The Data Direction
register (TRISx) determines whether the pin is an input
or an output. If the Data Direction register bit is a ‘1’,
then the pin is an input. All port pins are defined as
inputs after a Reset. Reads from the Data Latch register
(LATx), read the latch. Writes to the latch, write the
latch. Reads from the port (PORTx), read the port pins;
writes to the port pins, write the latch.

使用特权

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

本版积分规则

433

主题

7058

帖子

0

粉丝