搜索
bottom↓
回复: 9

LGT复位按键按下后,程序没有反应了

[复制链接]

出0入0汤圆

发表于 2012-5-14 18:34:34 | 显示全部楼层 |阅读模式
本帖最后由 hyg2012 于 2012-5-15 10:07 编辑

刚收到线路板,调了一下,串口可以通信了,移植了一个操作系统,也跑起来了,基本没有做修改。
发现复位按键按下后,程序没有反应了。只有通过断电才能运行,可以用仿真器下载程序,但是不能运行。不知道怎么回事。(线路板是在网站上邮购的)


原来是工程样片的问题,找了半天没有看见,仔细又查了一下,下面的帖子上找到的
http://www.ourdev.cn/thread-5468821-1-4.html

初始化外部时钟
http://www.ourdev.cn/thread-5475400-1-1.html
void init_devices(void)
{
  port_init();

  PMCR =0x15; // PMCR =0x35;        
      //先不要置位bit5

  delay_nms(10);     //延时10ms等待晶振输入稳定

  PMCR =0x35;  // 置位bit5, 切换系统时钟到外部晶振

  PMCR=0x34;         //关闭内部RC
  //PMCR &=~BIT(0);
   
  //CLKPR =0x81;       //置位MASK_CLKPCE,4个周期内修改分频系数      

  CLKPR=0x80;        //1分频,默认是2分频(0x01)
  CLKPR =0x00;    //清除 MASK_CLKPCE
}

有关CLKPR的设置,是我们的文档没有描述清楚,稍后会更新文档。

CLKPCE:对CLKPR写入0x80才会置位CLKPCE,写CLKPR4个时钟之后或者CLKPCE为高时再次设置CLKPR都会清零CLKPCE。

LS的本意是保持CLKPS的值不变同时置位CLKPCE,再写入新的CLKPS值,最后清零CLKPCE,

实际的运行结果会是:对CLKPR写入0x81不会置位CLKPCE,同时4个时钟之后CLKPCE会被清零,

再写入0x80时才会置位CLKPCE,但CLKPCE会提前被清零因为前面写入0x81时已经开始4个时钟的计数了,

再写入0x00时CLKPCE已经被硬件清零了,导致CLKPS的值设置不成功。

出0入0汤圆

 楼主| 发表于 2012-5-14 18:41:39 | 显示全部楼层
复位按键没有加上拉电阻,但是引脚上有3.3V电压。程序我只是配置为外部晶振,打开串口接受中断,使用定时器0作为系统滴答。PB0口直接高电平驱动一个发光管,没有加限流电阻。

出0入0汤圆

发表于 2012-5-14 18:42:09 | 显示全部楼层
是用外部晶振吗?

出0入0汤圆

 楼主| 发表于 2012-5-14 18:44:37 | 显示全部楼层
是的,7.3728M

出0入0汤圆

 楼主| 发表于 2012-5-14 18:45:53 | 显示全部楼层
本帖最后由 hyg2012 于 2012-5-14 18:47 编辑

用的是DrvSYS那个函数配置的
E_SYS_STATUS DrvSYS_ClockSwitch(STR_SYS_DEV *psSYSParam);

出0入0汤圆

发表于 2012-5-14 19:19:18 | 显示全部楼层
这个问题人家芯片厂家不是说了嘛!前期的芯片在用外部晶振的时候,外部复位是没有作用的

出0入0汤圆

 楼主| 发表于 2012-5-14 20:32:09 | 显示全部楼层
关键是按下复位键后,程序就死了,不再运行了。那如果需要复位怎么办?

出0入0汤圆

 楼主| 发表于 2012-5-14 21:51:30 | 显示全部楼层
原来是工程样片的问题,找了半天没有看见,仔细又查了一下,下面的帖子上找到的
http://www.ourdev.cn/thread-5468821-1-4.html

初始化外部时钟
http://www.ourdev.cn/thread-5475400-1-1.html
void init_devices(void)
{
  port_init();

  PMCR =0x15; // PMCR =0x35;        
      //先不要置位bit5

  delay_nms(10);     //延时10ms等待晶振输入稳定

  PMCR =0x35;  // 置位bit5, 切换系统时钟到外部晶振

  PMCR=0x34;         //关闭内部RC
  //PMCR &=~BIT(0);
   
  //CLKPR =0x81;       //置位MASK_CLKPCE,4个周期内修改分频系数      

  CLKPR=0x80;        //1分频,默认是2分频(0x01)
  CLKPR =0x00;    //清除 MASK_CLKPCE
}

有关CLKPR的设置,是我们的文档没有描述清楚,稍后会更新文档。

CLKPCE:对CLKPR写入0x80才会置位CLKPCE,写CLKPR4个时钟之后或者CLKPCE为高时再次设置CLKPR都会清零CLKPCE。

LS的本意是保持CLKPS的值不变同时置位CLKPCE,再写入新的CLKPS值,最后清零CLKPCE,

实际的运行结果会是:对CLKPR写入0x81不会置位CLKPCE,同时4个时钟之后CLKPCE会被清零,

再写入0x80时才会置位CLKPCE,但CLKPCE会提前被清零因为前面写入0x81时已经开始4个时钟的计数了,

再写入0x00时CLKPCE已经被硬件清零了,导致CLKPS的值设置不成功。

出0入0汤圆

 楼主| 发表于 2012-5-14 22:01:10 | 显示全部楼层
建议把这些解决了的问题加一个酷字,找起来好找一些。或者是整理一下置顶,上面的问题在第4页找到的。

出0入0汤圆

发表于 2012-5-15 09:44:01 | 显示全部楼层
原来如此
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-4 23:47

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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