搜索
bottom↓
回复: 17

关于OSCCAL – RC 精调控制寄存器

[复制链接]

出0入0汤圆

发表于 2013-2-16 21:22:40 | 显示全部楼层 |阅读模式
我以前用的Tiny13需要使用这个寄存器校准时钟

校准值是从芯片内读出的   看LGT的手册似乎不能读到这个数字 我应该怎么做呢
一个一个校准不太可能啊

出0入0汤圆

发表于 2013-2-16 22:44:05 | 显示全部楼层
校准的话,可以使用编程器来校准。
也可以使用程序自动校准。然后把OSCCAL写入eeprom保存。

出0入0汤圆

 楼主| 发表于 2013-2-16 23:47:08 | 显示全部楼层
编程器怎么校准呢  LGT提供的工具有这个功能么?

出0入0汤圆

发表于 2013-2-16 23:57:17 | 显示全部楼层
本帖最后由 xwkm 于 2013-2-16 23:59 编辑
pupist 发表于 2013-2-16 23:47
编程器怎么校准呢  LGT提供的工具有这个功能么?


具体这个我就不清楚了。因为目前我用的还是山寨工具,非官方的。
至于OSCCAL可以自己找个有源晶振。输入捕获,自己校准就OK了。
顺带说一句,不要试图使用LGT目前自带的RC振荡器跑V-USB。
就算是使用了外部8M的有源晶振校准。但是还是在HUB上99%起不来。
在Intel的后USB接口还好。AMD和HUB的情况一样,完全认不出来。

总之内部目前LGT的内部RC振荡器跑115200波特率,校准过几乎没问题。
但是跑USB就省省吧。老老实实外接晶振吧。

出0入0汤圆

 楼主| 发表于 2013-2-17 00:12:53 | 显示全部楼层
那你的意思是一个一个校准了? 我一次要烧写千把个 不是死翘翘了...   LGT省略了一个有成本的步骤啊

出0入0汤圆

发表于 2013-2-17 00:22:31 | 显示全部楼层
pupist 发表于 2013-2-17 00:12
那你的意思是一个一个校准了? 我一次要烧写千把个 不是死翘翘了...   LGT省略了一个有成本的步骤啊 ...

我放出了一部分的ISP时序。你可以试试自制脱机编程器。然后主控MCU自动校准LGT。
不过貌似脱机编程器可以联系官方获得。应该烧好了OSCCAL也校准好了。
还有我还是老话,V-USB不适合用内部RC,谁用谁知道。

出0入0汤圆

发表于 2013-2-17 13:27:14 | 显示全部楼层
工厂出厂之前是已经校准了的,如果认为有必要校准,就给OSCAL赋值就可以。

因为系统启动时先从FUSE处载入OSCAL的值,如果程序再次赋值那么就是使用最新的用户程序的值了。

出0入0汤圆

发表于 2013-2-17 18:55:32 | 显示全部楼层
写OSCAL时会自动存储OSCAL的值, 这个不知道以后会不会改一下.

出0入0汤圆

 楼主| 发表于 2013-2-17 20:06:52 | 显示全部楼层
logicgreen 发表于 2013-2-17 13:27
工厂出厂之前是已经校准了的,如果认为有必要校准,就给OSCAL赋值就可以。

因为系统启动时先从FUSE处载入O ...

这么说 LGT比AVR出厂前还多做了一些呢  明白了

出0入0汤圆

发表于 2013-2-17 20:27:49 | 显示全部楼层
goodcode 发表于 2013-2-17 18:55
写OSCAL时会自动存储OSCAL的值, 这个不知道以后会不会改一下.

给OSCCAL赋值的时候貌似没有存储动作。
只是在这个芯片这一次有效,下次加电没去赋值就还是FUSE的值。

出0入0汤圆

发表于 2013-2-17 20:45:39 | 显示全部楼层
记得之前的测试写OSCAL的值会被存储, 这样会带来一些麻烦.

出0入0汤圆

发表于 2013-2-18 10:04:09 | 显示全部楼层
goodcode 发表于 2013-2-17 20:45
记得之前的测试写OSCAL的值会被存储, 这样会带来一些麻烦.

不会的。你上电的时候试下绝对没存储。

出0入0汤圆

发表于 2013-2-18 14:16:02 | 显示全部楼层
又测了一下确实不会写熔丝位
    uint8_t i, oldOSCCAL, oldCLKPR;

    oldOSCCAL = OSCCAL;
    oldCLKPR = CLKPR;

    //LED初始化
    DDRD = 1<<PD7;
    ledRedOff();

    _delay_ms(500);

    //2分频 8M 19200
        InitUART( 0x0067);
        TransmitByte( 0xff);
        TransmitByte( 0x00);
        TransmitByte( OSCCAL);
        TransmitByte( CLKPR);
    TransmitByte( 0x00);
    TransmitByte( 0xff);

    //重设时钟校准值
    OSCCAL = 7;
        CLKPR = 0x80;
        CLKPR = 0x80;
        _delay_ms(100);
        //1分频 16M 19200
        InitUART( 0x0067);
        TransmitByte( 0xff);
        TransmitByte( 0x00);
        TransmitByte( OSCCAL);
        TransmitByte( CLKPR);
    TransmitByte( oldOSCCAL);
    TransmitByte( oldCLKPR);
    TransmitByte( 0x00);
    TransmitByte( 0xff);

        for (i=0; i<20; i++)
    {
        ledRedToggle();
        _delay_ms(100);
    }

    ledRedOff();

        _delay_ms(1000);



    while(1);
    return 0;

软复位 FF 00 07 00 07 00 00 FF
上电 FF 00 07 00 40 00 00 FF
不知道为什么 芯片上电不是2分频
看返回的值 OSCCAL 在设置之前读取没意义

出0入0汤圆

发表于 2013-2-18 19:07:27 | 显示全部楼层
goodcode 发表于 2013-2-18 14:16
又测了一下确实不会写熔丝位
    uint8_t i, oldOSCCAL, oldCLKPR;

芯片上电的时候是二分频,设置分频后复位就不会变。但是如果是非SOP28的芯片复位后时钟源一定是IRC。你可以试试。

出0入0汤圆

发表于 2013-2-18 19:38:16 | 显示全部楼层
我这是工程片 看上面代码 InitUART( 0x0067); 按8m收到的是错位的

之前工程里
    if (OSCCAL != 0x08)
        OSCCAL = 0x08;
蛋疼了

出0入0汤圆

 楼主| 发表于 2013-3-10 11:45:36 | 显示全部楼层
logicgreen 发表于 2013-2-17 13:27
工厂出厂之前是已经校准了的,如果认为有必要校准,就给OSCAL赋值就可以。

因为系统启动时先从FUSE处载入O ...

Hello LGT  我看到官方例程里  每个程序都给OSCAL赋值校准了  能解释一下么   TC的例子赋值0x0a Uart例子赋值 0x05   我批量生产的时候到底应该怎么做呢

不赋值?还是挨个校准?

出0入0汤圆

 楼主| 发表于 2013-3-10 16:45:01 | 显示全部楼层
pupist 发表于 2013-3-10 11:45
Hello LGT  我看到官方例程里  每个程序都给OSCAL赋值校准了  能解释一下么   TC的例子赋值0x0a Uart例子 ...

又试了一次  默认8M是不用校准的

出0入0汤圆

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

本版积分规则

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

GMT+8, 2024-5-11 22:25

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

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