if (RND < 1) PORTB &= ~(1 << 2); // установить 0 в бите 2 (10-й пин)
else PORTB |= (1 << 2); // установить 1 в бите 2 (10-й пин)
Как просто записать переменную в бит порта не нашёл.
Не помогло. Помог отказ от цифровой случайной последовательности. В одном полупериоде AnalogRead с потенциометра (на 24 микросекунды), в другом - AnalogRead наводок на А1. Всё симметрично, макс частота - 20 кГц, ну и пока ладно. Только нужны шумы, чтобы были наводки (кто-то должен стоять рядом и громко ругаться матом ) Не хочу лепить дополнительный сдвиговый регистр
На таймерах попробуй сделать. На сколько я помню, там 62кГц вроде можно максимум. На 328-й три таймера. Калькулятор для таймеров есть в нете. В обработчике прерываний от таймеров на голом асме будет (push, sreg, in, xor, out, sreg, pop) 7 тактов + вход-выход из вектора. Или на голом таймере, вроде у AVR есть режим TOGGLE PIN, не помню. На трёх таймерах можно 6 сигналов генерить. Не помню, помоему на avrstudio можно классный компактный код генерить, там же и таймера посчитать. Давно на авр не шкодил)))
Я сейчас остановился на замене штатного рандома или чтения из ранее заполненного массива чем-то более стабильным, чтобы фронты не дрожали. Всё остальное уже нормально работает. Если можно найти какой-нибудь быстро меняющийся бит, чтобы оттуда можно было читать, то больше ничего не нужно. А если что-то добавлять, то можно слепить внешний сверхрегенератор на одном транзисторе, как источник шума.
Почитай как устроен ПОРТ в контроллере. Можно прочитать БИТ, инвертировать его и записать обратно. ТРИ команды на асме. Это про авр. На кортексах асм гоОораздо “интереснее” , есть онлайн ресурсы, описания и тд.
Ну да, я от аппаратной как раз хотел уйти. Там 555-й таймер, сдвиговый регистр (LFSR), пара D-триггеров и логика. Здесь рандом - это типа “данные” для дальнейшей обработки в макете. От ардуины нужны 3 цифровых выхода. Пока вижу самое простое решение - добавить внешний шум, всё остальное работает нормально.
Ну, если получать стандартно по функции random () или выводом из ранее заполненного массива, то импульсы на выходах нестабильные (фронты “гуляют” в пределах до 5 мкс)