搜索
bottom↓
回复: 61

想与各位探讨有关AVR的内部RC振荡器校准及补偿问题

[复制链接]

出0入0汤圆

发表于 2005-1-8 23:45:33 | 显示全部楼层 |阅读模式
近日对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编辑过

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2005-1-9 00:47:33 | 显示全部楼层
请做点好事,把官方提供的资料先整理告诉大家。

点击此处打开armok0127582.pdf

点击此处打开armok0127583.pdf

点击此处下载armok0127584.zip

点击此处下载armok0127585.zip

出0入0汤圆

 楼主| 发表于 2005-1-9 02:52:21 | 显示全部楼层
谢谢马老师...





今天大概看了一下,思路应该与波特率自动校准技术雷同吧...




-----此内容被hotpower于2005-01-10,00:11:56编辑过

出0入0汤圆

 楼主| 发表于 2005-1-9 19:44:23 | 显示全部楼层
马老师:



    学生我已实现AVR的内部RC振荡器自动校准及补偿...



实际上,在我第1次为RC郁闷时,就立即将INT0接RXD,...因为我搞过几年仪表计量...



我现在也只看了"一眼"您给的ATMEL官方提供的资料...因为我要自己从郁闷中走出来...



您自称是"另类",学生我肯定是"异类"了...



现在我不需要"外部激励RXD"来校准AVR的内部RC振荡器...



正在"烤机"和优化"算法"..."误人子弟"我也是做不出来的...

出0入0汤圆

 楼主| 发表于 2005-1-9 20:07:49 | 显示全部楼层
这是串口的"调节记录",准备优化算法,使其迅速逼近正确点...

从下面可以看出调节用了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

出0入0汤圆

 楼主| 发表于 2005-1-9 20:13:16 | 显示全部楼层
再给一组测试值,可以看出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编辑过

出0入0汤圆

 楼主| 发表于 2005-1-9 20:23:22 | 显示全部楼层
再给一组测试值,可以看出好像都要经过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

出0入0汤圆

 楼主| 发表于 2005-1-9 20:38:45 | 显示全部楼层
再给一组测试值,可以看出如果在写入时就写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

出0入0汤圆

 楼主| 发表于 2005-1-9 21:08:27 | 显示全部楼层
实际的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编辑过

出0入0汤圆

 楼主| 发表于 2005-1-9 21:16:27 | 显示全部楼层
再给出测试报告的最后一页...等马老师给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

出0入0汤圆

 楼主| 发表于 2005-1-9 22:50:42 | 显示全部楼层
快速逼近算法"曲线"...



测试值:

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

出0入0汤圆

 楼主| 发表于 2005-1-9 23:13:54 | 显示全部楼层
恭喜自己用了近5个小时攻克了AVR的内部RC振荡器校准及补偿问题...



郁闷的hs12232-9...明天吧...



真累呀...只休息了4个小时...下辈子打死我也再不干了...

出0入0汤圆

 楼主| 发表于 2005-1-10 00:39:44 | 显示全部楼层
看到马老师上线,现在交"作业"--实验原始记录报告...

出0入0汤圆

发表于 2005-1-10 02:35:48 | 显示全部楼层
应先讲清楚原理吗,让大家了解的思路和算法。给个UART初始化和一串232的输出结果是不是买关子?

出0入0汤圆

 楼主| 发表于 2005-1-10 08:32:43 | 显示全部楼层
关键是没什么原理和道理。。。



我想先探讨后论述主要是害怕有人说:“我早已。。。”



所以,正因为太简单,故。。。但确实很实用。。。

出0入0汤圆

 楼主| 发表于 2005-1-10 13:12:25 | 显示全部楼层
马老师:

    学生俺并非"卖关子"...只是不想误人子弟了...先让大家自己想想看,这样会提高"功力"的...

出0入0汤圆

发表于 2005-1-10 22:21:28 | 显示全部楼层
咦?这也会下去?帮up上去。



自动RC校正对于使用内部RC振荡器的工程来说是必须的,不然,那么多的(比如1K)芯片,都要读RC校正值,再改程序,未免太累人。



因为自己没什么水平,一直不敢随便跟着叫好,以免影响hotpower DX和马老师的交流。现在帮个忙,冲前面去。



并期待后续!

出0入0汤圆

 楼主| 发表于 2005-1-11 00:22:41 | 显示全部楼层
哈哈...实际学生我在20年前搞仪表计量了6年时间...



我知道这是学生交的一篇"水文"...



我肯定会将原理及源程序公开发表的,现在主要等花农先做完这篇作业...让他动动大脑...



以免"花心太重"...



及早发表肯定会误人子弟的!!!!!!!!!

