Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Сгенерировать случайное число
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему
Страницы: 1, 2
@Ark
Цитата(rv3dll(lex) @ Aug 14 2008, 08:31) *
... тода зачем вообще делать возможность пользователю "искать случайное число"
на сколько я понимаю все устройства прежде чем упаковать их в корпус и положить на склад проверяются. вот на этом этапе и надо присвоить номер - 1 раз и навсегда
на плате предусмотреть поле для корочения - ту самую кнопку
можно поставить даже скрытую кнопку (нажимать булавкой) и сделать это фичей
подключили плату к источнику - нажали кнопочку - состояние таймера записалось во флеш
проверили надели корпус и положили на склад.

Примерно так это и делается. smile.gif
Но, более правильно, все-таки, оставить возможность для повторной генерации номера в виде спецфункции. Так как возможно случайное совпадение номеров устройств, "сброс" EEPROM и т.п...
rv3dll(lex)
Цитата(@Ark @ Aug 14 2008, 13:12) *
Примерно так это и делается. smile.gif
Но, более правильно, все-таки, оставить возможность для повторной генерации номера в виде спецфункции. Так как возможно случайное совпадение номеров устройств, "сброс" EEPROM и т.п...


я про это и говорю - кнопочка поиска нового случ числа должна быть недоступна для случайного обиходного нажатия - типа ресета в ноуте.

по её нажатию и искать новое число и переписывать еепром
xelax
Цитата(Ledmaster @ Aug 13 2008, 21:12) *
Да, дополнительные пару долларов себестоимости, это как раз то, что нужно для радиобрелка! smile.gif


Изобретение доморощенных средств на коленке может стать ещё дороже. smile.gif
rv3dll(lex)
Цитата(xelax @ Aug 14 2008, 16:37) *
Изобретение доморощенных средств на коленке может стать ещё дороже. smile.gif


в радиобрелках самая дорогая вещь сертифика кодировки
@Ark
Цитата(rv3dll(lex) @ Aug 14 2008, 16:32) *
я про это и говорю - кнопочка поиска нового случ числа должна быть недоступна для случайного обиходного нажатия - типа ресета в ноуте.

Лишняя кнопочка в брелке (которая используется раз год) - IMHO, роскошь. smile.gif Конечно можно, контактные площадки замыкать, но тогда нужно разрешать пользователю вскрывать устройство. Что не есть хорошо...
Наиболее приемлемый вариант - это некая специальная последовательность действий для перехода в режим генерации номера. Например, нажатие и удержание сразу нескольких кнопок в момент включения питания, или что-то в этом роде...
Sat360
Если есть несколько кнопок, то действительно, зачем огород городить?
Даже если кнопка одна, написать в юзергайдере "для присвоения номера надо зажать кнопку, вставить батарейки, в течении 5 секунд нажать на кнопку 3 раза, и в течении еще 10 секунд не нажимать ее". Или любую другую морзянку wink.gif
Это гарантирует и защиту от случайной смены адреса, и дает сразу кучу временных интервалов (7), на основании которых можно что-то сгенерировать.
rv3dll(lex)
Цитата(Sat360 @ Aug 15 2008, 07:17) *
Это гарантирует и защиту от случайной смены адреса, и дает сразу кучу временных интервалов (7), на основании которых можно что-то сгенерировать.


для сертификации такого прибора заставят положить в комплект к нему секундомер.!

это даёт гарантию что при плохом контакте в кнопках отсыревщего брелка с ним будет всё что угодно.

стоимость брелка примерно 200 рублей себестоимость 50-100 - стоимость кнопки рубль
да в россии все хотят сверхприбыли

если разобрать брелок хорошего квартирного замка - кнопка сброс там есть.

Цитата(@Ark @ Aug 14 2008, 17:38) *
Лишняя кнопочка в брелке (которая используется раз год) -


не лишняя - а сервисная за эту возможность можно и денег взять

кстати если алгоритм кодировки нормальный, то даже 2 одинаковых брелка, находясь на разных точках ПСП кодировки не будут друг другу мешать
@Ark
Цитата(rv3dll(lex) @ Aug 15 2008, 09:06) *
... при плохом контакте в кнопках отсыревшего брелка с ним будет всё что угодно.

... кнопочка "сброс" тоже может случайно замкнуть от сырости, или, например, от вибрации (при падении брелка)... поэтому, что надежнее - на самом деле довольно спорный вопрос...

Цитата(rv3dll(lex) @ Aug 15 2008, 09:06) *
... не лишняя - а сервисная за эту возможность можно и денег взять

Взять, конечно, можно, если дадут... Иногда между ценой 200р и 199р есть весьма существенная разница. Впрочем, это уже не по теме...
UniBomb
А радиокнопка передаёт какую-то информацию (последовательнсть байт)? Умеет ли она принимать данные? Если ответы на эти вопросы положительные, то смею предложить следующий алгоритм:

При подаче питания на устройтсво оно начинает посылать команду (один из байтов которой - адрес устройства, ну или вообще один байт). Также в программе должно быть записано, что если оно принимает данные, содержащие его адрес, то он должен выдать определённый ответ. Так вот если ответ на команду не поступил, то устройство присваивает себе этот номер. Если же ответ поступил, то адрес инкрементируется и всё повторяется заново.

Алгортм основывается на том, что человек просто не в состоянии вставить одновременни две батарейки (исключая вероятность обладания пытливого ума, при котором он привлечёт товарища и они попытаются вдвоём по команде вставлять батарейки), посему время между включением одного брелка и другого будет вполне достаточно для определения свободности номера...
DpInRock
Это устройство умеет только передавать. И никаких ПСП. Строго пакет соот. протоколу. Почти ЧМ.
Лишних кнопок и выводов нет. Вообще. Кнопки могут находится в любом состоянии. Никаких индикаторов нет. 99% времени кнопка спит как убитая и вовсю экономит электричество.

