Это да, это я в спешке сильно оговорился. Но сути заблуждений товарища ozonn это не меняет.
_________________ Платы для HLDI - установки лазерной засветки фоторезиста. ФоторезистыOrdyl Alpha 350 и AM 140. Жидкое олово для лужения плат (видео) - самое лучшее и только у меня. Паяльная маска XV501T-4 и KSM-S6189 (5 цветов). Заказ печатных плат - pcbsmac@gmail.com
while (1){ if (mod==0){ if (Sec>=5400){ sequence(); } }
if (mod==1){ if (Sec>=rantime){ sequence(); rantime = 3600 + random()%3600; } }
if (PINB & BTN){ cli(); Sec = 0; if (mod==0){ mod = 1; pulce_led(); } else { mod = 0; pulce_led(); _delay_ms(100); pulce_led(); } _delay_ms(1000); sei(); } } }
по-моему, функционал сохранен на 100%, но объем памяти код при этом всего 930 байт занимает против вашего варианта в 1060 байт или сколько там было... при этом не потребовалось заменять random()
всех делов-то - подумать над ОПТИМИЗАЦИЕЙ кода. кстати, все, что я сделал, вам советовали ранее, просто я не поленился этим советам последовать...
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
Использование модульных источников питания открытого типа широко распространено в современных устройствах. Присущие им компактность, гибкость в интеграции и высокая эффективность делают их отличным решением для систем промышленной автоматизации, телекоммуникационного оборудования, медицинской техники, устройств «умного дома» и прочих приложений. Рассмотрим подробнее характеристики и особенности трех самых популярных вариантов AC/DC-преобразователей MW открытого типа, подходящих для применения в промышленных устройствах - серий EPS, EPP и RPS представленных на Meanwell.market.
для работающей программы в МК непредсказуемые моменты могут возникать ТОЛЬКО по внешним событиям - я писал про прерывания. любые ВНУТРЕННИЕ события будут однозначно предсказуемыми.
то есть ваш подход сработает для "электронного кубика" или "однорукого бандита". но устройство, генерирующее текст, выбирая слова из массива по "случайному" индексу, будет генерировать всегда одинаковую последовательность фраз, т.е. однозначно предсказуемо.
разумеется событие внешнее. это само собой разумеется
Добавлено after 4 minutes 28 seconds:
smacorp писал(а):
Jack_A писал(а):
Особенно Энштейн
Это да, это я в спешке сильно оговорился. Но сути заблуждений товарища ozonn это не меняет.
товарищь smacorp, я не могу понять, в чем вы меня пытаетесь убедить? В том, что выборка чисел из монотонного ряда чисел, основанная на случайном событии будет не случайной?
разумеется событие внешнее. это само собой разумеется
это не разумеется само собой, т.к. речь в теме идет о программной генерации случайных чисел, а у вас фактически используется внешний генератор случайных чисел, а не внутренний.
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
разумеется событие внешнее. это само собой разумеется
это не разумеется само собой, т.к. речь в теме идет о программной генерации случайных чисел, а у вас фактически используется внешний генератор случайных чисел, а не внутренний.
внутренних генераторов случайных чисел в природе не существует. Вы в этой теме ведете речь о том чего нет. За сим откланиваюсь
Никак. Это только макроомрпделение номера ножки, само по себе оно ничего не далает. Запишете DDRB |= LED_R; будет выход, запишете DDRB &=~ BTN; будет вход
внутренних генераторов случайных чисел в природе не существует.
существуют. но раз вы уже откланялись - с тем и оставайтесь да и речь шла о другом, а именно о генераторе псевдослучайной последовательности... но где вам снисходить до реалий...
COKPOWEHEU писал(а):
запишете DDRB &=~ BTN; будет вход
только в случае, если вывод всегда сохраняет свою функцию входа, делать вот этого DDRB &=~ BTN; вообще не надо (как я и поступил в своем варианте кода) - DDRВ и так обнулен полностью после сброса.
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
На состояние после сброса по умолчанию я бы не стал полагаться, имею печальный опыт. Но если состояние пинов в процессе работы не собирается меняться, то DDRB можно прописать прямым присваиванием, как в моем варианте кода.
На состояние после сброса по умолчанию я бы не стал полагаться, имею печальный опыт.
да вы что? а как же вы, например, на аппаратный таймер полагаетесь, а на аппаратный сброс - нет? если не верить в аппаратную часть, надо идти в дворники...
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
только в случае, если вывод всегда сохраняет свою функцию входа, делать вот этого DDRB &=~ BTN; вообще не надо (как я и поступил в своем варианте кода) - DDRВ и так обнулен полностью после сброса.
Я это приводил в качестве иллюстрации перевода вывода из произвольного состояния в состояние входа. Для абстрактного куска кода. Например, если этот вывод используется иногда для входа, иногда для выхода.
Jack_A писал(а):
если состояние пинов в процессе работы не собирается меняться, то DDRB можно прописать прямым присваиванием, как в моем варианте кода.
Вот это ИМХО самое простое и правильное решение. Одной командой за 2-3 такта настроить все выводы порта вместо побитной настройки. В редких случаях, правда, это может ухудшить читаемость кода
Карма: 29
Рейтинг сообщений: 651
Зарегистрирован: Сб май 14, 2011 21:16:04 Сообщений: 2708 Откуда: г. Чайковский
Рейтинг сообщения:0 Медали: 1
Jack_A писал(а):
На состояние после сброса по умолчанию я бы не стал полагаться, имею печальный опыт.
Я тоже не понимаю. Вы предлагаете все регистры инициализировать или какие-то выборочно? И почему следует, например, верить что некая команда выполнит заявленное в ДШ , но не следует верить, что регистр будет инициализирован указанным значением? Что за печальный опыт?
_________________ Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
если не верить в аппаратную часть, надо идти в дворники...
Верить - это к церковникам. А единожды упершись в МК, который работал через опу, в то время как полсотни остальных с той же прогой работали как надо, анализом установил, что один бит в регистре ( подробности не помню за давностью) становится не в ту позицию по умолчанию. Разбирать что с ним случилось - на эксперименты времени не было - заказчики, график поставки . Прописал ему что надо в регистр - песня! С тех пор взял себе за правило - всю инициализацию прописывать. Речь шла о потоке в солидной фирме, и мое "верю - не верю" шеф просто не понял бы. Конечно, если речь идет о кухонном таймере любимой теще - можно и "по вере" написать, но на произваодстве главное - надежность, а не твое "верю - не верю". В дворники не собираюсь, в своем ремесле достиг достаточно приличных результатов. Сейчас, увы, на пенсии А насчет почему - можно, перелистывая бесчисленные Errata Sheet, доискиваться, что "в партиях с XXXX по YYYY имеется вот такая за$бень, потому будьте бдительны", я предпочел решение в лоб. СпойлерНесмотря на разногласия в вопросах веры , Вас из friend-list'а не убираю
Я тоже не понимаю. Вы предлагаете все регистры инициализировать или какие-то выборочно? И почему следует, например, верить что некая команда выполнит заявленное в ДШ , но не следует верить, что регистр будет инициализирован указанным значением? Что за печальный опыт?
Произошел сбой, некая команда не выполнила заявленной в ДШ, прыгнула на свободное место, мк дошагал до конца и запустился с нулевого адреса, но со значениями регистров которые были на момент сбоя...
ps. Давно авр-ми не занимался, сейчас ради интереса скомпилировал вариант от ARV(gcc -Os), получил 804 байта.
Карма: 29
Рейтинг сообщений: 651
Зарегистрирован: Сб май 14, 2011 21:16:04 Сообщений: 2708 Откуда: г. Чайковский
Рейтинг сообщения:0 Медали: 1
Reflector писал(а):
Произошел сбой, некая команда не выполнила заявленной в ДШ, прыгнула на свободное место, мк дошагал до конца и запустился с нулевого адреса, но со значениями регистров которые были на момент сбоя...
Если опасаться такого сбоя, который мог бы просто завесить МК, то проще определить причину выполнения начального кода и сделать соответствующие шаги. АВР это умеет.
_________________ Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения