реклама на сайте
подробности

 
 
5 страниц V  < 1 2 3 4 5 >  
Reply to this topicStart new topic
> Сгенерировать случайное число, Возможно ли?
DpInRock
сообщение Aug 12 2008, 23:41
Сообщение #31


Гуру
******

Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515



Идея с Eprom мне не нра по одной причине. Бывали случаи ( в практике), когда портилось не только то куда пишешь. Т.е. снятие питания во время записи в общем случае чревато траблами в других местах.

С кнопками - да. Но на устройстве нет ни одного элемента индикации. Очень неприятно давить кнопки наугад. Тем более - неспециалисту.


--------------------
On the road again (Canned Heat)
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Aug 12 2008, 23:47
Сообщение #32


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Цитата(DpInRock @ Aug 13 2008, 03:41) *
Идея с Eprom мне не нра по одной причине. Бывали случаи ( в практике), когда портилось не только то куда пишешь. Т.е. снятие питания во время записи в общем случае чревато траблами в других местах.

Я на 100% уверен, что время записи байта в EEPROM не может совпадать у разных экземпляров с точностью до такта процессора (точнее, дискретность будет равна времени цикла опроса флага завершения). А время записи (единицы mS) достаточно велико, чтобы прокрутить цикл по крайней мере пару сотен раз при разумной тактовой частоте...
Go to the top of the page
 
+Quote Post
domowoj
сообщение Aug 13 2008, 01:15
Сообщение #33


Профессионал
*****

Группа: Участник
Сообщений: 1 548
Регистрация: 20-12-07
Из: г.Новосибирск
Пользователь №: 33 486



Цитата(DpInRock @ Aug 13 2008, 03:39) *
Как вообще генерировать случайные числа я себе представляю.
Как генерировать их без внешних устройств - вот в этом вопрос.

А поиском в инете пользовался?
Встречал генерирование как случайных так и псевдослучайных чисел,
если интересно, вечером дам ссылки.


--------------------
И на камнях растут деревья!
Go to the top of the page
 
+Quote Post
DpInRock
сообщение Aug 13 2008, 01:17
Сообщение #34


Гуру
******

Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515



Согласен, что задержка для флэшки не должна зависить от тактовой процессора. По идее.


--------------------
On the road again (Canned Heat)
Go to the top of the page
 
+Quote Post
Ledmaster
сообщение Aug 13 2008, 04:21
Сообщение #35


Частый гость
**

Группа: Свой
Сообщений: 142
Регистрация: 18-02-08
Из: Челябинск
Пользователь №: 35 141



Конечно, обсуждаемая тема имеет некий общеобразовательный смысл, но такое решение очень ненадежно, поскольку велика вероятность совпадения "случайных" чисел, сгенерированных по одному и тому же алгоритму на почти идентичном "железе".
Вы же не собираетесь производить Ваш девайс миллионами экземпляров, так почему бы просто не прошить в каждый, намертво, уникальный (в рамках предполагаемог количества экземпляров) серийный номер? За всех не поручусь, но возможность автоматического инкрементального присвоения серийного номера достаточно часто встречающаяся в средах разработки функция (обычно находится во вкладке флэш лоадера).

Сообщение отредактировал Ledmaster - Aug 13 2008, 04:22
Go to the top of the page
 
+Quote Post
DpInRock
сообщение Aug 13 2008, 10:48
Сообщение #36


Гуру
******

Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515



Решение достаточно. Ибо случайные числа любого диапазона имеют право совпадать. Даже самые настоящие случайные числа.
Посему - все нормально.
Когда не хотят, чтобы что-то совпадало, как например MAC адреса сетевых карт, то не используют случайные числа.

Мое устройство просто в радиусе своего действия - 50 метров, не должно сталкиваться по адресам с другим устройством. И все.
А устройств в одном радиусе действия ожидается не больше двух трех. Поэтому 65536 адресов - вполне достаточно. За глаза. (Где генерируется одно случайное число, там генерируется и второе - задача эквивалентная).


--------------------
On the road again (Canned Heat)
Go to the top of the page
 
+Quote Post
rv3dll(lex)
сообщение Aug 13 2008, 11:28
Сообщение #37


Полное ничтожество
*****

Группа: Banned
Сообщений: 1 991
Регистрация: 20-03-07
Из: Коломна
Пользователь №: 26 354



Цитата(DpInRock @ Aug 13 2008, 14:48) *
Мое устройство просто в радиусе своего действия - 50 метров, не должно сталкиваться по адресам с другим устройством.


когда микрочип разрабатывал свой модуль шифрования сигналов автосигнализаций он не надеясь на случайность и количество сделал их все разными
алгоритм шифрования там достаточен чтобы поменять батарейку и после этого не ломать дверь.
как будете разруливать ситуацию разряда батареи???
Go to the top of the page
 
+Quote Post
_Ivan_33
сообщение Aug 13 2008, 11:37
Сообщение #38


fpga designer
****

Группа: Свой
Сообщений: 613
Регистрация: 20-04-08
Из: Зеленоград
Пользователь №: 36 928



простите что вмешиваюсь ...
#include <stdlib.h>
и использовать rand();
при этом указать rand_max


--------------------
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Aug 13 2008, 12:17
Сообщение #39


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Цитата(_Ivan_33 @ Aug 13 2008, 15:37) *
простите что вмешиваюсь ...
#include <stdlib.h>
и использовать rand();
при этом указать rand_max

