Не могу запустить RTC DS1307 на Atmega8

Обсуждаем контроллеры компании Atmel.
AlexRu
Родился
Сообщения: 17
Зарегистрирован: Пт дек 25, 2009 04:44:14
Откуда: Украина, Киев

Сообщение AlexRu »

Вот тут меня мучает такой вопрос:
TWCR - он же не буферизированный? Как же тогда в сях одной командой установить TWEN, TWINT и сбросить TWEA (режим NOASK)???
Я так понимаю - в таком порядке не пройдет:
TWCR &= ~(1<<TWEA)
TWCR |= ((1<<TWINT) | (1<<TWEN))

по идее в обратном:

TWCR |= ((1<<TWINT) | (1<<TWEN))
TWCR &= ~(1<<TWEA)

тоже не должно работать. Ведь и в том и в другом случае мы обнуляем TWINT первой командой и сражу начинается работа модуля.
Прав я или где-то запутался???


может так? :

TWCR &= ~((1<<TWEA) | (1<<TWINT))
TWCR |= ((1<<TWINT) | (1<<TWEN))
Аватара пользователя
avreal
Опытный кот
Сообщения: 842
Зарегистрирован: Чт дек 31, 2009 19:27:45
Откуда: Бровари, Україна
Контактная информация:

Сообщение avreal »

Просто каждый раз одним оператором заносить нужное значение и всё.
Примерно так:

Код: Выделить всё

// мне проще считать, что прерывания обычно разрешены и запрещать
// только если это нужно
enum { twcr_default = (1 << TWEN) | (1 << TWIE) | (1 << TWINT) };

....
    case TW_MR_DATA_ACK:
        *bufptr++ = TWDR;
        /* FALLTHROUGH */
    case TW_MR_SLA_ACK:
        if (--left) {
            TWCR = twcr_default | (1 << TWEA);
        } else {
            TWCR = twcr_default;
        }
        break;

    case TW_MR_DATA_NACK:
        *bufptr++ = TWDR;
        TWCR = (twcr_default & ~(1 << TWIE)) | (1 << TWSTO);
        done = true;
        break;

....
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
DOREN
Родился
Сообщения: 3
Зарегистрирован: Пн дек 28, 2009 10:45:38
Откуда: Барнаул

Re: Не могу запустить RTC DS1307 на Atmega8

Сообщение DOREN »

Я на днях собирал 20 приборчиков на DS1307 SMD+MEGA32 SMD. Первый собрал - часики тикают. Остальные собрал, а часики стоят. Целый день стучал в бубен, все форумы перечитал, приборчики один-в-один, уже собирался начать волосы выдирать, но бывалый дяденька электрик посоветовал промыть всё по старинке спиртом, и часики разумеется пошли. Оказалось, что остатки флюса под корпусом SMD не давали часикам тикать.
Аватара пользователя
shads
Опытный кот
Сообщения: 882
Зарегистрирован: Ср фев 22, 2012 01:25:21

Re: Не могу запустить RTC DS1307 на Atmega8

Сообщение shads »

Заводской флюс - это кака...... его после монтажа тщательно смывать надо. Не удивлюсь что он еще и утечку реальную дает между ножками.
Я например пользуюсь чистой самодельной спиртоканифолью, никогда проблем не было, хоть специально покрывай плату (что собственно говоря, иногда и делаю).
DOREN
Родился
Сообщения: 3
Зарегистрирован: Пн дек 28, 2009 10:45:38
Откуда: Барнаул

Re: Не могу запустить RTC DS1307 на Atmega8

Сообщение DOREN »

Извиняюсь, если не в тему. Может ли кто порекомендовать жидкий флюс (чтобы самому не разводить). Сам пользуюсь ЛТИ-120 - очередной раз убеждаюсь, для подобных задач это не вариант. Вроде как спирто-канифоль продается в жидком виде, если я ничего не путаю.
DOREN
Родился
Сообщения: 3
Зарегистрирован: Пн дек 28, 2009 10:45:38
Откуда: Барнаул

Re: Не могу запустить RTC DS1307 на Atmega8

Сообщение DOREN »

Кстати, многие спорят - запускается ли DS-ка без батарейки. Лично у меня из 20-ти штук одна таки работала без батарейки (случайно забыл вставить). Остальные проверил для статистики - гарантированно не отвечают.
Nixie
Потрогал лапой паяльник
Сообщения: 337
Зарегистрирован: Пн май 04, 2009 17:45:33
Откуда: Киев

Re: Не могу запустить RTC DS1307 на Atmega8

Сообщение Nixie »

