Маленький микроконтроллер (8-битный Atmel) управляет несколькими источниками света, чтобы представить световое шоу со множеством необычных рандомизированных последовательностей источников света.
Подходящий псевдо-RNG прекрасно справляется со своей задачей, но я ищу для него хорошее зерно. Семя будет необходимо, потому что, если кто-то включает несколько таких устройств одновременно, будет не очень хорошо, если они будут генерировать одинаковые последовательности эффектов, пока они не разойдутся медленно из-за крошечных различий в их индивидуальных источниках синхронизации.
Очень хороший метод для посева псевдо-RNG, который я часто использовал, возможен в случае устройства, которое должно запускаться нажатием кнопки или щелчком переключателя. Как только микроконтроллер включен, можно запустить очень быстрый таймер, и значение этого таймера запускает ГСЧ, как только кнопка нажимается в первый раз.
Проблема в том, что в этом сценарии нет кнопок. Программа должна запуститься сразу после включения устройства.
Место на печатной плате крайне ограничено (может подойти только несколько самых маленьких SMD-деталей), поэтому я ищу самое маленькое и простое из возможных решений. Поэтому я исключу такие причудливые решения, как настоящие аппаратные средства ГСЧ, радиоприемники и т. Д.
Все, что у меня есть, это 16-битный таймер-счетчик в процессоре и неиспользуемый порт-порт, который имеет доступ к АЦП.
Мое текущее решение состоит в том, чтобы просто использовать резистор (настолько неточный, насколько это возможно), чтобы подать примерно половину напряжения питания на вывод АЦП, и подать на ГСЧ первое значение преобразования АЦП. Однако в настоящее время большинство 10% резисторов имеют погрешность менее 1% (было бы забавно представить лицо поставщика, когда я скажу им, что мы хотим найти резисторы SMD самого низкого качества, которые они могут найти), поэтому существует очень высокая вероятность несколько единиц, начиная с одного семени.
Лучшей альтернативой было бы сделать несколько преобразований и построить значение из наименее значимых битов этих измерений. Однако раньше я использовал АЦП такого типа, и я знаю, что он очень точный. Здесь может помочь запуск АЦП на максимально возможной скорости.
У кого-нибудь есть лучшее предложение? Не требуется, чтобы семена были равномерно распределены, но чем равномернее распределение, тем лучше. 16-битное начальное число с совершенно равномерным распределением было бы слишком хорошей мечтой, чтобы быть правдой, но я думаю, что приличного распределения на 5 или 6 битов может быть достаточно.