Как раз первый вариант, с делениями и умножениями, укорачивает занимаемую в AVR флеш память на целых 84 байта относительно второго варианта.WiseLord писал(а):Мало того, вероятнее всего, скомпилированный код будет полностью одинаков. Компилятор обычно хорошо понимает такие вещи как умножение/деление на 2,4,8,16 и другие степени двойки и заменяет дорогое умножение и деление дешёвыми сдвигами.
Всё по DS1307 и прочим часам Dallas (Maxim)
- Apparatchik
- Держит паяльник хвостом
- Сообщения: 908
- Зарегистрирован: Вс май 23, 2010 13:55:42
- Откуда: Украина, Александрия
Re: Всё по DS1307 и прочим часам Dallas (Maxim)
«И всё-таки она вертится!»
- Apparatchik
- Держит паяльник хвостом
- Сообщения: 908
- Зарегистрирован: Вс май 23, 2010 13:55:42
- Откуда: Украина, Александрия
Re: Всё по DS1307 и прочим часам Dallas (Maxim)
Ну я тоже могу картинки показать:

P.S. провел эксперементы, на голом проекте где она вызывается один раз, как в посте выше, разница в 14 байт. Но когда я сделал её static разница пропала. GCC у меня старенький 4.3.3 (WinAVR 20100110).
P.S. провел эксперементы, на голом проекте где она вызывается один раз, как в посте выше, разница в 14 байт. Но когда я сделал её static разница пропала. GCC у меня старенький 4.3.3 (WinAVR 20100110).
«И всё-таки она вертится!»
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: Всё по DS1307 и прочим часам Dallas (Maxim)
Возможно, где-то ещё в коде есть уже реализованное деление на 16, вот и получается, что переделка в этом месте деления на сдвиг только увеличивает размер кода.
Кстати, можете ли этот вариант исходников мне сбросить? Я попробую его скомпилировать у себя. Интересно сравнить, во-первых, деление и сдвиг, во-вторых, вообще посмотреть, какой получится размер кода у меня в IDE.
Кстати, можете ли этот вариант исходников мне сбросить? Я попробую его скомпилировать у себя. Интересно сравнить, во-первых, деление и сдвиг, во-вторых, вообще посмотреть, какой получится размер кода у меня в IDE.
Re: Всё по DS1307 и прочим часам Dallas (Maxim)
Привет котам!
Есть вопрос по DS3231. Как их остановить? С 1307 понятно, ставим 7 бит в 0-вом регистре. В ДШ по 3231 я такой "кнопки" не нашел. Или не так искал, или они все время тикают? Подскажите, пожалуйста!
Есть вопрос по DS3231. Как их остановить? С 1307 понятно, ставим 7 бит в 0-вом регистре. В ДШ по 3231 я такой "кнопки" не нашел. Или не так искал, или они все время тикают? Подскажите, пожалуйста!
Я всё-всё узнAю и стану профессором.
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: Всё по DS1307 и прочим часам Dallas (Maxim)
Всё также, как и у DS1307 - 7-ой бит регистра "Control Register".dgrett писал(а):Как их остановить?
Плохо читали
Re: Всё по DS1307 и прочим часам Dallas (Maxim)
Так в ДШ там вбит 0, об этом бите ни слова, кухня какая-тоАlex писал(а):Всё также, как и у DS1307 - 7-ой бит регистра "Control Register".dgrett писал(а):Как их остановить?
Плохо читали
Я всё-всё узнAю и стану профессором.
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: Всё по DS1307 и прочим часам Dallas (Maxim)
Не знаю, куда Вы там смотрите, но только что скаченный даташит, говорит об обратном :
Добавлено after 6 minutes 6 seconds:
PS: А, ну да, тут немного не так, как у 1307. Тут выделено включение осцилятора в регистре "Control".
В общем, хрен редьки не слаще. Всё есть в ДШ
Спойлер
PS: А, ну да, тут немного не так, как у 1307. Тут выделено включение осцилятора в регистре "Control".
В общем, хрен редьки не слаще. Всё есть в ДШ
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: Всё по DS1307 и прочим часам Dallas (Maxim)
У DS1307 в регистре 0x00 (секунды) седьмой бит CH (Clock Halt). 1 - часы стоят, 0 - идут.
У DS3231 в регистре 0x0E (control) седьмой бит EOSC. 1 - тактовый генератор выключен (при питании от батареи), 0 - включен (при любом питании)
У DS3231 в регистре 0x0E (control) седьмой бит EOSC. 1 - тактовый генератор выключен (при питании от батареи), 0 - включен (при любом питании)
Re: Всё по DS1307 и прочим часам Dallas (Maxim)
Вы мне показали регистр 0Е, те Control Register. Читаем: "When
the DS3231 is powered by VCC, the oscillator is always
on regardless of the status of the EOSC bit.
Значит, при питании от Vcc таким боком остановить не получится?
Так как их остановить? Надо знать, тк прогу хочу нарисовать
the DS3231 is powered by VCC, the oscillator is always
on regardless of the status of the EOSC bit.
Значит, при питании от Vcc таким боком остановить не получится?
Так как их остановить? Надо знать, тк прогу хочу нарисовать
Я всё-всё узнAю и стану профессором.
- Zhuk72
- Сверлит текстолит когтями
- Сообщения: 1231
- Зарегистрирован: Ср янв 29, 2014 08:41:31
- Откуда: Баку
- Контактная информация:
Re: Всё по DS1307 и прочим часам Dallas (Maxim)
А как же продолжение той фразы:
Или static подразумевает что-то другое?
Генератор может и работает при наличии Vcc, но регистры при EOSC=1 меняться не будут.When EOSC is disabled, all register data is static.
Или static подразумевает что-то другое?
Каждый имеет право на свое личное ошибочное мнение.
У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
Re: Всё по DS1307 и прочим часам Dallas (Maxim)
В моем ДШ такого
Но если это так и регистры не меняются и на выходе идут импульсы (я пользую 1 Гц), то меня это очень даже устроит
не нашелWhen EOSC is disabled, all register data is static.
Но если это так и регистры не меняются и на выходе идут импульсы (я пользую 1 Гц), то меня это очень даже устроит
Я всё-всё узнAю и стану профессором.
- Zhuk72
- Сверлит текстолит когтями
- Сообщения: 1231
- Зарегистрирован: Ср янв 29, 2014 08:41:31
- Откуда: Баку
- Контактная информация:
Re: Всё по DS1307 и прочим часам Dallas (Maxim)
Освежите дш с родного сайта.
Каждый имеет право на свое личное ошибочное мнение.
У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
- prinv
- Вымогатель припоя
- Сообщения: 677
- Зарегистрирован: Чт янв 20, 2011 09:07:08
- Откуда: Пермь
- Контактная информация:
Re: Всё по DS1307 и прочим часам Dallas (Maxim)
Коллеги, в чем может быть проблема?
Часики идут, на выходе SQW не могу добиться меандра. Сначала подтягивал SQW к Vcc через резистор 4K7 - постоянный плюс. Убрал подтяжку - ничего не изменилось.
UPD.
Какая-то фигня - снова припаял подтягивающий резистор и всё получилось.
Часики идут, на выходе 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 КГц. Регистры часов обновляются по падающему фронту сигнала
Какая-то фигня - снова припаял подтягивающий резистор и всё получилось.
Никакая контра не уйдёт от нас
- prinv
- Вымогатель припоя
- Сообщения: 677
- Зарегистрирован: Чт янв 20, 2011 09:07:08
- Откуда: Пермь
- Контактная информация:
Re: Всё по DS1307 и прочим часам Dallas (Maxim)
Подскажите по DS3231 - в DS3107 есть очень удобные неиспользуемые ячейки памяти. Нет ли таких же ячеек у DS3231? В ДШ ничего про них не сказано.
Никакая контра не уйдёт от нас
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: Всё по DS1307 и прочим часам Dallas (Maxim)
Нет. Но, вроде бы, в DS3232 есть.
А вообще, похоже, DS3232M - идеальный вариант И корпус небольшой (SO8, в отличии от вариантов без индекса M), и "полный фарш" внутри.
А вообще, похоже, DS3232M - идеальный вариант И корпус небольшой (SO8, в отличии от вариантов без индекса M), и "полный фарш" внутри.
Re: Всё по DS1307 и прочим часам Dallas (Maxim)
Появились подделки/брак DS1307 DS1307+ DS1307N+
От оригинала отличается внешним видом - слева подделка, у нее по периметру гладкая отражающая поверхность, отличающаяся надпись и отсутствием внутри нагрузочных конденсаторов кварца (CL).
Подделка с кварцем 2*6 скачет в 2-10 раз быстрее, с кварцем 3*8 бежит вперед на 1-3 минуты в сутки.
Лечится добавлением нагрузочных конденсаторов кварца снаружи микросхемы, у меня по 10 пФ.