Собрал часы на DS1307 + Tiny2313. Проблема: при включении питания часы выводят "66:65", стоят на месте . Как я понял это последствия неправильного считывания из микры часов. Промывал плату от флюса --временно помогло, потом опять "66:65" при включении. С этой микрой работал раньше, проблем не было , такая же прога работает в других часах уже почти год без проблем.
Проверяя все последовательно , заметил интересное : вынимаю батарейку, подаю питание, часы запускаются и идут нормально (счет начинается с 00:00) , только при отключении время не сохраняют. Выключаю, вставляю батарейку, включаю питание-- опять "66:65", стоит на месте.
Керамика на 0,1 мкФ по питанию DS1307 стоит.
Менял микур часов, кварц --не помогло :( Уж не знаю чего дальше делать/ на что думать . :(
Аватара пользователя
C@at
Вымогатель припоя
Сообщения: 652
Зарегистрирован: Вс ноя 13, 2011 16:42:05
Откуда: Украина

Re: Не могу запустить RTC DS1307 на Atmega8

Сообщение C@at »

Nixie писал(а): "66:65" при включении.

А если кнопочками, новое время можно устанавливать? реагирует?
Nixie
Потрогал лапой паяльник
Сообщения: 337
Зарегистрирован: Пн май 04, 2009 17:45:33
Откуда: Киев

Re: Не могу запустить RTC DS1307 на Atmega8

Сообщение Nixie »

C@at писал(а):А если кнопочками, новое время можно устанавливать? реагирует?

Не реагирует. Но я по-моему нашел причину некорректной работы. Мой случай описан в даташите к 1307 на 6 странице . В общем, если напряжение питания микры ниже чем Uбат *1,25 , то она не отвечает на запрос, чтобы предотвратить порчу данных, но продолжает считать время.
Особенностью моей конструкции (которой я вначале не придал значения) было то, что индикаторы часов--вакуумно-люминисцентные , 4 ИВ-12 и 1 ИВ-6 , а поэтому накал потребляет много тока. Часы запитаны от самодельного лабораторного БП.
Примерный сценарий появления глюков следующий : включаем питание, все ок , все работает---микра стабилизатора БП нагревается от большого потребления накала---вых. напряжение немного проседает---я не могу этого заметить по стрелочному индикатору вых. напряжения--микра не отвечает на запрос (точнее в ответ к процу приходит двоичное "255" из регистров часов и минут, что псле преобразования дает "66:65" на индикаторах).
Далее я в недоумении выключаю питание, включаю опять, из-за инерционности нити накала прогреваются около 1 секунды, так же растет и ток потребления и проседает напряжение БП , я успеваю увидеть норм. время, дальше все повторяется.
При длительном отключении микра стабилизатора БП успевает остыть, после включения все некоторое время опять работатет нормально.
Замер напряжения на резервной батарее показал 3,1 В что дает нам 3,1 В*1,25=3, 875 В. Замер вых. напряжения БП под нагрузкой часами показал 4,3 В--несмотря на то, что он укладывается в рекомендованный даташитом предел, глюки были.
При поднятии напряжения до 4,7 В глюки прошли :))
ВЫВОД Работатя с DS1307 помните про особенности её питания !!!
Анатолий Красковский
Родился
Сообщения: 2
Зарегистрирован: Сб июн 21, 2014 00:21:55

Re: Не могу запустить RTC DS1307 на Atmega8

Сообщение Анатолий Красковский »

Проблема DS1307 заключается в работе компаратора напряжения основного питания и питания от батарейки
1 без батарейки работать будет - но НА 3 ВЫВОДЕ (ВХОД БАТАРЕЙКИ) УСТАНОВИТЬ КОНДЕНСАТОР примерно 10 нФ и паралельно резистор (номинал подобрать в зависимости от потребления когда станет батарейка
2 кварц обязательно заземлить (корпус припаять к земле
3 не увлекайтесь частотой 100кГц для неё оптимально
4 промывание спиртом помогает но ЕСЛИ ВЫ НЕ ПРЕДУСМОТРЕЛИ ЗЕМЛЯНОЙ ПОЛИГОН ВОЗЛЕ 1 И 2 НОЖКИ работа часов будет не стабильной
5 не располагайте микросхему близко к цепям переменного тока

1 пункт самый важный
Аватара пользователя
Danko
Сверлит текстолит когтями
Сообщения: 1287
Зарегистрирован: Пн окт 13, 2008 11:45:54
Откуда: РФ, Крым, г.Бахчисарай
Контактная информация:

Re: Не могу запустить RTC DS1307 на Atmega8

Сообщение Danko »

Анатолий, просто интересно а кому Вы своё сообщение адресовали?

Вы думаета за 10 месяцев никто так эту задачу и не решил?
:)) :)) :))
Первое, что привлекает в программировании, объяснить просто: ты говоришь компьютеру что то сделать, и он это делает. Безошибочно. Всегда. Без возражений.
----------
Линус Торвальдс. "Just for fun. Рассказ нечаянного революционера"
Анатолий Красковский
Родился
Сообщения: 2
Зарегистрирован: Сб июн 21, 2014 00:21:55

Re: Не могу запустить RTC DS1307 на Atmega8

Сообщение Анатолий Красковский »

