Мало того, вероятнее всего, скомпилированный код будет полностью одинаков. Компилятор обычно хорошо понимает такие вещи как умножение/деление на 2,4,8,16 и другие степени двойки и заменяет дорогое умножение и деление дешёвыми сдвигами.
Как раз первый вариант, с делениями и умножениями, укорачивает занимаемую в AVR флеш память на целых 84 байта относительно второго варианта.
P.S. провел эксперементы, на голом проекте где она вызывается один раз, как в посте выше, разница в 14 байт. Но когда я сделал её static разница пропала. GCC у меня старенький 4.3.3 (WinAVR 20100110).
Возможно, где-то ещё в коде есть уже реализованное деление на 16, вот и получается, что переделка в этом месте деления на сдвиг только увеличивает размер кода.
Кстати, можете ли этот вариант исходников мне сбросить? Я попробую его скомпилировать у себя. Интересно сравнить, во-первых, деление и сдвиг, во-вторых, вообще посмотреть, какой получится размер кода у меня в IDE.
Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.
Привет котам! Есть вопрос по DS3231. Как их остановить? С 1307 понятно, ставим 7 бит в 0-вом регистре. В ДШ по 3231 я такой "кнопки" не нашел. Или не так искал, или они все время тикают? Подскажите, пожалуйста!
_________________ Я всё-всё узнAю и стану профессором.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Добавлено after 6 minutes 6 seconds: PS: А, ну да, тут немного не так, как у 1307. Тут выделено включение осцилятора в регистре "Control". В общем, хрен редьки не слаще. Всё есть в ДШ
У DS1307 в регистре 0x00 (секунды) седьмой бит CH (Clock Halt). 1 - часы стоят, 0 - идут. У DS3231 в регистре 0x0E (control) седьмой бит EOSC. 1 - тактовый генератор выключен (при питании от батареи), 0 - включен (при любом питании)
Вы мне показали регистр 0Е, те Control Register. Читаем: "When the DS3231 is powered by VCC, the oscillator is always onregardless of the status of the EOSC bit. Значит, при питании от Vcc таким боком остановить не получится? Так как их остановить? Надо знать, тк прогу хочу нарисовать
_________________ Я всё-всё узнAю и стану профессором.
Коллеги, в чем может быть проблема? Часики идут, на выходе SQW не могу добиться меандра. Сначала подтягивал SQW к Vcc через резистор 4K7 - постоянный плюс. Убрал подтяжку - ничего не изменилось.
Код:
// Начальная установка часов DS1307 uint8_t temp; DS1307Read(0,&temp); temp &= ~(1 << 7); // обнуляем 7 бит DS1307Write(0,temp); // запуск хода часов DS1307Write(7,_BV(4)|_BV(0)); // запускаем сигнал SQW c частотой 4 КГц. Регистры часов обновляются по падающему фронту сигнала
UPD. Какая-то фигня - снова припаял подтягивающий резистор и всё получилось.
Появились подделки/брак DS1307 DS1307+ DS1307N+ От оригинала отличается внешним видом - слева подделка, у нее по периметру гладкая отражающая поверхность, отличающаяся надпись и отсутствием внутри нагрузочных конденсаторов кварца (CL). Подделка с кварцем 2*6 скачет в 2-10 раз быстрее, с кварцем 3*8 бежит вперед на 1-3 минуты в сутки. Лечится добавлением нагрузочных конденсаторов кварца снаружи микросхемы, у меня по 10 пФ.
Может добавить эту информацию или ссылку на нее в первый пост темы?
и светодиод заморгал. Я обрадовался, отключил питание, подключил снова - светодиод не моргает. Прошиваю еще раз - не моргает. Прошиваю прошивкой с инициалиацией по первому варианту - моргает. Выключаю - включаю - не моргает. прошиваю опять второй прошивкой - заморгал.....
вообщем в итоге. Если прошивать поочередно первым вариантом, потом вторым, потом первым, потом вторым - то светодиод моргает. Но до отключения питания схемы.
Если батарейку отключать, то в 0x00 регистре старший бит устанавливается в единицу (секунды читаются как 0x80), а в этом режиме генератор 32KHz отключен - часы не тикают, никакого меандра и не будет.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения