En liten mikrokontroller (8-bitars Atmel) styr ett antal lampor för att presentera en ljusshow med många snygga randomiserade ljussekvenser.
En lämplig pseudo-RNG gör sitt jobb snyggt, men jag letar efter ett bra frö för det. Ett frö kommer att vara nödvändigt, för om någon slår på flera sådana enheter samtidigt ser det inte bra ut om de alla genererade samma sekvenser av effekter förrän de sakta glider isär på grund av de små skillnaderna i deras individuella klockkällor. / p>
En mycket bra metod för att sådd en pseudo-RNG, som jag ofta använde, är möjlig i fall av en enhet som måste startas med ett knapptryck eller en omkopplare. Så snart µc slås på kan en mycket snabb timer startas och värdet på denna timer fröer RNG så snart knappen trycks in för första gången.
Problemet är, i i det här scenariot finns det inga knappar. Programmet måste starta så snart enheten är påslagen.
Platsen på kretskortet är extremt begränsad (inget mer än några av de allra minsta SMD-delarna kan passa ), så jag letar efter den minsta och enklaste möjliga lösningen. Därför utesluter jag snygga lösningar som äkta RNG-hårdvara, radiomottagare etc.
Allt jag har är en 16-bitars timer-räknare i CPU: n och en oanvänd portpin som har tillgång till en ADC.
Min nuvarande lösning är att bara använda ett motstånd (så felaktigt som möjligt) för att ge ungefär hälften av matningsspänningen till ADC-stiftet, och sådd RNG med det första AD-omvandlingsvärdet. Men nuförtiden har de flesta 10% motstånd en felaktighet under 1% (det skulle vara kul att föreställa sig en leverantörs ansikte när jag säger till dem att vi vill ha de värsta SMD-motstånden de kan hitta), så det finns mycket stor chans att flera enheter som börjar med samma utsäde.
Ett bättre alternativ skulle vara att göra flera omvandlingar och bygga ett värde av de minst betydande bitarna av dessa mätningar. Jag använde dock ADC av denna µc-typ tidigare och jag vet att den är mycket exakt. Att köra ADC med snabbast möjliga hastighet kan hjälpa till här.
Har någon ett bättre förslag? Fröet behöver inte fördelas perfekt enhetligt, men ju mer enhetligt fördelningen är desto bättre. Ett 16-bitars frö med en perfekt enhetlig fördelning skulle vara en dröm för bra för att vara sant, men jag tror att en halvvägs anständig fördelning över 5 eller 6 bitar kan vara tillräcklig.