出0入0汤圆

发表于 2005-1-12 09:23:38 | 显示全部楼层
我的设想实现自动校准,占用0空间

串口下载线(特制的,必须由mcu控制)

写入测试程序,和下载线配合精确测量频率误差

得到校准值,重复测试



写入新程序,写入校准值

出0入0汤圆

发表于 2005-1-12 09:33:02 | 显示全部楼层
是否是对OSCCAL连续赋值(作为激励),检测输出信号周期来判断此时主频率.HOTPOWER的办法是不是这个意思啊

出0入4汤圆

发表于 2005-1-12 09:52:56 | 显示全部楼层
期待

出0入0汤圆

发表于 2005-1-12 16:55:40 | 显示全部楼层
呵呵,前辈就是不一样啊,我是懒人,是不会这么做的:)



等前辈给答案了

出0入0汤圆

 楼主| 发表于 2005-1-12 18:57:02 | 显示全部楼层
正在研究各种校准方法...



目前的方法是"频率漂移放火墙",只要频率漂移立即纠正...



可以应用在M8L和M16L中...正在整理文档...

出0入0汤圆

发表于 2005-2-1 23:53:16 | 显示全部楼层
hotpower大叔,我一直在期待您的频率漂移防火墙,不晓得是否可以早点看到您的美文。因为发现您最近迷上了C++玩AVR,好象有点乐不思归,特提醒一下。嘿嘿

出0入0汤圆

 楼主| 发表于 2005-2-2 00:14:51 | 显示全部楼层
哈哈,“频率漂移防火墙”确实已通过本人的“验收”,并在5V和3.3V下进行烤机实验。



今天电波表程序刚刚完成,明天开始用电波表检验“频率漂移防火墙”的实战能力.



GCCAVR C++菜鸟玩MCU C++“乐不思归”--确实在自我陶醉...没想到代码效率不错...

出0入0汤圆

发表于 2005-2-5 00:01:00 | 显示全部楼层
年前能见到实战之文吗,希望描述一下原理,我的GCC还在摸索阶段,可能看不太明白你程序中的“颜如玉”,呵呵

出0入0汤圆

 楼主| 发表于 2005-2-7 12:37:14 | 显示全部楼层
今天终于找到和我思路雷同的好文,供大家参考!!!



内部RC振荡器校准

出0入0汤圆

发表于 2005-2-8 02:04:57 | 显示全部楼层
前辈依然尤抱琵琶。。。。。。。。

出0入0汤圆

发表于 2005-2-8 08:36:50 | 显示全部楼层
当用于精确定时或串行通讯时最好不要采取“内部RC振荡器”方式,特别是批量生产时更不好办,温漂和电压波动都是大问题。

出0入0汤圆

发表于 2005-2-8 13:16:02 | 显示全部楼层
HOTPOWER老大硬是不肯带我这菜菜,只好昨晚3:00自力更生啃了啃ATMEL的那篇关于OSCCAL校正的文档,基本上的思路还是不停的对OSCCAL赋值,然后检测和外部标准频率的相位差,一个反馈--重新赋值的过程,其中提到一个办法就是逼近法赋值,这样经过若干个比较过程最终得到精确的赋值,每次更改过OSCCAL以后要等待时钟重新稳定才可以进行频率比较.



另外不同代的AVR的RC振荡器挺不同的,MEGA8,16内部有四个独立的振荡器对应1,2,4,8M,所以有4个校准值,属于AVR的第4代片内振荡器.MEGAx8系列内部只有一个8M的振荡器,是AVR的第5代片内振荡器



HOTPOWER老前辈逼着我外语长进啊,可您好歹也说点什么啊

出0入0汤圆

发表于 2005-12-30 20:16:13 | 显示全部楼层
不知道大家怎么想的,既然要用到串口,做出来的板子还放不下一个晶振?非要去校准,闲IO口少,可以换个稍微多一点的嘛,我只想知道是不是如果选择8M的内部晶振是不是最多也就是在8M附近混了,看了半天,有的说能上到200%也就是说16M,有的说只能有微小的调整,真不知道该信谁的,还有CPU稳定性和串口稳定性好像不是一个概念,最好大虾们给我们解答的时候还是指明比较好,如果是CPU不稳定,PC值到处飞的话的确是不可取,谁也不希望自己做的东西经常"死机",如果CPU很稳定,只是在串口通讯的时候会影响波特率的话在不用串口的时候还可以用.我用Attiny2313,要越快越好,如果选择20SI的话本可以用到20M,但内部只有8M的RC,也不知道能不能用校正的方法尽量提高频率,希望大虾教我,谢谢 QQ:35986596

