Sebuah mikrokontroler kecil (Atmel 8-bit) mengontrol sejumlah lampu untuk menghadirkan pertunjukan cahaya dengan banyak urutan cahaya acak yang bagus.
Pseudo-RNG yang cocok melakukan tugasnya dengan baik, tapi saya mencari benih yang bagus untuk itu. Sebuah seed akan diperlukan karena jika seseorang menyalakan beberapa perangkat seperti itu pada saat yang sama, itu tidak akan terlihat bagus jika mereka semua menghasilkan urutan efek yang sama sampai perlahan-lahan terpisah karena perbedaan kecil dalam sumber clock masing-masing.
Metode yang sangat baik untuk menabur pseudo-RNG, yang sering saya gunakan, mungkin dalam kasus perangkat yang harus dimulai dengan menekan tombol atau membalik saklar. Segera setelah μc dinyalakan, timer yang sangat cepat dapat dimulai, dan nilai timer ini menabur RNG segera setelah tombol ditekan untuk pertama kalinya.
Masalahnya adalah, dalam skenario ini, tidak ada tombol. Program harus dimulai segera setelah perangkat dihidupkan.
Tempat pada PCB sangat terbatas (tidak lebih dari beberapa bagian SMD terkecil yang mungkin cocok), jadi saya mencari solusi sekecil mungkin dan paling sederhana. Karena itu saya akan mengesampingkan solusi mewah seperti perangkat keras RNG sejati, penerima radio, dll.
Semua yang saya miliki adalah penghitung waktu 16 bit di CPU, dan portpin yang tidak digunakan yang memiliki akses ke ADC.
Solusi saya saat ini adalah dengan hanya menggunakan resistor (seakurat mungkin) untuk memberikan sekitar setengah tegangan suplai ke pin ADC, dan menaburkan RNG dengan nilai konversi AD pertama. Namun, saat ini sebagian besar 10% resistor memiliki ketidakakuratan jauh di bawah 1% (akan menyenangkan membayangkan wajah pemasok ketika saya memberi tahu kami bahwa kami ingin resistor SMD kualitas terburuk yang dapat mereka temukan), sehingga ada peluang yang sangat tinggi untuk beberapa unit dimulai dengan seed yang sama.
Alternatif yang lebih baik adalah membuat banyak konversi dan membangun nilai dari bit paling tidak signifikan dari pengukuran ini. Namun, saya menggunakan ADC tipe μc ini sebelumnya dan saya tahu ini sangat akurat. Menjalankan ADC pada kecepatan tercepat mungkin dapat membantu di sini.
Adakah yang punya saran yang lebih baik? Benih tidak harus terdistribusi dengan sempurna secara seragam, tetapi distribusi yang lebih seragam adalah, semakin baik. Benih 16 bit dengan distribusi seragam sempurna akan menjadi mimpi yang terlalu bagus untuk menjadi kenyataan, tapi saya pikir distribusi setengah jalan yang layak lebih dari 5 atau 6 bit mungkin cukup.