Lomach 0 19 апреля, 2013 Опубликовано 19 апреля, 2013 · Жалоба Как реализовать в кейле генератор случайных чисел для 51 контроллера? Заранее спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kovigor 5 19 апреля, 2013 Опубликовано 19 апреля, 2013 · Жалоба Как реализовать в кейле генератор случайных чисел для 51 контроллера? Заранее спасибо. Функция "rand()": http://www.mir-koda.ru/full_leson.php?id=8 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Lomach 0 19 апреля, 2013 Опубликовано 19 апреля, 2013 · Жалоба Функция "rand()": http://www.mir-koda.ru/full_leson.php?id=8 Функция "rand()": http://www.mir-koda.ru/full_leson.php?id=8 Функция "rand()": http://www.mir-koda.ru/full_leson.php?id=8 Фнкция Rand будет выдавать одно и тоже число, если не использовать srand. А в srand надо записывать разные числа. По приведенной выше ссылке туда записывается time(NULL). Для контроллеров нет такой функции!!! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kovigor 5 19 апреля, 2013 Опубликовано 19 апреля, 2013 · Жалоба Фнкция Rand будет выдавать одно и тоже число, если не использовать srand Какой именно у вас МК ? Можно же взять, например, шум младшего разряда АЦП. Или время, проходящее от момента запуска любой из PLL до того момента, как она засинхронизируется (именно так я делал на LPC214x, результат очень приличный). Думайте, думайте. Я уже молчу о том, что внешний аналоговый генератор шума можно собрать на каком-нибудь стабилитроне ... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
toweroff 0 22 апреля, 2013 Опубликовано 22 апреля, 2013 · Жалоба Думайте, думайте. Я уже молчу о том, что внешний аналоговый генератор шума можно собрать на каком-нибудь стабилитроне ... С PLL да, интересно. А с внешним стабилитроном - это до тех пор, пока "пацаны-то не знают" Потом сразу начинается закорачивание входов на массу и т.д. и результат srand становится абсолютно предсказуемым Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Edit2007 3 22 апреля, 2013 Опубликовано 22 апреля, 2013 · Жалоба Чтение таймера в произвольный момент времени. Период таймера желательно иметь меньше чем период чтения его содержимого, ну и чтение должно быть несильно ко времени привязано. Можно взять два таймера, с разной частотой (периодом) счета и брать функцию от них (сумма, XOR, перемножение с отбрасыванием младшей (старшей) части, выбор из области кода по полученному индексу). Для особо продвинутых моделей можно задействовать встроенный датчик температуры для получения ШУМА АЦП. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kovigor 5 22 апреля, 2013 Опубликовано 22 апреля, 2013 · Жалоба Чтение таймера в произвольный момент времени. Вот в этом и проблема. Неясно, какой именно момент времени считать произвольным - они все так или иначе детерминированы программой, исполняющейся в МК. Я этого дела наелся по самые уши, понапробовался всяких "моментов" и больше не хочу - качество случайных чисел, генерируемых таким образом, получается очень низким. А вообще, хорошие генераторы используют множество источников энтропии, а не один. Я в своем проекте остановился на генераторе FORTUNA, разработанном Брюсом Шнайером и Нильсом Фергюсоном, который "кормлю" энтропией из пяти или шести источников: http://www.rsdn.ru/res/book/security/practicalcrypto.xml Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 22 апреля, 2013 Опубликовано 22 апреля, 2013 · Жалоба Если есть часы реального времени, можно их использовать. Если есть органы управления, замерить время между X и Y нажатиями на кнопки. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
scifi 1 22 апреля, 2013 Опубликовано 22 апреля, 2013 · Жалоба Ещё вариант: инициализировать генератор случайных чисел на этапе калибровки, в дальнейшем сохраняя состояние генератора в энергонезависимой памяти, если есть такая возможность. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ARV 0 22 апреля, 2013 Опубликовано 22 апреля, 2013 · Жалоба Ещё вариант: инициализировать генератор случайных чисел на этапе калибровки, в дальнейшем сохраняя состояние генератора в энергонезависимой памяти, если есть такая возможность.это наиболее простой путь :) при прошивке задать некий "серийный номер", который при включении питания считать и использовать для srand(), а потом при выключении питания запоминать последнее "случайное" число из rand() на месте серийного номера. в результате каждое изделие будет работать по-своему... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Fujitser 0 15 июня, 2013 Опубликовано 15 июня, 2013 · Жалоба Стандартная функция генерации псевдослучайных чисел, в качестве seed можно использовать, например, показания часов реального времени (если есть), время нажатия на какие-либо кнопки (если они есть), шум младших разрядов АЦП, и т.п. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
paskal 1 16 июня, 2013 Опубликовано 16 июня, 2013 · Жалоба В классическом 8051 без АЦП, RTC, EEPROM и.т.п. можно использовать содержимое озу при включении. На всякий случай можно перексорить весь объем. А на случай ресета, одну ячейку непрерывно менять, инкрементировать на 1 например. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться