Реализовать таймер в PIC18F для генерации случайных чисел

Прошло много времени с тех пор, как я ничего не публикую здесь. Сегодня я пришел сюда за помощью в реализации таймера в микроконтроллере PIC18F. Я хочу, чтобы этот таймер использовался для использования его в качестве начального значения для функции srand()... но после долгих поисков здесь я не смог найти способ решить эту проблему.

Не могли бы вы помочь мне, пожалуйста.

Спасибо от новичка.


person Community    schedule 16.03.2013    source источник
comment
До сих пор у меня есть таймер при запуске программы. После выполнения некоторых настроек я прошу пользователя нажать кнопку. Когда он нажимает кнопку, я восстанавливаю время из этого таймера и помещаю его как начальное значение в srand. Однако то, что меня интересовало, заключалось в том, чтобы не заставлять пользователя нажимать какие-либо кнопки. Есть ли способ сделать это?   -  person    schedule 17.03.2013


Ответы (1)


Вы, кажется, не нуждаетесь в очень сложной вещи. Никаких прерываний и т. д. Запустите таймер и просто в произвольной точке кода прочитайте значение таймера, а затем подайте его в srand.

 srand(aTimeFunctionYouWrite()); // random seed USE ONCE...

теперь ваш доступ rand() рандомизирован.

В периферийной библиотеке C18 вы можете найти необходимые функции и определения. Вы можете использовать их через

 #include <timers.h>

И посмотрите в папке doc документацию.

person Ihsan    schedule 16.03.2013
comment
Привет! Спасибо за ответ. У меня примерно так и есть. У меня есть таймер, который запускается в начале программы. В какой-то момент я прошу пользователя нажать кнопку. В это время я восстанавливаю значение из таймера и использую его в качестве аргумента srand. Тем не менее, я надеялся не заставлять пользователя ничего нажимать. Так что TimeFunctionYouWrite(), есть ли какой-нибудь способ сделать это без взаимодействия с пользователем?? Кстати, я использую XC8 :) Спасибо! :) - person ; 17.03.2013
comment
Вот руководство: stackoverflow.com/questions/1558321/ - person Ihsan; 17.03.2013