门关键词: 防爆照明开关 mf47万用表电路图 特种瓷件 led发光二极管原理 广州伊林变压器 丰田广告车的零件 无线耳麦报价
IC库存(8958万) PDF资料(329万) IC价格 IC求购 资讯 技术资料
电子元器件搜索:
维库电子市场网是知名的电子元器件交易网站,为电子生产企业提供IC库存和技术资料查询服务。
用QY4内部振荡器做时钟时定时问题
新闻出处:21ic 发布时间: 2007-05-22
谭可 发布于 2007-5-21 18:16:00
使用QY4时,采用了内部振荡器。做定时功能的时候发现误差很大,超过了20%。各位大侠帮我看看我哪个地方没有设置好。今天才用Freescale的单片机。相关程序如下:
#include <hidef.h> /* for EnableInterrupts macro */
#include "derivative.h" /* include peripheral declarations */

typedef    unsigned char   UINT8;
typedef int                    INT16;
typedef unsigned int      UINT16;
typedef unsigned long   UINT32;
typedef long                 INT32;


void Init_Device(void)
{
    /* init the mcu register*/
    DisableInterrupts;
    CONFIG1 = 0x01;                                      
    CONFIG2 = 0x00;                                      
    OSCTRIM = *(unsigned char*far)0xFFC0; /* Initialize OSCTRIM register from a non volatile memory */
    DDRB = 0x3F;                        /*portb 0 to 5 as 2s,15m,1h,2h,3h,5h*/                
    DDRA = 0x10;                        /*porta4 as LED output*/
    TSC = 0x30;                          /* Stop and reset counter */
    TMOD = 0x2710;                    /* Period value setting */
    TSC = 0x45;                          /* Int. flag clearing (2nd part) and timer contr. register setting */
  PTA = 0x00;
  PTB = 0x00;
    EnableInterrupts;                    /* Enable interrupts */
}
void main(void)
{
    Init_Device();
    EnableInterrupts; /* enable interrupts */
    /* include your code here */
    for(;;)
    {
        __RESET_WATCHDOG(); /* feeds the dog */
    } /* loop forever */
    /* please make sure that you never leave main */
}


张明峰 发布于 2007-5-21 21:40:00
出厂时FFC0处会有一校准值,但用简单的调试工具进行芯片擦除时也会将该值一起擦除。

调试时先将空芯片的内容读出来,记下出厂的校准值,软件直接赋值进行校准。批量生产时选用能保留此校准值的工具(先读出来,然后擦除芯片,再一起烧写)。


谭可 发布于 2007-5-22 9:01:00
FFC0地址是属于Flash中的地址,可以直接赋值吗?


afanti 发布于 2007-5-22 10:20:00
const byte strName[] @0xFFC0 = {0x55};可以这样。
FSL的校正值太麻烦了~~~~


关闭】 【打印
 
相关专题
 
友情链接:
© 2007 电子元件网 网站地图