roboforum.ru

Технический форум по робототехнике.


AVR - Генерация случайного числа

Программирование микроконтроллеров AVR, PIC, ARM.
Разработка и изготовление печатных плат для модулей.

AVR - Генерация случайного числа

Сообщение -= Александр =- » 21 окт 2009, 19:08

Я тут поглядел - а ведь rand() при включении питания всегда выплевывает одинаковую цепочку чисел... И без часов реального времени или какого-нить внешнего пинка получить разные (хоть и псевдослучайные) цепочки нельзя. Может как-нить шум АЦП для этого дела использовать? Кто сталкивался с такой проблемой?
Ниндзя - круче всех. Они умеют ходить по воде, делить на ноль и угадывать шаффл в АйПоде.
Аватара пользователя
-= Александр =-
Мастер Самоделкин
 
Сообщения: 3678
Зарегистрирован: 11 окт 2004, 19:20
Откуда: Россия, СПб
прог. языки: C/C++, Python, asm
ФИО: Курмис Александр Андреевич

Re: AVR - Генерация случайного числа

Сообщение repository » 21 окт 2009, 19:18

Как в мк не знаю, на компе генератор нужно иниацилизировать перед использованием и сохранять значение
Вот например:
Код: Выделить всёРазвернуть
unsigned long GetRand(void) 
{
    static unsigned long t = 1;
    unsigned long k;
   
    k = t / 12773;
    t = 16807 * (t - k * 12773) - 2836 * k;
   
    return t;
}
Можно так же поступить на МК...
Или как то так:
Hardware Random Number Generator: http://www.cryogenius.com/hardware/rng/
repository
 
Сообщения: 260
Зарегистрирован: 29 окт 2008, 18:14
Откуда: Химки МО
прог. языки: Java

Re: AVR - Генерация случайного числа

Сообщение EdGull » 21 окт 2009, 19:31

нужно мерить последние знаки ацп по питанию
Аватара пользователя
EdGull
 
Сообщения: 10211
Зарегистрирован: 28 дек 2004, 20:33
Откуда: Тольятти
Skype: Ed_Gull
прог. языки: Bascom AVR Basic
ФИО: Гуль Эдуард Викторович

Re: AVR - Генерация случайного числа

Сообщение contr » 21 окт 2009, 20:12

нужно мерить последние знаки ацп по питанию

диапазон будет маленьким
Можно подать на АЦП любой изменяющийся сигнал, в т.ч. и с амплитудой выше опорного. А можно с внешнего генератора прямоугольников и измерять длительность от включения МК. За счет неопределенности момента включения МК и получим случайное значение.
contr
 
Сообщения: 987
Зарегистрирован: 17 апр 2009, 15:09
Откуда: Rostov-Don
Предупреждения: -1

Re: AVR - Генерация случайного числа

Сообщение boez » 21 окт 2009, 20:33

А большой диапазон и не нужен, 1 бита достаточно. Сделать 16 или 32 измерения и слить их в одно число. Если в использованном AVR у АЦП есть предусилитель - его тоже стоит включить, станет сильнее шуметь. Если вообще нету АЦП - то надо лепить что-то к компаратору.
boez
 
Сообщения: 1981
Зарегистрирован: 27 авг 2008, 10:45
Откуда: Харьков
прог. языки: С/С++

Re: AVR - Генерация случайного числа

Сообщение =DeaD= » 21 окт 2009, 20:51

А еще можно в EEPROMе считать сумму байт и брать за основу при включении девайса ;)
И дописывать туда естественно в обязательном порядке каждый раз что-нибудь эдакое.
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: AVR - Генерация случайного числа

Сообщение avr123.nm.ru » 21 окт 2009, 21:12

Может с XTAL2 через резистор 10 кОм сигнал на АЦП подать ? И по результату АЦП делать паузу до следующего АЦП - ИМХО довольно "случайно" получится.
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Re: AVR - Генерация случайного числа

Сообщение Сергей » 21 окт 2009, 21:15

сам не пробовал - может просто найти регистр в МК, значение которого по включению не определено и считать?
Сергей
 
Сообщения: 3744
Зарегистрирован: 29 дек 2004, 23:15
Откуда: Санкт-Петербург
прог. языки: C, C++, C#, Asm
ФИО: Кашликов Сергей

Re: AVR - Генерация случайного числа

Сообщение Michael_K » 21 окт 2009, 22:23

Можно мерить расхождение частот RC и кварцевого генератора (можно даже без внешних компонентов через вотчдог - только долго через ресет летать...)
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

Re: AVR - Генерация случайного числа

Сообщение contr » 21 окт 2009, 22:58

Сделать 16 или 32 измерения и слить их в одно число.

Хорошая идея! Для "орел-решка" просто бита хватит, а "кости" сливаем. И лишних деталек не надо. :good:
contr
 
Сообщения: 987
Зарегистрирован: 17 апр 2009, 15:09
Откуда: Rostov-Don
Предупреждения: -1

Re: AVR - Генерация случайного числа

Сообщение avr123.nm.ru » 22 окт 2009, 10:52

Michael_K писал(а):Можно мерить расхождение частот RC и кварцевого генератора (можно даже без внешних компонентов через вотчдог - только долго через ресет летать...)


Можно просто конденсатор добавить к предложеному выше резистору с хтал2 на АЦП - получим ФНЧ с нестабильными параметрами.
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Re: AVR - Генерация случайного числа

Сообщение =DeaD= » 22 окт 2009, 11:11

Буржуи вот чего пишут:
If you need really true randomness you need to find real world source that could inject some entropy. This could be any noisy diode connected to ADC. Such random generators are so called Hardware Random Number Generators. They often use some microscopic phenomena like thermal noise, photoelectric effect, etc.


Добавлено спустя 31 секунду:
Сам не знаю что такое, но думаю авр123 легко разберет ;)
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: AVR - Генерация случайного числа

Сообщение avr123.nm.ru » 22 окт 2009, 11:12

Дак сигнал на кварце такой и есть - с шумами и прочими заплывами, а к нему еще шумы резитора добавятся.
Последний раз редактировалось avr123.nm.ru 22 окт 2009, 12:32, всего редактировалось 1 раз.
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Re: AVR - Генерация случайного числа

Сообщение SSG » 22 окт 2009, 12:24

Можно свою функцию написать на основе линейных сдвиговых регистров или более другую. 8)
I live My life!
Аватара пользователя
SSG
 
Сообщения: 1058
Зарегистрирован: 15 янв 2007, 19:23
Откуда: Беларусь, Барановичи
прог. языки: С для МК, Delphi для ПК

Re: AVR - Генерация случайного числа

Сообщение avr123.nm.ru » 22 окт 2009, 12:34

Вобщем сигнал с XTAL2 через резистор 10 ком подаем на АЦП и АЦП шунтируем парой последовательных диодов 1N4148 на землю и получаем кучу хаотичных гармоник на входе АЦП :D

А может просто "открытую" ножку АЦП оцифровывать к которой антенна в виде проводничка на плате подключена и брать младшие биты только - самые "шумные".
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

След.

Вернуться в Микроконтроллеры

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7