出0入0汤圆

发表于 2005-12-30 20:48:15 | 显示全部楼层
不就是一个自动波特率校准吗,何至于此?  我来扔一个:



在联接上之前,由PC以固定间隔发一个特征码:只要不是00H或FFH就行了。



先对OSCCAL置0,然后开启串口接PC收特征码,当然,这个时候收到的多半是错的。

没关系,OSCCAL=OSCCAL+1,再重新接收,直到找到第一个接收正确的OSCCAL值,记下。



找到就完成校准了吗?没有!



继续OSCCAL=OSCCAL+1,找到接收开始出错的OSCCAL值,再记下。



以找到的两个值的平均值为OSCCAL,正式开始接收,回应PC。



什么?这个程序不会写?那就当我什么都没说过。。。



什么?对这个校准后的精度还不满意?



哪....让我想想....



对呀,UBRR好象也是可以这样处理的。

出0入0汤圆

发表于 2006-1-28 23:41:32 | 显示全部楼层
以前曾经做过一个程序,采用的也是所谓的自动校准方法,下位机是51芯片。原理很简单,上位机发送的数据中开头是一个固定的数据(0Xf8),下位机其实一直在读取串行接收的低电平。当出现低电平后开始计时,当出现高电平的时候就停止计数,并将所计的数据进行运算后,计算出波特率,然后开始通讯。一次通讯完成后,下位机工作,任务完成会重新回到这个地方来等待下次自动校准。这个地方用F8是为了给运算的程序一点时间。

出0入0汤圆

发表于 2006-2-25 16:30:04 | 显示全部楼层
hotpower 菜农  继续期待您的"频率漂移放火墙",只要频率漂移立即纠正

出0入0汤圆

 楼主| 发表于 2006-2-25 18:09:10 | 显示全部楼层
哈哈,菜农最近抓生产,这个找到一定发...





GCCAVR之C++

出0入0汤圆

 楼主| 发表于 2006-2-25 18:13:38 | 显示全部楼层
真是喜欢这里...



出0入0汤圆

发表于 2006-6-13 08:25:04 | 显示全部楼层
典型的中国菜农,说了半天,等于没有说,浪费时间啊

出0入0汤圆

发表于 2006-7-2 21:22:34 | 显示全部楼层
楼上各位大虾说的东东,好象单凭借单片机自身的系统是无法完成矫正功能的,必须上位机在通讯前发送一个特征吗给单片机 ,而且这个特征吗必须是单片机程序里设定好的,比如菜农选择的是C7, 这个特征吗可以随便取,但是如果上位机不是你编的 或者说是一个通用的软件,或者说上位机没有纠正这个功能,单片机的这样的纠正方法就没有用了.所以这些的前提是上位机软件也是你自己遍的 或者是和你一起合作的伙伴做的 你们之间定了自己的协议.

不知道我说的对不对?

出0入0汤圆

发表于 2006-7-2 21:36:08 | 显示全部楼层
我想菜农大虾搞的那么神秘,可能心理在想看你们几个小子会不会自己努力去研究.呵呵

对于菜农对于电子的热爱和研究精神很敬佩.但是中国传统的留一手思想大大影响了我们电子人往更高的水平发展.多少武林秘籍就失传了.我很喜欢这句话"站在巨人的肩膀上"请广大电子前辈或者有任何心得的电子伙伴们都能发扬自己当巨人的思想.不管是不是小问题,能帮忙的都给出具体详细的答案.中国人人人都是龙,组合在一起应该是巨龙,而不是小日本说的虫.

你可能是第一个巨人,当第二个人站住你的肩膀上时候,第二个巨人就更加高了,可能若干个循环之后 你又成为了最高的巨人,其实对自己也是一种成长. 我毕业换过两份工作了,半年换了一次,工作了还不如在学校里学的多.老板总是不断的在抄电路,程序也在抄.为何中国的电子总是停留在低级的抄袭呢?和中国的国情有关系外,更多的我想是广大电子人都不愿意当巨人,都想让自己的巨人永远的放在家里.深怕别人站的比自己高.我喜欢自由软件思想,我选择GCC

我喜欢OURAVR,这里有很多自愿让别人站在自己肩膀上的巨人.希望更多的巨人能站出来.

期待中国的电子成为世界的巨人.

出0入0汤圆

发表于 2006-7-12 00:00:27 | 显示全部楼层
看到这里都不清楚怎样可把TINY13的内部RC频率调高到20M



是使用软件(在自己的代码里写入:OSCCAL=0x7f;)



还是通过编程器(ISP)的方法写入校准值就可呢????

出0入0汤圆

