| Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
Генератор случайных чисел на Atmel контроллере
14.09.2010, 05:27
|
#11
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 09.12.2007
Адрес: Новосибирск
Сообщений: 1,019
Сказал спасибо: 10
Сказали Спасибо 71 раз(а) в 63 сообщении(ях)
|
Re: Генератор случайных чисел на Atmel контроллере
AssemblerRu
Делать на микропроцессоре аналогоцифровой ГШ, по моему, анахронизм.
Вам же предложил уважаемый Falconist ссылку на Хоровица/Хилла -
32х разрядный сдвиговый регистр с ОС, сделайте програмную реализацию.
__________________
И на камнях растут деревья!
|
|
|
|
14.09.2010, 19:50
|
#12
|
|
Временная регистрация
Регистрация: 30.08.2010
Сообщений: 48
Сказал спасибо: 0
Сказали Спасибо 24 раз(а) в 17 сообщении(ях)
|
Re: Генератор случайных чисел на Atmel контроллере
Сообщение от OneTech
|
|
Стабилитрон нужон совковый.
|
согласен полностью
Сообщение от OneTech
|
|
Со стабилитрона усилить желательно ОУ. Далее можно компаратор поставить и отстроить пороги, или же завести на встроенный компаратор.
|
С операционником согласен а зачем еше компаратор? Ведь АЦП будет ацифровывать сигнал + шум, далее можно програмно отнять уровень сигнала и получем шум только ацифрованый во времени.
|
|
|
|
15.09.2010, 01:20
|
#13
|
|
Гражданин KAZUS.RUN
Регистрация: 04.08.2006
Сообщений: 911
Сказал спасибо: 28
Сказали Спасибо 180 раз(а) в 139 сообщении(ях)
|
Re: Генератор случайных чисел на Atmel контроллере
Сообщение от domowoj
|
AssemblerRu
Делать на микропроцессоре аналогоцифровой ГШ, по моему, анахронизм.
Вам же предложил уважаемый Falconist ссылку на Хоровица/Хилла -
32х разрядный сдвиговый регистр с ОС, сделайте програмную реализацию.
|
А если ещё точнее, то полный бред.
Вам не нравится качество генерации библиотеки компилятора? Возьмите любую книгу по математике, и сгенерируйте число по одному из кучи методов которые там описаны. С гарантированным распределением и с заданой константой повторения.
Например берём: А.Н.Цветков, В.А.Епанечников "Прикладные программы для микроэвм "Электроника Б3-34" "Электроника МК-56" "Электроника МК-54"".
Раздел: Статистика. Генерация псевдослучайных чисел.
Подразделы: Равномерный закон распределения. Нормальный закон распределения. Закон распределения Пуассона....
Берём равномерный.
1 вариант - 8000 неповторяющихся чисел.
2 - 8,9e7
3 - 4500
4 - 1e8
Правда используется математика с плавающей запятой. Но существуют тысячи способов генерации и без этого. Просто сейчас искать лень. Да и задачу надо более точно знать.
Для начальной инициализации можно задействовать например WDT или при запуске проца генерировать число и заносить его в EEPROM. Соответственно с каждым последующим запуском последовательность будет меняться. Если у вас 100 000 000 неповторяющихся чисел, то какие вопросы?
|
|
|
|
15.09.2010, 01:43
|
#14
|
|
Гражданин KAZUS.RUN
Регистрация: 08.07.2006
Сообщений: 883
Сказал спасибо: 119
Сказали Спасибо 1,108 раз(а) в 175 сообщении(ях)
|
Re: Генератор случайных чисел на Atmel контроллере
Сообщение от AssemblerRu
|
|
шум только ацифрованый
|
Его не только ацифровать нужно, а еще и атбелить. Простым языком, устранить повторяющиеся длинные последовательности одинаковых значений.
Может вы нам просто скажите зачем вам нужен этот генератор? Если не для исследовательских и не для крипто применений, то лучше использовать генератор псевдослучайной последовательности, это намного проще, быстрее и дешевле.
__________________
.

