dsPic可以不用外置晶振吗?以及一起的3个问题。谢谢

2020-02-09 11:33发布

我最近在研究dsPic30f2012,就写了那么2行代码
其中,2-5脚连接了4个led,led的另一端接了电阻后接电源。
#include "p30f2012.h"
int main(void)
{
        PORTB=0x0000;
        TRISB=0x0000;
        while(1)
        {
                PORTB=0x00;
                asm("nop");
                PORTB=0xff;
                asm("nop");
        }
}
系统使用内部RC振荡器,FRC 4X。
现有问题如下:
1,PIC可以象AVR一样通过“熔丝”设置内部(外部)晶振么?如果是,是configuration bits么?
2,如果是如上所猜测,那么,这个设置如何设置到PIC里面使其生效?界面上好像没有“写入”等类似按钮。
3,我在使用过程中还发现一个奇怪的问题,上面程序在单步调试的时候,可以看到LED在亮灭交替,但是将程序下载到单片机后,就看不见LED动了。基本上就是不亮。请问:pic是不是跟AVR一样,程序下载后,直接就可以运行?因为我尝试过重新上电,LED也不亮。或者需要将那根引脚处理后才能运行其内部程序?
谢谢了。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
42条回答
benladn911
1楼-- · 2020-02-11 12:01
asm("nop");   ???

一个NOP 就能用眼睛看到闪烁???

火眼金睛了`~~~
zxq6
2楼-- · 2020-02-11 14:04
楼上的,我是说脱离mplab后运行不亮,通过mplab单步调试能够看见亮灭交替。没有说运行的时候能够看见闪烁的。
leofoolish
3楼-- · 2020-02-11 17:25
 精彩回答 2  元偷偷看……
zxq6
4楼-- · 2020-02-11 20:37
楼上的,我已经将AD口转化为数字口了啊。程序如下:

#include "p30f2020.h"
int main(void)
{
        ADPCFG = 0xFFFF;        /* Configure ANx pins used by ICD for digital i/o*/
        TRISB = 0x0000;
       
        while(1)
        {
                LATBbits.LATB0 = ~LATBbits.LATB0;
                LATBbits.LATB1 = ~LATBbits.LATB1;
                LATBbits.LATB2 = ~LATBbits.LATB2;
                LATBbits.LATB3 = ~LATBbits.LATB3;
                asm("nop");
        }
}
但是还是看不见那几个LED亮的啊。只是在调试的时候单步运行可以看见亮灭。其余时候都是灭的。
也尝试了外部晶振,使用的是AVR的连接方式,只是在OSC2和晶振之间接了个330欧姆电阻,电容是22p,晶振是2M。
配置位如下,不知道有没有什么问题?
andyjuly
5楼-- · 2020-02-12 01:42
呃。。。
你的晶振模式是不是没选啊?振荡器模式是不是该选Internal Fast RC 那一项啊?

或者你选了外部晶振的模式却使用了FRC的PLL?
leofoolish
6楼-- · 2020-02-12 05:21
你芯片还真多啊,怎么换2020的拉,它还有复用功能啊,模拟比较功能,把它也禁止了,再改试试!

一周热门 更多>