Понятное дело, что все эти функции формируют псевдослучайные числа, которые повторяются через определённое количество вызовов. Однако в принципе есть функция srand(), которая у меня в прошивке висит в самом начале. Она позволяет задавать характер формируемой последовательности. Аргументом её также может быть число в диапазоне от 0 до 32767. Поэтому если вам хочется большей рандомности, наверняка можно вместо константы сбросить туда мгновенный отсчёт АЦП. Тем более, что все функции для работы с АЦП в мастере Codevision-а уже есть. Единственное что, я бы наверно не стал пытаться ловить наводки по воздуху, так можно и вход убить ненароком. А попробовал бы аккуратно подбросить на свободную ногу немного напряжения от вторички транса. Через делитель с большим сопротивлением и отключив (в прошивке) подтяжку на нужной ноге! Очевидно, что мгновенная фаза питания, в которую вам повезёт воткнуть вилку в розетку - событие совершенно случайное. На практике, впрочем, я чего-либо подобного пока делать не пробовал и не знаю, что из этого получится.serg_svd писал(а):А еще заметил, что rand() не совсем уж рандомные значения берет.
Приставка "Морской бриз" для вентилятора
- ejsanyo
- Встал на лапы
- Сообщения: 127
- Зарегистрирован: Чт апр 28, 2016 22:33:47
- Откуда: ARPA Internet
Re: Приставка "Морской бриз" для вентилятора
Хоронили кваку - порвали три Rocket Launcherа.©
- Реклама
- ejsanyo
- Встал на лапы
- Сообщения: 127
- Зарегистрирован: Чт апр 28, 2016 22:33:47
- Откуда: ARPA Internet
Re: Приставка "Морской бриз" для вентилятора
Чтобы не быть совсем голословным, накидал модельку в Multisim-е.

Источник V1 здесь у нас символизирует вторичку транса. Элементы рядом с ним - кусок оригинальной схемы. Ключевые элементы - делитель на резисторах R1...R3. Выход вместо осциллографа кидаем на свободную ногу контроллера. Скажем, на PB3 (канал ADC3 АЦП). И получаем на ней полусинусоиды амплитудой порядка до 4 вольт. Не забудем отключить подтяжку на соответствующей ноге:
И, соответственно, пришпилить функции для АЦП, выбрав в них нужный вход и источник опоры Vcc.
Полагаю, для пущей рандомности ещё можно опросить АЦП не один, а пару раз через небольшой интервал времени (воспользовавшись, скажем, delay_ms(), а затем по-XOR-ить результаты друг на друга.
Источник V1 здесь у нас символизирует вторичку транса. Элементы рядом с ним - кусок оригинальной схемы. Ключевые элементы - делитель на резисторах R1...R3. Выход вместо осциллографа кидаем на свободную ногу контроллера. Скажем, на PB3 (канал ADC3 АЦП). И получаем на ней полусинусоиды амплитудой порядка до 4 вольт. Не забудем отключить подтяжку на соответствующей ноге:
Код: Выделить всё
// Input/Output Ports initialization
// Port B initialization
// Func5=In Func4=In Func3=In Func2=In Func1=In Func0=Out
// State5=T State4=P State3=T State2=T State1=T State0=0
PORTB=0x10;
DDRB=0x01;Полагаю, для пущей рандомности ещё можно опросить АЦП не один, а пару раз через небольшой интервал времени (воспользовавшись, скажем, delay_ms(), а затем по-XOR-ить результаты друг на друга.
- Вложения
-
- Random.zip
- Моделька Multisim 12
- (264.5 КБ) 211 скачиваний
Хоронили кваку - порвали три Rocket Launcherа.©
Re: Приставка "Морской бриз" для вентилятора
Спасибо! Попробую. О результатах отпишусь
"Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа." Ро́берт Ше́кли
Я правильных ответов знаю мало, поэтому не стесняюсь и много спрашиваю.
Я правильных ответов знаю мало, поэтому не стесняюсь и много спрашиваю.
