2015-03-23 3 views
1

Я пишу приложение в AVR Studio 4, которое генерирует случайные числа и выводит их на семисегментный дисплей. В настоящий момент я использую семя, тогда начальное значение получает рандомизированное значение и выводится значение. Этот метод, очевидно, создает ту же последовательность случайных чисел (и отображает одну и ту же последовательность) каждый раз, когда программа запускается. Есть ли альтернативный метод, который я могу использовать, который не использует семя, и поэтому не запускает программу с таким же номером каждый раз, учитывая разные случайные числа.Создание произвольного числа AVR без семян

Благодаря

+0

У вас есть аналоговый вход на устройстве, на которое вы нацеливаете? –

+0

Да, порт A служит аналоговым входом для аналого-цифрового преобразователя. Извините, забыл упомянуть im, используя ATmega 8535. – JOsh

ответ

3

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

Единственный способ заставить его произвести другое поведение - это каким-то образом изменить его состояние при запуске, введя некоторую внешнюю информацию или сохраняя состояние между стартапами. Некоторые идеи о том, как сделать первый вариант, могут заключаться в измерении продолжительности нажатия клавиши пользователя (если у вашей системы есть кнопки) или определения температуры или другого внешнего входа и использования этого для семени алгоритма. Однако самым простым вариантом является, вероятно, просто сохранить счетчик в EEPROM, который увеличивается после каждого запуска и использует его для генерации семени.

+0

Спасибо, я думаю, это решение, которое мне нужно. – JOsh

+1

Внешний вход может быть наименее значимым битом (s?) АЦП, отбираемым несколько раз подряд. Если он не связан ни с чем, он будет довольно случайным. –

Смежные вопросы