|
|
|
| AVR (原ourAVR.com) 技术论坛 -> 分类清单 -> 想与各位探讨有关AVR的内部RC振荡器校准及补偿问题 | 跳转至: | 未登录 |
| ↓↓ 想与各位探讨有关AVR的内部RC振荡器校准及补偿问题 | 回复数:57,点击数:15893 |
|
抱歉本贴的回复数太多,为了减轻网络流量,只显示帖子正文的前后各10个回复。本贴的正文内容中间隐藏了37个回复。你需要 点击此处 才能查看全部内容。 对为你带来的访问不便表示歉意。不过我们仍会坚持即使没有登录,仍能共享我们网站的所有资料。你没有 登录后就能消除这个访问上的不便(可增加到显示60个回复)。 如果你是新用户请先 注册。注册是免费的,并且手续简单只需要填写用户名与口令。 ↓↓↓↓↓↓↓↓↓↓↓↓ |
|
【楼主位】 hotpower 菜农 积分:2136 派别: 等级:------ 来自:西安大雁塔村 |
近日对M8L进行了一些演练,感觉比51---味道好极了...虽然PIC也...
但是由于系统的要求及M8L的特点,我在用RTC后,也只好用内部RC振荡器了. 当然内部RC振荡器确实对系统的稳定有一定的帮助,但频率漂移确实是件头痛的大事!!! 首害者就数串口了!!! 在5V系统下波特率为19200时,可以说不错,UBRR基本稳定在25.OSCCAL由SLISP校准. 但在3.3V系统下,保持OSCCAL不变时,随着外部条件的变化,UBRR从24(比5V的小)可以飘到21. 请大家探讨有关AVR的内部RC振荡器校准及补偿问题,能否找出一个简单可行之方法??? 我琢磨了一个方法,正在验证中,先请各位发表高见... -----此内容被hotpower于2005-01-09,00:42:34编辑过 |
||
|
|
|
|
【1楼】 machao 积分:5240 派别: 等级:------ 来自: |
请做点好事,把官方提供的资料先整理告诉大家。
点击此处打开armok0127582.pdf 点击此处打开armok0127583.pdf 点击此处下载armok0127584.zip 点击此处下载armok0127585.zip |
||
|
|
|
|
【2楼】 hotpower 菜农 积分:2136 派别: 等级:------ 来自:西安大雁塔村 |
谢谢马老师...
今天大概看了一下,思路应该与波特率自动校准技术雷同吧... -----此内容被hotpower于2005-01-10,00:11:56编辑过 |
||
|
|
|
|
【3楼】 hotpower 菜农 积分:2136 派别: 等级:------ 来自:西安大雁塔村 |
马老师:
学生我已实现AVR的内部RC振荡器自动校准及补偿... 实际上,在我第1次为RC郁闷时,就立即将INT0接RXD,...因为我搞过几年仪表计量... 我现在也只看了"一眼"您给的ATMEL官方提供的资料...因为我要自己从郁闷中走出来... 您自称是"另类",学生我肯定是"异类"了... 现在我不需要"外部激励RXD"来校准AVR的内部RC振荡器... 正在"烤机"和优化"算法"..."误人子弟"我也是做不出来的... |
||
|
|
|
|
【4楼】 hotpower 菜农 积分:2136 派别: 等级:------ 来自:西安大雁塔村 |
这是串口的"调节记录",准备优化算法,使其迅速逼近正确点...
从下面可以看出调节用了00:01:05.... 软件测试设定: /* UART初始化 */ void uart_init(void) { // OSCCAL = pgm_read_byte(osc_address); // OSCCAL = 0xb1;//双龙校准值 OSCCAL = 0xf0;//瞎写值 UCSRB=(1<<RXEN)|(1<<TXEN)|(1<<RXCIE);//允许发送和接收 // UBRR=fosc/16/(baud+1); // UBRRL=(fosc/16/(baud+1))%256; // UBRRH=(fosc/16/(baud+1))/256; // UBRRL = 21;//3.3V的漂移测定值 UBRRL = 25;//标准值 UBRRH = 0; UCSRC=(1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);//8位数据+1位STOP位 } ?庺幚膹?巰庺幚?幤尷庼幚?幥尷庼梧D幦汤庼凄F庨睦析青f晤睦悟G?物睦悟G`"勿睦乞gp????乞gp?凄胬乞cp????F?F?DF俐?GzFzdG@FzG{凣@?G{G{@?G{G{腉@?GyG{ 鬐@?gyGy 睦gyGy 4睦g=?g=G`?#=?'=?' ?#忇DDg1??#忇DDg寑#忇DDg2??D'8?? ?D'8?? ?D#8?? ?d#8?忄d#8?忄d#?#?d#?#?d#?d#?ddtt忄ddt?蜞d$t?蜞$$4?蜞$$4?蜞&$4蜞&$6筻$$?骮?骮?&骮仸6馺仸F馺仸V馺仸f馺仸v馺仸?鵣仸?鵣仸鵣仸鵣仮"鵣立2鵣立B鵣立R鵣`r?b㤘`z``reg@``z``zex@``z``zey@``zpazp`@ppzpqzpq@ppzpqzpr`ppzpqzps`00zp1:0t`00:01:05 00:01:06 00:01:07 00:01:08 00:01:09 00:01:10 00:01:11 00:01:12 00:01:13 00:01:14 00:01:15 00:01:16 00:01:17 00:01:18 00:01:19 00:01:20 00:01:21 |
||
|
|
|
|
【5楼】 hotpower 菜农 积分:2136 派别: 等级:------ 来自:西安大雁塔村 |
再给一组测试值,可以看出5V和3.3V的差异...
软件测试设定: /* UART初始化 */ void uart_init(void) { // OSCCAL = pgm_read_byte(osc_address); OSCCAL = 0xb1;//双龙校准值 // OSCCAL = 0xf0;//瞎写值 UCSRB=(1<<RXEN)|(1<<TXEN)|(1<<RXCIE);//允许发送和接收 // UBRR=fosc/16/(baud+1); // UBRRL=(fosc/16/(baud+1))%256; // UBRRH=(fosc/16/(baud+1))/256; // UBRRL = 21;//3.3V的漂移测定值 UBRRL = 25;//标准值 UBRRH = 0; UCSRC=(1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);//8位数据+1位STOP位 } ?庺幚膹?巰庺幚膹滥巰庼幚D幥尷庼梧D幦汤析凄F伍睦析青f晤睦悟G?物睦悟G`"勿睦乞gp????乞gp?凄胬F?cp????F?F?DF俐?GzFzdF@G{Gz凣@G{G{碐@?G{G{腉@?GyG{ 鬐@?gyG{ 睦gyGy 4睦g=?g=g`?g=?#=?' ?#忇DDg1??#忇DDg寑#忇DDg2??D'8?? ?D'8?? ?D#8?? ?d#8?忄d#8?忄d#?#?d#?#?d#?d#?ddt@?ddt?蜞d$t?蜞$$4?蜞$$4?蜞$$4蜞&$4筻$$?筻?骮儰$骮仸6馺仸F馺仸V馺仸f馺仸v馺仸?鵣仸?鵣仸鵣仮鵣仮&鵣立2鵣立B鵣立R鵣敛b鵣`r``zmg@``z``zex@``z``zey@p`zpqz`p@ppzpqzpq@ppzpqzpr`ppzpqzps`pp:01zp4 00:01:05 00:01:06 00:01:07 00:01:08 00:01:09 00:01:10 00:01:11 00:01:12 00:01:13 00:01:14 00:01:15 00:01:16 00:01:17 00:01:18 -----此内容被hotpower于2005-01-09,20:13:46编辑过 |
||
|
|
|
|
【6楼】 hotpower 菜农 积分:2136 派别: 等级:------ 来自:西安大雁塔村 |
再给一组测试值,可以看出好像都要经过1分零5秒后才能调节到正确值...
马老师: 从实验结果来看,中途调节OSCCAL是需要一定的时间才行??? 软件测试设定: /* UART初始化 */ void uart_init(void) { // OSCCAL = pgm_read_byte(osc_address); // OSCCAL = 0xb1;//双龙校准值 OSCCAL = 0x80;//瞎写值 UCSRB=(1<<RXEN)|(1<<TXEN)|(1<<RXCIE);//允许发送和接收 // UBRR=fosc/16/(baud+1); // UBRRL=(fosc/16/(baud+1))%256; // UBRRH=(fosc/16/(baud+1))/256; // UBRRL = 21;//3.3V的漂移测定值 UBRRL = 25;//标准值 UBRRH = 0; UCSRC=(1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);//8位数据+1位STOP位 } 徖$巰庺幚膹滥巰庼幚?幥尷庼卫D幦汤庼凄F庨睦析青f晤睦悟G?物睦悟G`"勿睦乞gp????乞gp?凄胬乞cp????F?F?DF俐?GzFzdG@G{Gz凣@G{G{@?G{G{腉@?GyG{ 鬐@?GyGy 睦gyGy 4睦g=gyg`?'=?'=?' ?#忇DDg1??#忇DDg寑#忇DDg2??D'8?? ?D#8?? ?D#8?? ?d#8?忄d#8?忄d#?#?d#?#?d#?d#?ddtt忄ddt?蜞d$t?蜞$$4?蜞$$4?蜞$$4蜞&$4筻$&?骮?骮儲&骮仸6馺仸F馺仸V馺仸f馺仸v馺仸?馺仸?鵣仸鵣仮鵣仮&鵣立2鵣立B鵣立R鵣敛b鵣`z``zeg@``z``zex@``z``zey@``zpazp`@ppzpqzpq@ppzpqzpr@ppzpqzps`p0:0qz04 00:01:05 00:01:06 00:01:07 00:01:08 00:01:09 00:01:10 00:01:11 00:01:12 00:01:13 00:01:14 00:01:15 00:01:16 00:01:17 00:01:18 00:01:19 00:01:20 00:01:21 |
||
|
|
|
|
【7楼】 hotpower 菜农 积分:2136 派别: 等级:------ 来自:西安大雁塔村 |
再给一组测试值,可以看出如果在写入时就写OSCCAL = 0xc8该多好呀...
但本程序是"全天候自动调节",无须再为内部RC振荡器"忧愁烦恼"了... 哈哈...我该做个"美梦"了... 软件测试设定: /* UART初始化 */ void uart_init(void) { OSCCAL = 0xc8;//本程序测出的自动校准值(真正的漂移值) // OSCCAL = pgm_read_byte(osc_address); // OSCCAL = 0xb1;//双龙校准值 // OSCCAL = 0x80;//瞎写值 UCSRB=(1<<RXEN)|(1<<TXEN)|(1<<RXCIE);//允许发送和接收 // UBRR=fosc/16/(baud+1); // UBRRL=(fosc/16/(baud+1))%256; // UBRRH=(fosc/16/(baud+1))/256; // UBRRL = 21;//3.3V的漂移测定值 UBRRL = 25;//标准值 UBRRH = 0; UCSRC=(1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);//8位数据+1位STOP位 } 00:00:01 00:00:02 00:00:03 00:00:04 00:00:05 00:00:06 00:00:07 00:00:08 00:00:09 00:00:10 00:00:11 00:00:12 00:00:13 00:00:14 00:00:15 00:00:16 00:00:17 00:00:18 00:00:19 00:00:20 00:00:21 00:00:22 00:00:23 00:00:24 00:00:25 00:00:26 00:00:27 00:00:28 00:00:29 00:00:30 00:00:31 00:00:32 00:00:33 00:00:34 00:00:35 00:00:36 00:00:37 00:00:38 00:00:39 00:00:40 00:00:41 00:00:42 00:00:43 00:00:44 00:00:45 00:00:46 00:00:47 00:00:48 00:00:49 00:00:50 00:00:51 00:00:52 00:00:53 00:00:54 00:00:55 00:00:56 00:00:57 00:00:58 |
||
|
|
|
|
【8楼】 hotpower 菜农 积分:2136 派别: 等级:------ 来自:西安大雁塔村 |
实际的OSCCAL逼近"曲线"...可以看出波特率不对时的"情况"...
软件测试设定: /* UART初始化 */ void uart_init(void) { // OSCCAL = 0xc7;//本程序测出的自动校准值(真正的漂移值) // OSCCAL = pgm_read_byte(osc_address); // OSCCAL = 0xb1;//双龙校准值 OSCCAL = 0x80;//瞎写值 UCSRB=(1<<RXEN)|(1<<TXEN)|(1<<RXCIE);//允许发送和接收 // UBRR=fosc/16/(baud+1); // UBRRL=(fosc/16/(baud+1))%256; // UBRRH=(fosc/16/(baud+1))/256; // UBRRL = 21;//3.3V的漂移测定值 UBRRL = 25;//标准值 UBRRH = 0; UCSRC=(1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);//8位数据+1位STOP位 } OSCCAL逼近"曲线": 00 00 02 FE 04 FE 06 FE 18 FE 1B FE 1C FE 1F FE 20 FE 23 FE 24 FE 27 FF 38 FF 3B FF 3C FF 3F FF 40 FF 43 FF 44 FF 47 FF 48 FF 4B FF 4C FF 4F FF 70 FF 73 FF 74 FF 77 FF 78 FF 7B FF 7C FF 7F 80 C3 C4 C7 C8 CB CE CF 50 51 56 57 58 59 5E 5F 60 61 62 63 6C 6D 6E 6F 78 79 7A 7B 7C 7D 7E BF C0 C1 C2 C3 C4 C5 C6 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 由于初始化OSCCAL = 0x80即内部RC振荡器设置的发生频率很低,故头2个数据0x00实际为 OSCCAL = 0x80的启始位+0x80的低位...到倒数第3行的0xBF时,即OSCCAL = 0xbf时,串口刚能接收到正确 的数据,所以,OSCCAL = 0xbf是临界值(在UBRRL = 25时)... 但本程序还是要继续逼近真值OSCCAL = 0xc7!!!!!!!! -----此内容被hotpower于2005-01-09,21:12:58编辑过 |
||
|
|
|
|
【9楼】 hotpower 菜农 积分:2136 派别: 等级:------ 来自:西安大雁塔村 |
再给出测试报告的最后一页...等马老师给AVR菜鸟批改"作业"...
软件测试设定: /* UART初始化 */ void uart_init(void) { // OSCCAL = 0xc7;//本程序测出的自动校准值(真正的漂移值) // OSCCAL = pgm_read_byte(osc_address); // OSCCAL = 0xb1;//双龙校准值 OSCCAL = 0xff;//瞎写值 UCSRB=(1<<RXEN)|(1<<TXEN)|(1<<RXCIE);//允许发送和接收 // UBRR=fosc/16/(baud+1); // UBRRL=(fosc/16/(baud+1))%256; // UBRRH=(fosc/16/(baud+1))/256; // UBRRL = 21;//3.3V的漂移测定值 UBRRL = 25;//标准值 UBRRH = 0; UCSRC=(1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);//8位数据+1位STOP位 } OSCCAL逼近"曲线": FF FF FF FE FE FD FD FC FC FB FB FA FA F9 F8 F9 F8 F7 F6 F7 F6 F5 F4 F5 F4 F3 F2 F3 F0 F3 F2 F1 F0 EF EE ED EC EB EA E9 E8 E7 F6 F5 D4 D3 D2 D1 D0 CF CE CD CC CB CA C9 C8 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 |
||
|
|
|
|
【10楼】 hotpower 菜农 积分:2136 派别: 等级:------ 来自:西安大雁塔村 |
快速逼近算法"曲线"...
测试值: OSCCAL = 0x00; 00 00 00 00 00 81 C8 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 测试值: OSCCAL = 0x80; 00 00 00 00 80 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 测试值: OSCCAL = 0xb1; 61 B1 CF C4 C8 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 测试值: OSCCAL = 0xc7; C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 测试值: OSCCAL = 0xff; FF FF 7F C8 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 C7 |
||
|
|
|
|
↑↑↑↑↑↑↑↑↑↑↑↑ 抱歉本贴的回复数太多,为了减轻网络流量,只显示帖子正文的前后各10个回复。本贴的正文内容中间隐藏了37个回复。你需要 点击此处 才能查看全部内容。 对为你带来的访问不便表示歉意。不过我们仍会坚持即使没有登录,仍能共享我们网站的所有资料。你没有 登录后就能消除这个访问上的不便(可增加到显示60个回复)。 如果你是新用户请先 注册。注册是免费的,并且手续简单只需要填写用户名与口令。 ↓↓↓↓↓↓↓↓↓↓↓↓ |
|
【48楼】 skyman 积分:30 派别: 等级:------ 来自: |
讨论这个东西真得很无聊,有那个闲心多用在实际的东西上吧,如果就少两个脚没办法用,扩充一下或者干脆换一颗大片,没必要那么烧包,况且校正后也还是有温漂等问题存在。晶振多便宜,几毛钱的东西要在这里积极外外讨论半天,累不累。 | ||
|
|
|
|
【49楼】 luole700 积分:15 派别: 等级:------ 来自:杭州 |
有些场合对体积也有要求,而且一个晶振是便宜,一万个就不便宜了,楼主好帖!~ | ||
|
|
|
|
【50楼】 why777 积分:1 派别: 等级:------ 来自: |
05年的贴,现在08年了,都三年了楼主的“防火墙”在哪呢,发帖子要厚道啊~~
问题本来很简单,干嘛弄得那么神神秘秘的 本贴被 why777 编辑过,最后修改时间:2008-04-30,14:10:00. |
||
|
|
|
|
【51楼】 trueboy 积分:169 派别: 等级:------ 来自: |
现在09年了 | ||
|
|
|
|
【52楼】 wuqiyang 积分:16 派别: 等级:------ 来自: |
明年2010年了 | ||
|
|
|
|
【53楼】 xukaiming 积分:323 派别: 等级:------ 来自:湖南长沙 |
MARK | ||
|
|
|
|
【54楼】 snailchen 箫寒客 积分:92 派别: 等级:------ 来自:杭州 |
已经2010了.. | ||
|
|
|
|
【55楼】 wangsidongcx 积分:70 派别: 等级:------ 来自: |
真正的2010年了,唉,…… | ||
|
|
|
|
【56楼】 liliuqun 积分:134 派别: 等级:------ 来自: |
记号 | ||
|
|
|
|
【57楼】 gdmfq 小马哥 积分:435 派别: 等级:------ 来自:广东广州 |
顶 | ||
|
__________________________ 人生在高潮时享受成就,人生在低潮时享受生活! |
|||
|
|
|
|
↑↑↑↑↑↑↑↑↑↑↑↑ 抱歉本贴的回复数太多,为了减轻网络流量,只显示帖子正文的前后各10个回复。本贴的正文内容中间隐藏了37个回复。你需要 点击此处 才能查看全部内容。 对为你带来的访问不便表示歉意。不过我们仍会坚持即使没有登录,仍能共享我们网站的所有资料。你没有 登录后就能消除这个访问上的不便(可增加到显示60个回复)。 如果你是新用户请先 注册。注册是免费的,并且手续简单只需要填写用户名与口令。 |
| ↑↑  快速回复帖子主题:想与各位探讨有关AVR的内部RC振荡器校准及补偿问题 |
| 你尚未登录,不能回复以上帖子。 |
| AVR (原ourAVR.com) 技术论坛 -> 分类清单 -> 想与各位探讨有关AVR的内部RC振荡器校准及补偿问题 | 跳转至: | 未登录 |
| 任何建议或投诉,欢迎随时与我们联系。 ourDEV.cn 我们的电子开发网,友好交流气氛,乐于开源共享,“这里远比混乱的现实世界美好”。 | ||||
| 网站负责人: | 阿莫(armok),手机:13433056000,电邮:armok ourdev.cn(请将空格改成@) | |||
| 地址与电话: |
东莞市东城八一路同沙工业园内,0769-22298000,传真请按4 阿莫邮购门市与雕刻机展示厅:东莞市莞城区莞太路和生文具礼品批发市场A2018,A2035 杨小姐 13711915767 雕刻机的技术咨询、订单查询、生产进度,可查询:13600266008吴先生(雕刻机设计人员kaif_w) |
|||
| 声明: |
本网站由东莞科士通(Infostone)科技有限公司属下的阿莫电子邮购部提供独家赞助。 有正式的工商注册与网站备案。详情可到东莞工商局查询。 本网站(ourDEV.cn)原名称为ourAVR.com(我们的AVR),自2007-09-01起从专业的AVR网转成综合电子网站。 本网站系统由armok Using Oracle + Java/JSP + WebLogic + Linux 2001/12/20 -- 2007/09/13 本BBS所有代码均为原创,版权归 armok 所有。本网站自:2004-10-03,16:31:17 起开始运行。 |
|||
| 法律顾问: | 本网站尊重知识产权,自2007年08月15日起,魏龙律师担任ourDEV.cn(原ourAVR.com)常年法律顾问。 | |||