"Шутку понял. Смешно" ©
Ну и какие результаты будут при выполнении на одинаковых кристаллах с одинаковой растактовкой и одинаковыми исходными данными ? Очень-очень условно можно _предполагать_ случайное состояние ячеек оперативной памяти, но не более того. Без привлечения дополнительных аппаратных средств можно полагаться либо на время записи в EEPROM данных (у PIC16 - можно, у MSP430 - нельзя), либо на разные тактовые частоты опорного генератора и RC-тактируемого WDT (как уже было предложено). Других вариантов я, например, вообще не представляю...
Go to the top of the page
 
+Quote Post
xemul
сообщение Aug 13 2008, 12:39
Сообщение #40



*****

Группа: Свой
Сообщений: 1 928
Регистрация: 11-07-06
Пользователь №: 18 731



Запустить таймер, дождаться сброса по собаке, прочитать таймер. А с прескейлером, назначенным на таймер собаки, даже 16-битный таймер успеет несколько раз переполниться.
В новых пиках точность таймера собаки подняли, поэтому стОит или перемешивать биты, или пропустить считанное значение через CRC-образный алгоритм.
Go to the top of the page
 
+Quote Post
DpInRock
сообщение Aug 13 2008, 13:35
Сообщение #41


Гуру
******

Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515



Цитата(rv3dll(lex) @ Aug 13 2008, 15:28) *
когда микрочип разрабатывал свой модуль шифрования сигналов автосигнализаций он не надеясь на случайность и количество сделал их все разными
алгоритм шифрования там достаточен чтобы поменять батарейку и после этого не ломать дверь.
как будете разруливать ситуацию разряда батареи???

Адрес генерируется раз в жизни. И пишется во флэшку.
Устройство крайне маленькое, потреблять должно не более 5 микроампер (в среднем).

Достаточно сделать генерацию нового адреса по подсоединению батарейки, как все проблемы с совпадениями снимаются. Если совпало - просто переткни батарейку еще раз.

Но я так не сделал. Ибо на пиковый случай, когда в одном месте собираются очень много устройств (сложная система), то там присутсвует управление устройством через RS232? где ты можешь в ручную задать все параметры.

А для простых случаев - сойдет и так.

Это устройство - просто радиокнопка на 10 выключателей. Типа умный дом и все такое.
Просто встала задача при массовом тираже (всего 1000 шт. в год) упростить задачу записи разных адресов по умолчанию.


--------------------
On the road again (Canned Heat)
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Aug 13 2008, 13:53
Сообщение #42


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Цитата(DpInRock @ Aug 13 2008, 17:35) *
А для простых случаев - сойдет и так.

Это устройство - просто радиокнопка на 10 выключателей. Типа умный дом и все такое.
Просто встала задача при массовом тираже (всего 1000 шт. в год) упростить задачу записи разных адресов по умолчанию.

И все же я бы подумал и о дополнительном "аппаратном" решении. В виде хоть какого джампера/кнопки на плате, выполняющего начальный сброс устройства. Т.е. при установке батареи хоть каким из предложенных способов генерируем некоторое "суррогатное" "случайное" число, а потом в течении какого-то разумного времени пользователь должен сделать сброс. А вот в течении этого времени до сброса крутить счетчик с максимальной скоростью. Момент сброса будет вполне случайным и результат (сохраняемый в оперативной памяти) - тоже. Ну, а если все ж сброса не было, то по истечении таймаута (а то цикл сожрет много электропитания) будет то, что сгенерировалось в момент включения. В конце концов, возможность аппаратного сброса есть практически везде и повсеместно, начиная от наручных часов...

Стоп-стоп... Радиокнопка, говорите ? Т.е. кнопка уже есть ? Ну так от включения и до первого нажатия на кнопку можно медленно и печально, не особо расходуя питание, крутить какой-нибудь таймер. И по нажатию на кнопку сохранить полученный результат, который и будет требуемым "случайным числом". Или я чего-то в логике работы недопонял ?

Сообщение отредактировал rx3apf - Aug 13 2008, 14:08
Go to the top of the page
 
+Quote Post
xelax
сообщение Aug 13 2008, 13:56
Сообщение #43


Местный
***

Группа: Свой
Сообщений: 370
Регистрация: 7-11-06
Пользователь №: 22 035



Ставте DS2411 и не мучайтесь ненужными проблемами. Кнопки, еепром, ацп, память и прочее... wacko.gif
Go to the top of the page
 
+Quote Post
zltigo
сообщение Aug 13 2008, 15:13
Сообщение #44


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



А слабо внимательно перечитать пост Rst7? И не заниматся народным творчеством?


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Ledmaster
сообщение Aug 13 2008, 17:12
Сообщение #45


Частый гость
**

Группа: Свой
Сообщений: 142
Регистрация: 18-02-08
Из: Челябинск
Пользователь №: 35 141



Цитата(xelax @ Aug 13 2008, 19:56) *
Ставте DS2411 и не мучайтесь ненужными проблемами. Кнопки, еепром, ацп, память и прочее... wacko.gif

Да, дополнительные пару долларов себестоимости, это как раз то, что нужно для радиобрелка! smile.gif

А все таки, как насчет банальной сериализации? В конце концов, можно успокоится на внешней проге, которая непосредственно в .hex файл будет прописывать серийный номер и править CRC (если нужно) перед каждой прошивкой.
Go to the top of the page
 
+Quote Post

5 страниц V  < 1 2 3 4 5 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 3rd August 2025 - 10:59
Рейтинг@Mail.ru


Страница сгенерированна за 0.01477 секунд с 7
ELECTRONIX ©2004-2016