Невеликий мікроконтролер (8-бітний Atmel) керує низкою вогнів, щоб представити світлове шоу з безліччю фантазійних рандомізованих послідовностей світла.
Підходящий псевдо-RNG прекрасно виконує свою роботу, але я шукаю гарне насіння для цього. Насіння буде необхідне, тому що якщо хтось одночасно вмикає кілька таких пристроїв, це не буде добре виглядати, якщо всі вони генерують однакові послідовності ефектів, поки вони повільно не відшаровуватимуться через невеликі відмінності в своїх окремих джерелах тактових годин.
Дуже хороший метод засіву псевдо-РНГ, який я часто використовував, можливий у випадку, коли пристрій потрібно запустити натисканням кнопки або перемиканням перемикача. Як тільки мкк увімкнено, можна запустити дуже швидкий таймер, і значення цього таймера заповнює RNG, як тільки кнопка натиснута вперше.
Проблема в тому, що в цьому сценарії немає кнопок. Програма повинна запускатися, як тільки пристрій увімкнено.
Місце на друкованій платі вкрай обмежене (не більше ніж декілька найменших SMD деталей можуть вміститися), тому я шукаю найменше і найпростіше можливе рішення. Тому я виключаю химерні рішення, такі як справжнє обладнання для RNG, радіоприймачі тощо.
У мене є 16-бітний таймер-лічильник в процесорі та невикористаний портпін, який має доступ до АЦП.
Моє поточне рішення - просто використовувати резистор (якомога неточніше), щоб забезпечити приблизно половину напруги живлення на контактний контактний АЦП, і засіяти RNG з першим значенням перетворення AD. Однак в даний час більшість 10% резисторів мають неточність набагато менше 1% (було б цікаво уявити обличчя постачальника, коли я їм кажу, що ми хочемо, щоб резистори SMD найгіршої якості вони могли знайти), тому є дуже високий шанс кілька одиниць, починаючи з одного насіння.
Кращою альтернативою було б зробити кілька перетворень та створити значення з найменш значущих бітів цих вимірювань. Однак я раніше використовував АЦП цього типу µc і знаю, що це дуже точно. Тут може допомогти запуск АЦП на максимально швидкій швидкості.
Хтось має кращу пропозицію? Насіння не вимагає ідеального рівномірного розподілу, але чим рівномірніше розподіл, тим краще. 16-бітове насіння з ідеально рівномірним розподілом було б занадто хорошою мрією, щоб бути правдою, але я думаю, що на півдорозі пристойний розподіл на 5 або 6 біт може бути достатнім.