Может добавить эту информацию или ссылку на нее в первый пост темы?
От оригинала отличается внешним видом - слева подделка, у нее по периметру гладкая отражающая поверхность, отличающаяся надпись и отсутствием внутри нагрузочных конденсаторов кварца (CL).
Подделка с кварцем 2*6 скачет в 2-10 раз быстрее, с кварцем 3*8 бежит вперед на 1-3 минуты в сутки.
Лечится добавлением нагрузочных конденсаторов кварца снаружи микросхемы, у меня по 10 пФ.
Может добавить эту информацию или ссылку на нее в первый пост темы?
- Вложения
-
- 1307.jpg
- (59.59 КБ) 1101 скачивание
-
- DS1307.jpg
- (92.09 КБ) 1172 скачивания
Re: Всё по DS1307 и прочим часам Dallas (Maxim)
Вообщем ds1307 и attiny2313. Для начала пытаюсь добиться от ds1307 пресловутого меандра.
Для инициализациии ds1307 написал вот такую функцию (буду без пояснений и разверток всех функций, там все понятно):
меандра нет. Светодиод горит и все. Вычитал на первой странице этой темы что вначале надо нули записать на новой железке. Ок.
и светодиод заморгал. Я обрадовался, отключил питание, подключил снова - светодиод не моргает. Прошиваю еще раз - не моргает. Прошиваю прошивкой с инициалиацией по первому варианту - моргает. Выключаю - включаю - не моргает. прошиваю опять второй прошивкой - заморгал.....
вообщем в итоге. Если прошивать поочередно первым вариантом, потом вторым, потом первым, потом вторым - то светодиод моргает. Но до отключения питания схемы.
где я туплю в пятницу вечером?
Для инициализациии ds1307 написал вот такую функцию (буду без пояснений и разверток всех функций, там все понятно):
Код: Выделить всё
IICStart();
IICByteWrite (0xD0);
IICByteWrite (7);
IICByteWrite (0x10);
IICStop();Код: Выделить всё
IICStart();
IICByteWrite (0xD0);
IICByteWrite (0);
IICByteWrite (0);
IICByteWrite (0);
IICStop();вообщем в итоге. Если прошивать поочередно первым вариантом, потом вторым, потом первым, потом вторым - то светодиод моргает. Но до отключения питания схемы.
где я туплю в пятницу вечером?
- Zhuk72
- Сверлит текстолит когтями
- Сообщения: 1231
- Зарегистрирован: Ср янв 29, 2014 08:41:31
- Откуда: Баку
- Контактная информация:
Re: Всё по DS1307 и прочим часам Dallas (Maxim)
Батарейку подключили?
Каждый имеет право на свое личное ошибочное мнение.
У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: Всё по DS1307 и прочим часам Dallas (Maxim)
Если батарейку отключать, то в 0x00 регистре старший бит устанавливается в единицу (секунды читаются как 0x80), а в этом режиме генератор 32KHz отключен - часы не тикают, никакого меандра и не будет.