|
|
  |
Сгенерировать случайное число, Возможно ли? |
|
|
|
Aug 12 2008, 15:45
|
Местный
  
Группа: Свой
Сообщений: 215
Регистрация: 10-04-07
Пользователь №: 26 929

|
Цитата Рад в усмерть. Спасибо еще раз. Не стоит устраивать преждевременных празднований. С Пиками много не работал, не могу сказать. Но на AVR с tiny26 были случаи когда в L(Low voltage) версии память инициализировалась случайными числами, а в обычной версии контроллера - сплошными нулями. Вообщем, может полуцчится так, что на некоторых версиях это не сработает.
Сообщение отредактировал Amper25 - Aug 12 2008, 15:46
|
|
|
|
|
Aug 12 2008, 23:22
|

Местный
  
Группа: Свой
Сообщений: 211
Регистрация: 3-02-05
Пользователь №: 2 391

|
Соглашусь с Amper25: "Можно сделать гораздо проще, без всяких АЦП и пр.
При первом подключении батарейки, запустить программный 8-бит счетчик и инкрементировать его по возможности с наибольшей частотой. Одновременно записывать его значение в ячейку(или поочередно в 2 ячейки) EEPROM. Потом выдернуть батарею и опять вставить. Если время записи в EEPROM составляет 5-8мс, то если разница во временах удержания батареи разных устройств больше 5-8мс(что логично) то и "RANDOM" числа будут отличатся.
Единственное что можно добавить, лучше писать в 2 ячейки поочередно, и если питание обрывается на процессе стирания ячейки, то хотябы в одной из них будет число отличное от 0xFF. Ну и само значение 0xFF надо считать не RANDOMOM."
Если есть кнопка или свободный вход, то можно поступить так: перед включением устройства нажимаем кнопку/устанавливаем вход в нужный уровень и после включения питания в процессе инициализации проверяем ее состояние - если активно, то инкриментируем 1/2 байта, далее, после того как пользователь отпустит кнопку/деактивирует вход, считываем текущее значение переменной. Проверено - работает.
|
|
|
|
|
  |
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|