完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
嗨,伙计们,我正在努力在PIC24EP512GP202上使用CTMU获得有效的读数:(我怀疑我用ADC做错了什么。我调用了两个例程,第一个例程是配置例程。
|
|
相关推荐
2个回答
|
|
我在ADC1BUF1上得到的值在500到700之间跳跃。我还在errata数据表中看到,到用于时间测量的“打开”CTMU连接的连接不起作用,所以我希望如果将它连接到AN引脚,它仍然可以工作。
|
|
|
|
万一有人遇到同样的问题,以下是我的解决方案。我有以下两个问题。连接到CTMU模块的ADC管脚需要从任何电路板或连接断开。(实际上我最终只是购买了微针开发工具包,并从主板上移除了AN0引脚)在等待信号到达的同时,有相当数量的电流泄漏,但在两个边缘状态设置为高之后,泄漏不成问题。对于我的实时测量,我使用计时器计数1ms,并排放帽和重置CTMU。这个特定的芯片不能与“CHOSA=31”一起工作,这是“开放连接”。到目前为止,我所能达到的最好分辨率是200ps左右,具有非常稳定的可重复测量。然而,我仍然在处理输入缓冲电路,以便用外部脉冲来确认这一点。我下面的代码用于CTMU的软件测试,注释可能全都错了,因为我正在进行大量试验和错误地CtmuTimeConfigAutoADC(void){//步骤1配置CTMUCTMUCON1=0x0000;//禁用CTMUCTMUCON1bits.TGEN=0;//禁用时间生成modeCTMUCON1bits.EDGEN=0;//Edges启用CTMUICONbits.ITRIM=0;//Set trimCTMUICONbits.IRNG=2;//设置高位范围CTMUCON1bits.CTTRIG=1;ANSELA=0x0003;//仅使用AN0-AN1作为模拟ANSELB=0x0000;//仅使用AN2-作为模拟//输入pinsTRISAbits.TRISA0=1;TRISA0=1;//设置通道2ANSELAbits.ANSA0=1;//设置通道2ANSELAbits.ANSA0=1;//使AN0作为模拟(电阻器连接到这个引脚)//步骤3配置ADCAD1CON1CON1=0x0000;//步骤3配置ADCADCAD1CON1CON1CON1CON1CON1COND1CON1CON1ON1=0x0000;//关断ADCADDDDD1COND1CON1CON1CON1CON1CON1CON1CON1CON1CON11比特.SSRCG=0=0;SSRC=0;SSRC=0=0=0;SSRC=0=0;AD1CON1CONAVSS不要扫描,AD1CON3=0x0000;//ADC使用系统时钟AD1CHS1CON3比特。ADCS=8;//转换时钟=1xTTCyAD1AD1AD1AD1CON1CON1比特。ASAM=1;AD1CON1比特=1;AD1CON1CON1比特;ADON=1;AD1CHS1CHS0位;AD1CH0SA=0;AD1CH0CH0SA=0;//选择AN2A2A2AD1CHS1CHS0位.CH0SB=0;//选择AN2AD1CH1CHD1CHS0CHS0位1CH0NB=0;CH0NB=0;CH0NBNBNBBBBBBBNBBBBBs.CH0NA=0;//负CSS31=0;AD1CSSLbits.CSS31=0;AD1CSSLbits.CSS0=0;CTMUCON2&=0;CTMUCON2&==~0x0300;//清除边缘状态位IFS0位.AD1X0300位.AD1IF1IF==0;CTMUCONCONCON1位;CTMUCON1位.CTMUCONCON1位.CTMUCONCON1位.CTMUCON1位.CTMUCON1位.CTMUCON1位.CTMUCON1位.CTMUCON1位.CTMU 1位.CTMUCON1位.CTMUCON1位.CTMUCON1位.CTMU 1位.AD1位.AD1位=0=0;CTMU14IF1IF1IF1IF=0;CTMU//delay1s();//delay1ms();delayX(2)LEDB2=1;CTMUCON2位.EDB2=1;CTMUCON2位.EDG1STAT=1;延迟1us();CTMUCON2位.EDG2STAT=1;同时(IFS0比特.AD1IF=AD1IF1IF==0);{int结果=ADC1BUF1=ADC1BUF1;//读取ADC结果结果结果结果结果结果结果1=ADC1BUF1=ADC1BUF0;int结果2=ADC1BUF2=ADC1BUF2;int结果3=ADC1BUF3=ADC1BUF3;sprintf(sprintf(s,“\\\\r\d状态%02d%02drn”,结果,结果1,结果2,IFS0bits.AD1IF,CTMUCON2 bits.EDG1STAT,CTMUCON2 bits.EDG2STAT;PutStrU1(s);CTMUCON1bits.IDISSEN=1;//开始手动放电盖延迟1ms();CTMUCON1bits.IDISSEN=0;//停止放电盖CTMUCON2&=~0x0300;//清除边缘状态位IFS0bits.AD1IF=0;}LEDB2=0;ReBb1=0;}
|
|
|
|
只有小组成员才能发言,加入小组>>
5248 浏览 9 评论
2036 浏览 8 评论
1956 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3218 浏览 3 评论
请问电源和晶体值之间有什么关系吗?PIC在正常条件下运行4MHz需要多少电压?
2264 浏览 5 评论
787浏览 1评论
678浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
604浏览 1评论
PIC Kit3出现目标设备ID(00000000)与预期的设备ID(02c20000)不匹配。是什么原因
685浏览 0评论
582浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-27 13:52 , Processed in 2.257878 second(s), Total 78, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号