Для инициализации генератора случайных чисел вы можете прочитать напряжение, присутствующее на плавающем выводе, с помощью АЦП PIC, и установить начальное значение с помощью srand () .
. Кроме того, вы можете сохранитьначальное значение EEPROM при каждом запуске программы и чтение предыдущего начального значения из EEPROM, объедините его со значением ADC, чтобы сделать вещи менее предсказуемыми.- Я думаю, что это было бы достаточно для игры, в противном случае это было бы слишком грубо, я думаю.
unsigned int seed = read_seed_from_adc();
seed ^= read_seed_from_eeprom(); /* use something else than XOR here */
srand(seed);
write_seed_to_eeprom(seed);
Я думаю, что проблема может быть в том, что микропроцессор не «знает»время », так что, если это так, что я могу сделать, чтобы решить эту проблему?
Время обычно измеряется с помощью RTC на микроконтроллере, поэтому зависит от вашего оборудования, если RTC может бытьиспользуется (RTC обычно требуется кварцевый резонатор и резервная батарея, чтобы постоянно работать, некоторые микро используют внешний RTC).Поскольку чаще всего на микроконтроллерах используется только небольшая библиотека C, time () обычно будет недоступна, и вам придется считывать регистры RTC самостоятельно.- Его также можно использовать для инициализации PRNG.