Уже многочисленные эксперименты с памятью - около 200 раз - НИ РАЗУ не дали совпадающих чисел (16 разрядов).

Хуже того. Попробовал это на другом Пике (было под рукой устройство.). Эффект тот же. Там правда, недолго пробовал. Пару раз.
rx3apf
Цитата(DpInRock @ Aug 16 2008, 02:10) *
Уже многочисленные эксперименты с памятью - около 200 раз - НИ РАЗУ не дали совпадающих чисел (16 разрядов).
Хуже того. Попробовал это на другом Пике (было под рукой устройство.). Эффект тот же. Там правда, недолго пробовал. Пару раз.

Но может так получиться, что при смене технологии производства картина изменится. Всякое бывает...
DpInRock
Пытаюсь отучиться решать проблемы, которых еще нет.
@Ark
Цитата(DpInRock @ Aug 16 2008, 03:02) *
Пытаюсь отучиться решать проблемы, которых еще нет.

Еще стоит попытаться отучиться использовать недокументированные и ни кем не гарантированные возможности... wink.gif
DpInRock
Нет. Состояние памяти после сброрса - ДОКУМЕНТИРОВАНО!!!!!
См. даташиты.
Состояние памяти данных и многих регистров по включению питания определяется как "unknown" - т.е. НЕИЗВЕСТНОЕ ЗАРАНЕЕ. А это полностью совпадает с определением случайного числа.
zltigo
Цитата(DpInRock @ Aug 16 2008, 12:31) *
Состояние памяти после сброрса - ДОКУМЕНТИРОВАНО!!!!!

Вот только схоластических толкований тут еще и не хватало. Если хотите можете делать что угодно,только не надо пытаться на документацию ссылаться sad.gif.
DpInRock
Триггеры без цепей сброса устанавливаются в состояние, определяемое шумами, погрешностями (неравномерностью) технологии и прочими СЛУЧАЙНЫМИ факторами.
Следовательно статическая память будет содержать случайные
числа.

Закон природы. Если есть чем возразить по существу - welcome.
Rst7
Цитата
Триггеры без цепей сброса устанавливаются в состояние, определяемое шумами, погрешностями (неравномерностью) технологии и прочими СЛУЧАЙНЫМИ факторами.


Вы знаете топологию триггеров, параметры областей легирования и т.д. чтобы утверждать это? Во всем диапазоне питающих напряжений и температур?

Вам предложили реальный вариант, основанный не на схоластических толкованиях, а на реальной физике, которая будет всегда - использование некоррелированности частот WDT и INTRC. Вы его не захотели принять, видите-ли, Вам сложно написать процедуру (ну вообщем да, действительно, конечный автомат).

Ну, как говорится, Бог в помощь.
DpInRock
Ответ не по существу. Триггеры без цепей сброса устанавливаются в случайное состояние независимо от технологии. (Но в зависимости от допусков в технологии).

А писать автомат при 57 словах свободной памяти в уже проверенной программе - очень неинтересно. Хотя и можно. Но очень хочется иметь хоть небольшой запас на некие более важные манипуляции в будущем.

Тем более, что моя схоластическая теория уже подтверждена практикой. Уже на 300 изготовленных устройств нет ни одного совпадения. Еще осталось изготовить 700. Тенденция - на лицо.

А у вас пока ТОЛЬКО теория.
@Ark
Цитата(DpInRock @ Aug 16 2008, 20:58) *
...

По существу.

Дело не в теории или технологии, а в Вашем подходе к решению проблемы.
В ДШ используются термины "неопределенное", "неизвестное", и даже "непредсказуемое" состояние регистров, а не "случайное". Это далеко не одно и то же! При одной технологии, оно может быть действительно случайным, а при другой - вполне может стать закономерным, зависимым от каких-то факторов, как Вам уже указывали. Производитель Вам ничего не обещал. Точнее - обещал, что, в этом плане, ничего Вам не гарантирует. Именно так нужно трактовать указанные термины!

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

По моему скромному мнению, разработчик не имеет права "закладываться" на подобные вещи, как бы этого не хотелось, и каким бы простым и очевидным не казалось решение. Иначе, с ним просто опасно иметь дело...

Кстати, я бы не рискнул использовать даже предложенный способ с WDT. Нет гарантий, что он не будет выдавать одно и то же значение при попытке смены текущего номера устройства...

P.S. Вообще, лучше не решать проблемы, а предотвращать их появление.
И спать спокойно...
Ledmaster
Цитата(DpInRock @ Aug 16 2008, 22:58) *
Тем более, что моя схоластическая теория уже подтверждена практикой. Уже на 300 изготовленных устройств нет ни одного совпадения. Еще осталось изготовить 700. Тенденция - на лицо.
А у вас пока ТОЛЬКО теория.

Как тут не вспомнить слова Георгия Буркова в "Иронии судьбы...": "Мы не будем полагаться на случай, мы кинем жребий!" smile3046.gif

Вот элементарная теория: если каждое из тысячи устройств получает один из 65536 номеров СОВЕРШЕННО СЛУЧАЙНЫМ ОБРАЗОМ, то вероятность совпадения номеров составит 1000/65536 ~ 0.015, т.е. 15 совпадений на 1000! Это при нормальном распределении вероятностей. Если элементарным событием считать установление триггера в 0 или 1, какое-то из этих событий для каждого триггера может быть более вероятным, скажем, из-за не совсем симметричной топологии.
Вероятность же того, что два номера совпадут, составляет 99.94% !

Почитайте на досуге http://ru.wikipedia.org/wiki/Парадокс_дней_рождения
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.