热度 22
2013-2-20 11:17
1613 次阅读|
1 个评论
PICC18(V9.80)的配置位的定义位置 编译环境: MPLAB IDE(V8.89) + PICC18(V9.80) 在 “Quick Start.pdf” 文档中, 我们读到第一个 hello world 代码, 我们略略调整如下: #include __CONFIG(1, FCMDIS IESODIS XT); void main(void) { while(1); } 尽管编译顺利通过, 我们想知道的, 就是”配置宏”, 比方说 FCMDIS 在哪里定义? 似乎网络上, 曾提及在旧版本中可以到安装目录下的 include 文件夹中, 寻找类似"pic18Fxxxx.h” 头文件, 但是在我们安装的这个版本中, 却无法找到. 实际上, 即使用”文件查找”的方式, 都无法找到 FCMDIS 的定义. 尽管在 IDE 中, 允许我们在可视化操作下, 对配置位进行选择和配置, 但是当我们 uncheck Configuration Bits set in code, 也就是使用 Configuration Bits Window 进行配置时, 我们发现最终生成的 hex 文件, 却不不包含该配置位. 实际上, 在 IDE 的 output window, 也充分说明了该现象: 虽然, 我们在配置位窗口, 选择各项设定, 但是在 hex file 上, 却没有发现配置位. 一个合理的假设是, 当我们使用 IDE 使用 programmer 时, IDE 在帮我们做这个 job``` 这令人烦恼, 试试看出货时, 在生产的电脑上, 安装 IDE, 开启 project, 某个生产工程师或产线MM做 program```` ; ( 因此, 我们应该使用 do set configuration bits with code, 也就是 章节中, 我们提到的: __CONFIG(1, FCMDIS IESODIS XT); 在屏蔽了 configuration bits windows 的 enable checkbox 后, 我们回到了代码实现的工作, rebuile后, 通过对 HEX 文件的分析, 我们也可以证实上述现象. 我们在 HICC18 安装目录中, 找到了 \dat\cfgmap 目录下的 .cfgmap 文件(比如说 18f45k20.cfmap). 这里可能是”配置宏”被定义的地方. 要提及的是, 我们也找到了有着同样疑问的帖子, http://forum.htsoft.com/all/showflat.php/Cat/0/Number/233812/page/0/fpart/2/vc/1 这里的讨论者, 饶有兴趣提到了, 该文档中的语法问题, 简单提一下: 形如 “XT:FOSC=XT” 的意义, 我们一看就懂. 那么, “FCMDC:” (就是我们要找的这个”配置宏”) 又代表了啥? 这个帖子中, 不少人猜测这是 “If you're seeing just FCMDIS:, I'd guess that means mean exactly what you'd expect: FCMDIS is legal, but doesn't do anything (i.e., OFF is its default state anyway). ” 说起来, 我们认同这个假设…. ; P 当我们找到了 .cfgmap 文件, 并通过 “:” 后的解释, 或者直接猜测 “FCMDC:”(没有任何解释, 依靠我们推测其为默认值), 我们可以使用 __CONFIG 方式, 进行配置位设定. 但是, 检索 HICC18 的 manual 文档, 我们很清晰知道, 原来 __CONFIG 是一种过时用法, 不被 V9.80 继续推荐(From “Configuration Fuse” of Chapter “C Language Features”), 这里引入了新的配置方式如下: 之所以使用这个语法, 如同该使用手册中提到的, 各种设定值, 有着详细的文档支持. 容易找到 chipinfo.html, 很快的, 在 html 文档的支持下, 我们很容编写出类似下面语句的例子: #include //__CONFIG(1, FCMDIS IESODIS FOSC_INTIO7); #pragma config IESO=OFF, FOSC=INTIO7, FCMEN=OFF void main(void) { while(1); } 显然, 两者效果是等效的. 不意外的, 我们检查 HEX 文件, 也是相同的. 另外提及的是, 在 0x300001 处的 config byte 的值就是 9, 这与 IDE 中的 configuration Bites Set Window 中选择相应的项目是一致的. 因此, 在 chipinfo.html 文档的帮助下, 设定 configuration bits 的任务变得轻易. Allen Zhan allen_zhan@163.com Release ON