使用AN9,对KEY进行A/D检测。AN9管脚设置为输入,VREF 5V.
遇到的问题是:单步执行的时候3次当中有1次能检测到AD0的值。
如果步单步执行的话,根据就检测不到按键。
程序如下:
if(adst == 0) //如果为停止位时,才开始A/D转换设置
{
adcon0 = 0x80 | (adc_channel & 0x07);//设置单次模式,软件触发,并取相应Channel低3位,fOCO-F频率设置
adcon2 = 0x00 | (adc_channel & 0x18);//无采样,取bit3-bit4,和adcon0取的低3位共同设置Channel
adcon1 = 0x30; //8位分辨率,VREF连接
waitus(1); //等待1us
fra2 = 0; //fOCO-F频率设置为2分频
fra1 = 0;
fra0 = 0;
adst = 1; //计数开始
waitus(20);//等待20us ,等待49个AD转换周期
aucRtnData = ad0l; //将AD0低8位传给返回值
}
共4条
1/1 1 跳转至页
刚回复的东西没有贴上来。
再次谢谢Fishs_new_life。确实好使了。
程序设置如下:
prcr = 0x01;//允许改写fra2,fra0寄存器
fra2 = 0x06;//8分频设置
fra0 = 0x03;//使用高速内部振荡器并启动
prcr = 0x00;;//禁止改写fra2,fra0寄存器
另外,我在设置这些寄存器时使用了禁止中断,不知道是否为多余的操作?
即:
asm("FCLR I");
.
.
. //AD转换程序
.
.
asm("FSET I");
呵呵,顶楼的帖子当时应该是写fra20,fra21,fra22这几个bit位的(很粗心把2全漏掉了,^_^)。
希望这个帖子也能对其他人有用。
1、有想过没启动的问题。
我用的是XIN/XOUT
R8C/2C提供4个时钟产生电路,如果在系统启动的时候就启动高速时钟的话,似乎是不合理的设计。若不设置使用高速时钟fra01的话,直接设置fra00,不会有问题?
2、但是如果不使用XIN/XOUT(0~20M)
直接使用高速时钟(0~40M)
这样会影响到其他延时的准确性。程序段所有使用延时(nop)语句的就都会有问题。也不是个很好的办法。定时器可以直接修改数据,倒还OK。
3、如果不使用内部时钟的话,直接通过CKS1和CKS0设置为f4也就OK了。
以上几点想法,不知道有没有其他问题。
共4条
1/1 1 跳转至页
回复
| 有奖活动 | |
|---|---|
| 这个春节你犒赏自己什么了?分享你的故事,有奖征集 | |
| 2026年“我要开发板活动”第三季,开始了! | |
| 硬核工程师专属补给计划——填盲盒 | |
| “我踩过的那些坑”主题活动——第002期 | |
| 【EEPW电子工程师创研计划】技术变现通道已开启~ | |
| 发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
| 【EEPW在线】E起听工程师的声音! | |
| 高校联络员开始招募啦!有惊喜!! | |
我要赚赏金打赏帖 |
|
|---|---|
| Gravity:中英文语音合成模块V2.0及其串口控制被打赏¥24元 | |
| 全彩色度变化图的绘制被打赏¥27元 | |
| 【FreeRtos】FreeRtos任务栈的生长方向管理方式被打赏¥20元 | |
| 【瑞萨RA8D1 LVGL/LWIP评测】LVGL添加输入设备:EC11旋转编码器被打赏¥39元 | |
| 【瑞萨RA8D1 LVGL/LWIP评测】RA8D1部署FreeRTOS+LVGL被打赏¥33元 | |
| 空气质量检测器设计与实现被打赏¥24元 | |
| 【瑞萨RA8D1 LVGL/LWIP评测】LWIP进行UDP、TCP、HTTP、MQTT功能联合测试被打赏¥41元 | |
| 【瑞萨RA8D1 LVGL/LWIP评测】RA8D1部署FreeRTOS+LWIP被打赏¥36元 | |
| RTOS怎么选?让我来给你答案!被打赏¥15元 | |
| 【S32K3XX】Flash驱动使用被打赏¥26元 | |
我要赚赏金
