找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4436|回复: 4
打印 上一主题 下一主题
收起左侧

dsPIC30F的操作问题

[复制链接]
跳转到指定楼层
楼主
使用MPLAB开发环境,使用C30编译器,PICkit3.5调试工具,进行CANopenNode协议栈移植。上述的背景,我在修改完时钟参数(开发板使用外部11.0592Mhz晶振)后,Debugger情况下可以运行,也能收发数据。当我移除kit3.5后,重新上电,不能收发数据,而且芯片温度升高,请问这是为什么?
这与我使用的链接文件,p30f6010a.gld有关嘛,急需解答。谢谢
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:342505 发表于 2018-7-14 22:01 | 显示全部楼层
找到问题了,主要是没有配置好时钟源的问题导致的,下面我详细的讲述一下。
回复

使用道具 举报

板凳
ID:342505 发表于 2018-7-14 22:18 | 显示全部楼层
首先,该芯片的时钟源(振荡器)系统如下图所示

使用外部晶振时,可选择倍频操作以及分频操作,最后获得系统时钟。
其中对于不同的外部晶振对应的时钟源配置也是不同的,主要分为:
1. XTL,200kHz - 4MHz
2. XT, 4MHz - 10MHz
3. HS, 10MHz - 25MHz
例如目标版的外部晶振是8MHz,则在软件配置时,应有如下语句:
  1. _FOSC(CSW_FSCM_ON & XT_PLL8);
复制代码

8MHz在4MHz-10MHz之间,故选择XT参数,PLL8则表示8倍频
同样的如果需要分频,对OSCCON寄存器的POST位进行配置即可。

总结:以上述情况为例,采用8MHz外部晶振,8倍频,不分频,则有如下结果
系统时钟频率Fsysclk = 8Fosc = 64MHz;
指令周期频率Fcy = Fosc/4 = 2MHz;
回复

使用道具 举报

地板
ID:342505 发表于 2018-7-14 22:23 | 显示全部楼层
至于1楼的情况,因为本目标板使用的外部晶振频率超过10MHz,而在源码中
  1. _FOSC(CSW_FSCM_ON & XT_PLL8);
复制代码

很明显不符合外部晶振的使用范围,故在实际烧写完后,芯片因为无法正常起振外部晶振而导致死机
改为HS即可正常运行
至于为何在DEBUG模式下可以正常运行,个人猜测可能DEBUG的时钟源,即晶振源来自kit3而不是本目标板的外部晶振,这只是个人的猜测,上述如有不对或谬误之处还望大牛批评指正。
回复

使用道具 举报

5#
ID:342505 发表于 2018-7-14 22:27 | 显示全部楼层
还有一个经验,就是出现本贴的情况,或者其他类似情况,强烈推荐去查看配置位。
在MPLAB v8.92下,是Configure->Configuration Bits
具体参考如下帖子:dsPIC30F 配置位
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表