发表于 2006-7-12 16:14:16 | 显示全部楼层
看过后,一时没什么收获。我还要好好琢磨一下。

顶一下。

出0入0汤圆

发表于 2006-8-22 21:10:58 | 显示全部楼层
既然AVR有内部的RTC,为什么不用内部的RTC去校正内部RC了,一个想法,看看哪位大侠有办法具体的实现。

出0入0汤圆

 楼主| 发表于 2006-9-1 21:56:12 | 显示全部楼层
【41楼】说得是一种好方法~~~实际没什么神秘的,只要用"外部资源"即可校准"内部资源"RTC.



注意: 自己是不能"校准"自己的~~~

出0入0汤圆

发表于 2006-9-2 22:17:43 | 显示全部楼层
HOTPOWER早就说他因为要用RTC.外部肯定有个CRYSTAL.

出0入0汤圆

发表于 2006-12-27 12:40:19 | 显示全部楼层
把酷帖顶起!把酷帖顶齐!

出0入0汤圆

发表于 2007-1-8 17:20:25 | 显示全部楼层
支持39楼,各位大虾只知道在那里拽,根本不发一些实际的东西,如果要外界的基准在校正内部RC的话,我就不明白为什么不接一个晶振,如果说用上位机每次发命令之前来发一串矫正字节的话,用31楼的方法就可以了,这样也只使用与低速和稳定性要求不高的场合,正如31楼说的,很简单的一件事。而真正我们想了解的问题,实际工作的频率通过校正能达到多少M的问题却没有人解答,如果hotpower总是抱着这么拽的态度来发贴的话,还不如不发。总体感觉ouravr上有些帖子很浮,根本没有互相讨论的气氛。

出0入0汤圆

发表于 2007-1-9 10:25:26 | 显示全部楼层
要从HOTPOWER的水中提出油出来.

RTC必须用表振.所以我看了就想到H就是用这个办法的,也难怪他说不出口!我也说不出口,但是还是忍不住在43楼说了!



"实际工作的频率通过校正能达到多少M的问题却没有人解答"

我也要想想小车校正后会不会可以变大车?

出0入0汤圆

发表于 2007-1-11 22:44:22 | 显示全部楼层
你们这些都自认为是前辈高人学识渊博,确没有一个能真正帮人解决问题的。象那个什么农的口水话说了一大通。没有一点实际的东西。如我有此能耐的话我会一五一十从头到尾说过明明白白。让大家都能明白都能解决自己的疑惑和问题.而不是在这里高谈阔论。希望这些人能够自已反醒反醒。想留一手的话就不要到这里来讲,这里是论坛是互相学习互相帮助共同进步的地方。不是大喊口号卖关子的地方。

出0入0汤圆

发表于 2007-5-11 13:10:33 | 显示全部楼层
讨论这个东西真得很无聊,有那个闲心多用在实际的东西上吧,如果就少两个脚没办法用,扩充一下或者干脆换一颗大片,没必要那么烧包,况且校正后也还是有温漂等问题存在。晶振多便宜,几毛钱的东西要在这里积极外外讨论半天,累不累。

出0入0汤圆

发表于 2008-1-14 20:33:27 | 显示全部楼层
有些场合对体积也有要求,而且一个晶振是便宜,一万个就不便宜了,楼主好帖!~

出0入0汤圆

发表于 2008-4-30 13:52:16 | 显示全部楼层
05年的贴,现在08年了,都三年了楼主的“防火墙”在哪呢,发帖子要厚道啊~~
问题本来很简单,干嘛弄得那么神神秘秘的

出0入0汤圆

发表于 2009-5-31 20:14:09 | 显示全部楼层
现在09年了

出0入0汤圆

发表于 2009-8-6 16:02:50 | 显示全部楼层
明年2010年了

出0入0汤圆

发表于 2009-8-7 14:56:00 | 显示全部楼层
MARK

出0入0汤圆

发表于 2010-1-8 17:42:22 | 显示全部楼层
已经2010了..

出0入0汤圆

发表于 2010-1-15 16:45:08 | 显示全部楼层
真正的2010年了,唉,……

出0入0汤圆

发表于 2010-4-21 06:59:02 | 显示全部楼层
记号

出0入0汤圆

发表于 2010-4-21 08:46:05 | 显示全部楼层

出0入0汤圆

发表于 2011-6-1 22:07:37 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-6-1 22:09:57 | 显示全部楼层
2012了

出0入0汤圆

发表于 2011-8-3 21:28:43 | 显示全部楼层
MARK RC校准有可能就会用得到了

出0入0汤圆

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

本版积分规则

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

GMT+8, 2024-4-28 04:09

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

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