我最近在研究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也不亮。或者需要将那根引脚处理后才能运行其内部程序?
谢谢了。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
原来是因为ICD2在调试模式下,好像并没有将hex文件下载到了芯片的flash里面,就算你点了编程菜单。
如果将ICD2加载为编程器模式,在然后再点编程器里面的编程菜单,这次好像是真正的将hex下载到flash里面去了。
但为什么还是没有运行呢?那是因为ICD2将芯片的MCLR引脚拉低了,系统一直在复位,难怪不能运行了。
知道原因后就好办了,方法有两个:
1.使用菜单 编程器->复位并释放CPU,这样的话,芯片终于运行起来了。
2.拔掉下载线 这是最彻底的方法。但是前面我这么做过,为什么还是失败了呢?那是因为2020的最小系统是我自己用面包版搭的最简单的系统,MCLR并没有上拉,导致该位在悬空的时候电压只有2.?V,处于一个不确定的状态,难怪系统也不如何运行了呢。今天加了个10k的上拉电阻后,终于可以正常运行了。
但是,新问题又来了。
1.用惯了iccavr的代码向导,请问下,DSPIC有没有那样类似的东西?
2.dspic的无源晶振设计电路和avr的有没有什么区别?我用了avr的连接方式,8M无源晶振。配置位需要如何处理才能够让dspic使用外部晶振呢?我修改了如下配置位:
primary oscillator source : HS oscillator mode/ EC oscillator mode
oscillator mode primary oscillator(hs, ec) w/pll
但是重新上电后,芯片好像就不运行了。请问,我是不是修改错了?
bozai,你真强,这个居然还记得,我差点忘了,呵呵!!2020
要区分不同的版本。
20楼,请问下,您所说的完善的库文件说的是不是support文件夹里面的东西?
谢谢bozai和leofoolish ,我今天换了个30f2012,终于可以使用外部无源晶振了。不过发现另外一个问题,芯片外接8M无源晶振,将icd2加载为下载器后,下载程序,配置位的设置了oscillator xt w/pll 16x,然后释放复位,发现可以运行了。但是每次下载程序后,芯片都是以一个较低的速度在运行,非得重新上电后才能将速度提高,好像是没有使能pll。不知道这个是不是也是一个正常现象?
pll要重上电以后才好用 这是正常的
一周热门 更多>