на форуме нет чёткого ответа на решение проблемы
Я сам столкнулся с этим , и ответа не нашёл , а народ ищет ответ .пусть 10 месяцев прошло ,но люди просматривают ветку форума - а там чёткого ответа нет
odvl
Встал на лапы
Сообщения: 108
Зарегистрирован: Пт окт 14, 2011 21:26:51

Re: Не могу запустить RTC DS1307 на Atmega8

Сообщение odvl »

та же история. нет ответов по запуску 1307. у меня тоже подключен к меге 8. время устанавливается, а он не запускается.секунды стоят. собрал один в один с предыдущим вариантом, промыл в банке с ацетоном, не идут. кварц уж 7 штук менял, молчит. +5в , +3в есть, подтяжки резисторы стоят, кондер по питанию есть...молчит зараза...
jnson
Родился
Сообщения: 6
Зарегистрирован: Ср сен 30, 2015 13:46:44

Часы реального времени DS1307

Сообщение jnson »

Добрый день. Собрал часы на ATtiny 2313 и DS 1307 не хотят работать. Собрал на ATmega 48 и DS 1307 тоже не работают. DS 1307 выписал у китайцев. Может они не исправные, или DS ку надо как то программировать? В интернете информации что DSка программируется я не нашёл . Схемки то простенькие ошибки быть не может. Помогите разобраться в чём дело.
Аватара пользователя
Martin76
Друг Кота
Сообщения: 20159
Зарегистрирован: Пт фев 04, 2011 17:57:51
Откуда: Рыбинск

Re: Не могу запустить RTC DS1307 на Atmega8

Сообщение Martin76 »

Попробуйте такое шаманское дествие :) Хотя как раз с китайскими ДС( вернее купленными в Китае) я такого не замечал, у меня подозрение на кривую инициализацию ДС в программах.
pavel1979
Мучитель микросхем
Сообщения: 494
Зарегистрирован: Пн авг 12, 2013 19:07:47
Откуда: башкирия мелеуз

Re: Не могу запустить RTC DS1307 на Atmega8

Сообщение pavel1979 »

у меня выводилось 169:169,неправильно инициализировал,сейчас все отлично,вот тема на вртп http://vrtp.ru/index.php?showtopic=25803&hl=
jnson
Родился
Сообщения: 6
Зарегистрирован: Ср сен 30, 2015 13:46:44

Re: Не могу запустить RTC DS1307 на Atmega8

Сообщение jnson »

Martin76 писал(а):Попробуйте такое шаманское дествие :) Хотя как раз с китайскими ДС( вернее купленными в Китае) я такого не замечал, у меня подозрение на кривую инициализацию ДС в программах.


Спасибо за совет. Запрограммировал новую ATtiny .при подачи напряжения показывает время 16:23 и часы стоят. Попробовал совет с кондёрам часы так и не пошли. Менял кварцы результат тот же. Проверил напряжение на батарейке и питание,всё нормально. На PICе без DSки часы работают без проблем. Хотел собрать часы которые не сбрасывают время при отключении напряжения,но что то не получается. КАК МОЖНО ИХ ЗАПУСТИТЬ?
ma5a97
Прорезались зубы
Сообщения: 217
Зарегистрирован: Чт мар 12, 2015 01:37:52
Откуда: Донецк

Re: Не могу запустить RTC DS1307 на Atmega8

Сообщение ma5a97 »

Цитата из даташита "Имейте в виду, что при включении питания начальное состояние всех регистров не
определено. Поэтому необходимо принудительно включать тактовый генератор (бит CH = 0) во
время начальной инициализации. " ,короче секунды нужно установить при первом включении RTC .
Аватара пользователя
Dr.Tr.
Вымогатель припоя
Сообщения: 635
Зарегистрирован: Вс июл 17, 2016 04:38:20
Откуда: Минск

Re: Не могу запустить RTC DS1307 на Atmega8

Сообщение Dr.Tr. »

А можно ли как-нибудь подключить DS1307 без батарейки? Тему прочитал, вроде пишут, а что пишут понять не могу. Делаю часы на 155-ой серии, вот решил в качестве генератора поставить сию микрушку (генератор частоты 1 Гц). Надо чтобы работало без микроконтроллера и батарейки (там всё равно ве функции реализовать не получится). Вроде нашёл схему, работать будет? Батарейку нафиг!!!
Изображение
И что надо подавать/снимать с контактов SCL и SDA? SWQ/OUT понятно что выход. Вот надо чтобы на этом SWQ/OUT был 1 Гц
память не сверло
Имея один мультиметр, можно измерить всё, кроме платы самого мультиметра.
Имея два мультиметра, можно измерить вообще всё.
Аватара пользователя
Z_h_e
Собутыльник Кота
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Re: Не могу запустить RTC DS1307 на Atmega8

Сообщение Z_h_e »

Dr.Tr. писал(а):вот решил в качестве генератора поставить сию микрушку
Почитайте тут. Если Вам удастся включить ее в часы на рассыпухе 155 без МК. Поздравляю, Вы тот еще "извращенец" :))) .
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Ответить

Вернуться в «AVR»