[AVR单片机] 请教一个关于随机数的问题

[复制链接]
3117|10
 楼主| chenczy 发表于 2010-7-28 16:21 | 显示全部楼层 |阅读模式
例如:我有二个芯片,写的是同一个程序,二个芯片同时工作,我想在每一个芯片都能产生一个随机数或产生二个不同的数(二个芯片的数不同),请教一下该怎么做?
 楼主| chenczy 发表于 2010-7-28 16:54 | 显示全部楼层
能否通过读AVR芯片的ID号来定,或还有什么别的方法?rand()这是一个伪随机函数,做不了这个事啊
dadodo 发表于 2010-7-28 17:07 | 显示全部楼层
LZ做什么用途?防copy吗?
老的AVR有个OSCCAL可以利用一下。
 楼主| chenczy 发表于 2010-7-28 17:28 | 显示全部楼层
我用的是MEGA32L,不知道有没有?
janeslee 发表于 2010-7-28 17:32 | 显示全部楼层
用srand设置种子,种子用时间、温度、或者ADC读取一个随机电压
 楼主| chenczy 发表于 2010-7-28 17:37 | 显示全部楼层
我现在是这个种子不好找啊,时间上好像找不来这个种子,因为是同时开的机。系统上没温度和ADC功能,硬件上也没RC这个电路。难搞啊
宇宙飞船 发表于 2010-7-28 18:21 | 显示全部楼层
完全掉电后重新加电RAM中数据是随机的,这可作为一种随机源,加在定时器中去。
若有PC间的通信,这也是一个随机源,无线通信中的两机确认,这也是一个随机源。
随机源实在是太多了。。。。。
做法,就是开通一个多字节的定时器,用随机源作锁存信号。
xinzha 发表于 2010-7-29 08:05 | 显示全部楼层
完全掉电再加电还能随机?
 楼主| chenczy 发表于 2010-7-29 09:30 | 显示全部楼层
终于找到,用EEDR里的数就行了,这个数是上电是随机数,可以用这个做种子
 楼主| chenczy 发表于 2010-7-29 10:20 | 显示全部楼层
本帖最后由 chenczy 于 2010-7-29 10:21 编辑

说错了,应该是EEAR,不过好像开机几次后这个数就不会变了,郁闷。再问一下,RAM里的数不是开机是0XFF的吗?
janeslee 发表于 2010-7-29 12:31 | 显示全部楼层
M32有ADC,开机时用内部VREF,从一个ADC管脚或者内部Vbg采样电压,因为器件的离散性和外部电压的变化,读的一个值应该能做随机种子了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

141

主题

791

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部