打印

关于AVR,怎能不说点废话

[复制链接]
楼主: yewuyi
手机看帖
扫描二维码
随时随地手机跟帖
61
hqGBoY| | 2007-7-11 09:55 | 只看该作者 回帖奖励 |倒序浏览

来学学...

使用特权

评论回复
62
gtw| | 2007-7-11 12:32 | 只看该作者

请认真看看数据手册

67楼,
你用cksel选择的只是cpu的时钟……

晕倒,仔细看看数据手册吧。

使用特权

评论回复
63
gtw| | 2007-7-11 12:34 | 只看该作者

好好想象

如果定时器使用频率不确定的时钟源,自然定时的结果也是不确定的。

使用特权

评论回复
64
zsmbj| | 2007-7-11 13:20 | 只看该作者

yewuyi提出的问题确实是一个很尖锐的问题。

估计atmel当初写eeprom的时候确定了RC是8M,然后弄了一个很接近的速度。要求RC频率不能超过8M。这是写eeprom没有问题。

后来估计atmel测试芯片的RC不像他们手册里说的1%,2%的精度啥的。就开始修改手册,把RC的精度放大。但是他们可能没有想到当放大到10%的时候,就和他们的eeprom的写时序冲突了。导致了自相矛盾。

使用特权

评论回复
65
灌水匠人| | 2007-7-11 13:58 | 只看该作者

71楼,你说选择了外部晶振后RC仍然是8M?

使用特权

评论回复
66
zsmbj| | 2007-7-11 15:34 | 只看该作者

72楼,是的。写eeprom始终用内部8M rc。

这是atmel手册里写的,不是我说的。我的意见和yewuyi相同。

如果你仔细再看看M8,就知道了,M8里提及了,他写eeporm是内部的1Mhz rc。

使用特权

评论回复
67
winloop| | 2007-7-11 15:45 | 只看该作者

大品牌。。。

使用特权

评论回复
68
winloop| | 2007-7-11 15:59 | 只看该作者

大品牌也不能摆架子。。。

使用特权

评论回复
69
ayb_ice| | 2007-7-11 16:07 | 只看该作者

随便说说

有问题或是感觉有问题那就换MCU了,不必非要在一颗树上吊死,世上也不止它ARV一种内核,比AVR好的大把...

使用特权

评论回复
70
农民讲习所| | 2007-7-11 16:18 | 只看该作者

俺认为可以这样解决

设置EECR为:EEPM1=0,EEPM0=1 只擦模式
写EEPROM
设置EECR为:EEPM1=1,EEPM0=0 只写模式
写EEPROM

这时候应该时间基本能满足10%的误差要求。如果还要追求保险,继续:
写EEPROM

即进行两次写操作。

使用特权

评论回复
71
gtw| | 2007-7-11 18:01 | 只看该作者

可以注意的一点是

m48的数据手册的修订。
伴随着每次修订,内部RC的初始精度由1%变为3%,到现在的10%,并且把初始精度描述的部分由正文悄悄的转到了附录部分。
这样都不能用了!
atmel是不是不想生产m48了?如果这样,我要抓紧换成m8。

使用特权

评论回复
72
gtw| | 2007-7-11 18:08 | 只看该作者

yewuyi提的和zsmbj说的应该是一致的

就是现在内部RC的初始精度和原来写EEPROM对内部RC精度的要求冲突了。

使用特权

评论回复
73
灌水匠人| | 2007-7-11 18:08 | 只看该作者

73楼,我看过m32的datasheet也是说内部1M写eeprom

 而且也时钟选择无关。
那如果选择了8M的RC振荡时钟,1M的时钟又从哪里来呢?分频?

使用特权

评论回复
74
gtw| | 2007-7-11 18:30 | 只看该作者

...

还是那句话:





你用cksel选择的只是cpu的时钟……



请搞清楚

使用特权

评论回复
75
灌水匠人| | 2007-7-11 18:40 | 只看该作者

ls,我同意你说的

 但这也是问题:如果你选择了内部1M的RC作为CPU时钟的话,那么8MHz的RC从哪儿来的呢?是不是这1M是经过8分频的?

使用特权

评论回复
76
szsfy| | 2007-7-11 19:43 | 只看该作者

哈哈,有意思

个人认为,最多是芯片的资料写得不够严谨,厂商给出的参数都比较有余量,使用上不会有什么问题。可以挑出一些频率偏高的芯片,写一段测试程序,反复读写EEPROM,看看出错的情况。

使用特权

评论回复
77
zsmbj| | 2007-7-11 20:08 | 只看该作者

82楼,灌水匠人

M8本身就有4个rc振荡器,不管你的程序运行选择几M,那个1M的时钟在工作,提供给EEprom写。这和你选择无关。

还有M48本身就是8M的rc,不管你程序如何设置,eeprom都是用这个8M的rc。

我还查阅了老的8515,他根本没有内部rc振荡。手册里说:
“The write access time is in the range of 2.5 - 4ms, depending on the V  voltages. A self-timing function, ”
那么这个2.5-4ms的时钟肯定不能从外部晶振获得,应该也有一个内部rc振荡。只不过手册里没说明。

使用特权

评论回复
78
zhiwei| | 2007-7-11 20:15 | 只看该作者

到atmel

atmel网站找M48的文档共有4个,Automotive栏有1个,Mega栏下3个文档。找的好辛苦只在04/07Priminary版中找到了你说的这个表格(306页)。
    04/07Priminary版是这版是初稿,原文讲解不详,由于其它版本都说出厂在3V25度下标定到1%,所以表格里面的这个10%应该是个笔误。很明显,不可能用户在7.3~8.1MHz范围内能标定到1%而原厂做不到。
    Automotive03/07版(这是个详细版),无此表格,原文讲解很详细,原文如下:
At 3V and 25°C, this calibration gives a frequency of 8 MHz ± 1%. The tolerance of the internal RC oscillator remains better than ±10% within the whole automotive temperature and voltage ranges (2.7V to 5.5V, -40°C to +125°C). The oscillator can be calibrated to any frequency in the range 7.3 - 8.1 MHz within ±1% accuracy, by changing the OSCCAL register. 
说出厂3V25度下标定到1%,下一句,说内部RC振荡器最差的汽车级温度情况下也不会超出10%的偏差。这句话前面是句号,并未承接上文,所以这里的10%偏差是指振荡频率并不是原厂标定基础上还会再飘10%之多。我的理解可能是振荡极限情况,即最高电压、最高温度,正向最大标定值的情况下也不会超过10%,也就是说无论如何振荡频率都不会超出8.8MHz....。EEPROM的超过8.8MHz不能写,所以内部RC无论如何都满足EEPROM的写操作。
    请大家一起讨论,理解这个问题,不知道询问AVR官方有何解释?

使用特权

评论回复
79
minicatcat| | 2007-7-11 20:28 | 只看该作者

不太懂!!!

既然知道写EEPROM与晶振有关,为什么不用外部晶振,就不用效了吗?

使用特权

评论回复
80
hotpower| | 2007-7-11 23:00 | 只看该作者

找马老师上夜校去~~~

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则