В мире всего два типа людей: те у кого был ZX Spectrum, и те у кого его не было.
|
|
|
|
15.09.2010, 04:32
|
#15
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 06.06.2008
Сообщений: 1,519
Сказал спасибо: 76
Сказали Спасибо 427 раз(а) в 365 сообщении(ях)
|
Re: Генератор случайных чисел на Atmel контроллере
Думаю, лучше чем у Дональда Кнута в "Искусство программирования" т.2 не найдете описания и анализа генераторов случайных чисел.
|
|
|
|
15.09.2010, 21:27
|
#16
|
|
Временная регистрация
Регистрация: 30.08.2010
Сообщений: 48
Сказал спасибо: 0
Сказали Спасибо 24 раз(а) в 17 сообщении(ях)
|
Re: Генератор случайных чисел на Atmel контроллере
Сообщение от nonamedov
|
|
Думаю, лучше чем у Дональда Кнута в "Искусство программирования" т.2 не найдете описания и анализа генераторов случайных чисел.
|
А могли бы вы кинуть листинг или описание пожалуста
|
|
|
|
16.09.2010, 00:52
|
#17
|
|
Гражданин KAZUS.RUN
Регистрация: 08.07.2006
Сообщений: 883
Сказал спасибо: 119
Сказали Спасибо 1,108 раз(а) в 175 сообщении(ях)
|
Re: Генератор случайных чисел на Atmel контроллере
Сообщение от AssemblerRu
|
|
А могли бы вы кинуть листинг или описание пожалуста
|
Кнута не стоит, ибо он балует умножением и делением, что микроконтроллеру лишняя нагрузка и порою значительно отьедает свободное место для программы. Лучше использовать 32 битовый сдвиговый регистр с обратной связью, как предлагал уважаемый Falconist. Скорость - бешеная, период повторения - тоже. Особенно высока производительность в конфигурации Эвари́ста Галуа́. Вот код:
|
Код:
|
static unsigned long GaloisLfsr(unsigned long lfsr)
{
// Taps: 32 31 29 1; characteristic polynomial: x^32 + x^31 + x^29 + x + 1.
return (lfsr ›› 1) ^ (unsigned long)(0 - (lfsr & 1ul) & 0xd0000001ul);;
} |
Вот один из примеров использования:
|
Код:
|
unsigned long lfsr = 1; /* Начальное значение, можно использовавть любое кроме 0 */
lfsr = GaloisLfsr(lfsr);
/* Получили в lfsr первое псевдослучайное число */
lfsr = GaloisLfsr(lfsr);
/* Получили в lfsr второе псевдослучайное число */
...
/* и так далее сколько угодно раз */ |
__________________
.

В мире всего два типа людей: те у кого был ZX Spectrum, и те у кого его не было.
|
|
|
|
16.09.2010, 09:28
|
#18
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 28.02.2010
Сообщений: 2,294
Сказал спасибо: 52
Сказали Спасибо 460 раз(а) в 391 сообщении(ях)
|
Re: Генератор случайных чисел на Atmel контроллере
..Но мы же не Знаем-для чего этот генератор нужен! Если для "расклада карт"-то-псевдо -хуже не придумаешь- всё равно для начального значения последовательности нужна Случайная! величина .
|
|
|
|
16.09.2010, 11:03
|
#19
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 21.03.2007
Адрес: М.(осква)
Сообщений: 4,398
Сказал спасибо: 2,192
Сказали Спасибо 1,780 раз(а) в 1,012 сообщении(ях)
|
Re: Генератор случайных чисел на Atmel контроллере
Сообщение от OlegNZH
|
|
для начального значения
|
Сообщение от OlegNZH
|
|
Случайная! величина .
|
И стандартный способ получение этой случайной величины - взять текущее системное время. Если программа требует начинать новую последовательность раз в минуту - сгодятся секунды. Раз в секунду - милисекунды.
Для проектов, где нет часов реального времени -
Сообщение от SasaVitebsk
|
|
Для начальной инициализации можно задействовать например WDT или при запуске проца генерировать число и заносить его в EEPROM. Соответственно с каждым последующим запуском последовательность будет меняться. Если у вас 100 000 000 неповторяющихся чисел, то какие вопросы?
|
__________________
+ 7 903 641 87 25// 1. Иногда отвечаю "по памяти" 2. Часто заблуждаюсь >> Критикуйте, не обижусь.
|
|
|
|
16.09.2010, 17:52
|
#20
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 08.10.2007
Сообщений: 2,758
Сказал спасибо: 1,100
Сказали Спасибо 1,033 раз(а) в 568 сообщении(ях)
|
Re: Генератор случайных чисел на Atmel контроллере
Сообщение от sasareccer
|
|
На что будете делить-умножать переменную "а" - это на свой вкус.
|
Здесь традиционная ошибка. Длина последовательности очень сильно зависит от этих констант. У Кнута про это есть, и про период последовательности тоже есть. Единственный вопрос - стартовое значение. Так это от задачи зависит. Генератор ключа для ssh помню просил повозить мышкой, с минуту
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 15:28.
|
|