Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
08.09.2010, 21:41
|
|
Временная регистрация
Регистрация: 30.08.2010
Сообщений: 48
Сказал спасибо: 0
Сказали Спасибо 24 раз(а) в 17 сообщении(ях)
|
Генератор случайных чисел на Atmel контроллере
Кто поделится соображениями по созданию генератора случайных чисел.
|
|
|
Сказали "Спасибо" AssemblerRu
|
|
|
08.09.2010, 22:02
|
|
Прописка
Регистрация: 28.09.2006
Сообщений: 144
Сказал спасибо: 11
Сказали Спасибо 95 раз(а) в 51 сообщении(ях)
|
Re: Генератор случайных чисел на Atmel конторллеров
в stdlib.h есть функция rand() и srand()
PHP код:
|
rnd=rand() % N; /* Присвоит переменной rnd случайное значение от 0 до N-1 */
|
PHP код:
|
srand(n); rnd=rand() % N; /* Присвоит переменной rnd случайное значение от n до N-1 */
|
Максимальное значение N=0x7fff
Последний раз редактировалось harchenko_pavel; 08.09.2010 в 22:05.
|
|
|
Сказали "Спасибо" harchenko_pavel
|
|
|
08.09.2010, 22:10
|
|
Супер-модератор
Регистрация: 08.09.2007
Адрес: Kyiv, Ukraine
Сообщений: 7,967
Сказал спасибо: 429
Сказали Спасибо 3,939 раз(а) в 1,690 сообщении(ях)
|
Re: Генератор случайных чисел на Atmel контроллере
Здесь эта задача уже была решена.
__________________
Выслушай и противную сторону, даже если она тебе и противна!..
|
|
|
Сказали "Спасибо" Falconist
|
|
|
08.09.2010, 23:40
|
|
Супер-модератор
Регистрация: 08.09.2007
Адрес: Kyiv, Ukraine
Сообщений: 7,967
Сказал спасибо: 429
Сказали Спасибо 3,939 раз(а) в 1,690 сообщении(ях)
|
Re: Генератор случайных чисел на Atmel контроллере
А вот что пишут Хоровиц и Хилл:
__________________
Выслушай и противную сторону, даже если она тебе и противна!..
|
|
|
Эти 2 пользователя(ей) сказали Спасибо Falconist за это сообщение:
|
|
|
09.09.2010, 03:52
|
|
Вид на жительство
Регистрация: 14.10.2009
Сообщений: 338
Сказал спасибо: 35
Сказали Спасибо 92 раз(а) в 73 сообщении(ях)
|
Re: Генератор случайных чисел на Atmel контроллере
Я проверял как работает генератор псевдослучайных чисел на CVAVR результаты удручают. Псевдо случайность очень примитивная и повторы имеют место быть в весьма малый промежуток времени (10мин), но повторения идут со смещением на единицу. Тоесть если было число 20 то через 10 минут выпадает 21, еще через 10минут 22 и т д.
Причем мозайка "повторов" имеет и реально неповторяемые элементы в соотношении примерно (1:100) 1 процент из 1000 вызовов функции.
PHP код:
|
unsigned int i; char buffer[10]; srand(0xF3); while (1) { i++; delay_ms(100); lcd_cputpixel(rand(),rand(), BLACK); lcd_gotoxy(0,9); sprintf(buffer,"I=%d",i); lcd_puts(buffer); };
|
__________________
Найди путь или проложи сам!
Последний раз редактировалось MasterMushi; 09.09.2010 в 03:55.
|
|
|
Сказали "Спасибо" MasterMushi
|
|
|
09.09.2010, 05:10
|
|
Почётный гражданин KAZUS.RU
Регистрация: 28.02.2010
Сообщений: 2,297
Сказал спасибо: 53
Сказали Спасибо 461 раз(а) в 392 сообщении(ях)
|
Re: Генератор случайных чисел на Atmel контроллере
Задействуйте Внешний СЛУЧАЙНЫЙ источник , помню- Стабилитрон - хорошо в ходу ходил. Белый Шум ..- на АЦП
Но- Программно- куча- творчества , сдвиговые- с исключением- Классика ...
Upd ... забыл сказать - в Тепловом шуме - распределение - не равномерное , не совсем- Белое...просто в Задаче - не было - распределения..
Последний раз редактировалось OlegNZH; 09.09.2010 в 05:34.
|
|
|
Сказали "Спасибо" OlegNZH
|
|
|
09.09.2010, 08:55
|
|
Частый гость
Регистрация: 20.07.2006
Сообщений: 37
Сказал спасибо: 2
Сказали Спасибо 7 раз(а) в 4 сообщении(ях)
|
Re: Генератор случайных чисел на Atmel контроллере
Например для трех случайных чисел.
На что будете делить-умножать переменную "а" - это на свой вкус.
Также и чему будет равна при старте
static long a = ххххх
тоже на свой вкус.
Код:
|
// returns random integer from 1 to lim
//
int rand1(int lim)
{
static long a = 100001;
a = (a * 125) % 2796203;
return ((a % lim) + 1);
}
//
// returns random integer from 1 to lim (Gerhard's generator)
//
int rand2(int lim)
{
static long a = 1; // could be made the seed value
a = (a * 32719 + 3) % 32749;
return ((a % lim) + 1);
}
//
// returns random integer from 1 to lim (Bill's generator)
//
int rand3(int lim)
{
static long a = 3;
a = (((a * 214013L + 2531011L) ›› 16) & 32767);
return ((a % lim) + 1);
} |
|
|
|
Сказали "Спасибо" sasareccer
|
|
|
10.09.2010, 20:53
|
|
Временная регистрация
Регистрация: 30.08.2010
Сообщений: 48
Сказал спасибо: 0
Сказали Спасибо 24 раз(а) в 17 сообщении(ях)
|
Re: Генератор случайных чисел на Atmel контроллере
Сообщение от OlegNZH
|
Задействуйте Внешний СЛУЧАЙНЫЙ источник , помню- Стабилитрон - хорошо в ходу ходил. Белый Шум ..- на АЦП
|
Да вы правы это на мой взгляд наиболее удачное решение
Подскажите со схемой подключения самого стабилитрона
|
|
|
Сказали "Спасибо" AssemblerRu
|
|
|
10.09.2010, 21:17
|
|
Заблокирован
Регистрация: 23.08.2010
Сообщений: 541
Сказал спасибо: 20
Сказали Спасибо 93 раз(а) в 78 сообщении(ях)
|
Re: Генератор случайных чисел на Atmel контроллере
Стандартное включение, но ток через стабилитрон намного ниже минимального тока стабилизации... Да поиском... шняга известная...
|
|
|
Сказали "Спасибо" аtаs_stas
|
|
|
13.09.2010, 10:37
|
|
Вид на жительство
Регистрация: 09.10.2009
Сообщений: 356
Сказал спасибо: 21
Сказали Спасибо 64 раз(а) в 46 сообщении(ях)
|
Re: Генератор случайных чисел на Atmel контроллере
Стабилитрон нужон совковый. Импортные стабилитроны слабо шумят. Со стабилитрона усилить желательно ОУ. Далее можно компаратор поставить и отстроить пороги, или же завести на встроенный компаратор.
__________________
Делая дело нужно в него верить на все 100%, иначе неизбежно будут возникать ошибки подпитывающие подсознательное сомнение.
|
|
|
Сказали "Спасибо" OneTech
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 15:25.
|
|