Не могу запустить RTC DS1307 на Atmega8
Вот тут меня мучает такой вопрос:
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))
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
- Откуда: Бровари, Україна
- Контактная информация:
Просто каждый раз одним оператором заносить нужное значение и всё.
Примерно так:
Примерно так:
Код: Выделить всё
// мне проще считать, что прерывания обычно разрешены и запрещать
// только если это нужно
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;
....
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
Re: Не могу запустить RTC DS1307 на Atmega8
Я на днях собирал 20 приборчиков на DS1307 SMD+MEGA32 SMD. Первый собрал - часики тикают. Остальные собрал, а часики стоят. Целый день стучал в бубен, все форумы перечитал, приборчики один-в-один, уже собирался начать волосы выдирать, но бывалый дяденька электрик посоветовал промыть всё по старинке спиртом, и часики разумеется пошли. Оказалось, что остатки флюса под корпусом SMD не давали часикам тикать.
Re: Не могу запустить RTC DS1307 на Atmega8
Заводской флюс - это кака...... его после монтажа тщательно смывать надо. Не удивлюсь что он еще и утечку реальную дает между ножками.
Я например пользуюсь чистой самодельной спиртоканифолью, никогда проблем не было, хоть специально покрывай плату (что собственно говоря, иногда и делаю).
Я например пользуюсь чистой самодельной спиртоканифолью, никогда проблем не было, хоть специально покрывай плату (что собственно говоря, иногда и делаю).
Re: Не могу запустить RTC DS1307 на Atmega8
Извиняюсь, если не в тему. Может ли кто порекомендовать жидкий флюс (чтобы самому не разводить). Сам пользуюсь ЛТИ-120 - очередной раз убеждаюсь, для подобных задач это не вариант. Вроде как спирто-канифоль продается в жидком виде, если я ничего не путаю.
Re: Не могу запустить RTC DS1307 на Atmega8
Кстати, многие спорят - запускается ли DS-ка без батарейки. Лично у меня из 20-ти штук одна таки работала без батарейки (случайно забыл вставить). Остальные проверил для статистики - гарантированно не отвечают.
Re: Не могу запустить RTC DS1307 на Atmega8
Собрал часы на DS1307 + Tiny2313. Проблема: при включении питания часы выводят "66:65", стоят на месте . Как я понял это последствия неправильного считывания из микры часов. Промывал плату от флюса --временно помогло, потом опять "66:65" при включении. С этой микрой работал раньше, проблем не было , такая же прога работает в других часах уже почти год без проблем.
Проверяя все последовательно , заметил интересное : вынимаю батарейку, подаю питание, часы запускаются и идут нормально (счет начинается с 00:00) , только при отключении время не сохраняют. Выключаю, вставляю батарейку, включаю питание-- опять "66:65", стоит на месте.
Керамика на 0,1 мкФ по питанию DS1307 стоит.
Менял микур часов, кварц --не помогло
Уж не знаю чего дальше делать/ на что думать . 
Проверяя все последовательно , заметил интересное : вынимаю батарейку, подаю питание, часы запускаются и идут нормально (счет начинается с 00:00) , только при отключении время не сохраняют. Выключаю, вставляю батарейку, включаю питание-- опять "66:65", стоит на месте.
Керамика на 0,1 мкФ по питанию DS1307 стоит.
Менял микур часов, кварц --не помогло
Re: Не могу запустить RTC DS1307 на Atmega8
Nixie писал(а): "66:65" при включении.
А если кнопочками, новое время можно устанавливать? реагирует?
Re: Не могу запустить RTC DS1307 на Atmega8
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 пункт самый важный
1 без батарейки работать будет - но НА 3 ВЫВОДЕ (ВХОД БАТАРЕЙКИ) УСТАНОВИТЬ КОНДЕНСАТОР примерно 10 нФ и паралельно резистор (номинал подобрать в зависимости от потребления когда станет батарейка
2 кварц обязательно заземлить (корпус припаять к земле
3 не увлекайтесь частотой 100кГц для неё оптимально
4 промывание спиртом помогает но ЕСЛИ ВЫ НЕ ПРЕДУСМОТРЕЛИ ЗЕМЛЯНОЙ ПОЛИГОН ВОЗЛЕ 1 И 2 НОЖКИ работа часов будет не стабильной
5 не располагайте микросхему близко к цепям переменного тока
1 пункт самый важный
- Danko
- Сверлит текстолит когтями
- Сообщения: 1287
- Зарегистрирован: Пн окт 13, 2008 11:45:54
- Откуда: РФ, Крым, г.Бахчисарай
- Контактная информация:
Re: Не могу запустить RTC DS1307 на Atmega8
Анатолий, просто интересно а кому Вы своё сообщение адресовали?
Вы думаета за 10 месяцев никто так эту задачу и не решил?

Вы думаета за 10 месяцев никто так эту задачу и не решил?
Первое, что привлекает в программировании, объяснить просто: ты говоришь компьютеру что то сделать, и он это делает. Безошибочно. Всегда. Без возражений.
----------
Линус Торвальдс. "Just for fun. Рассказ нечаянного революционера"
----------
Линус Торвальдс. "Just for fun. Рассказ нечаянного революционера"
-
Анатолий Красковский
- Родился
- Сообщения: 2
- Зарегистрирован: Сб июн 21, 2014 00:21:55
Re: Не могу запустить RTC DS1307 на Atmega8
на форуме нет чёткого ответа на решение проблемы
Я сам столкнулся с этим , и ответа не нашёл , а народ ищет ответ .пусть 10 месяцев прошло ,но люди просматривают ветку форума - а там чёткого ответа нет
Я сам столкнулся с этим , и ответа не нашёл , а народ ищет ответ .пусть 10 месяцев прошло ,но люди просматривают ветку форума - а там чёткого ответа нет
Re: Не могу запустить RTC DS1307 на Atmega8
та же история. нет ответов по запуску 1307. у меня тоже подключен к меге 8. время устанавливается, а он не запускается.секунды стоят. собрал один в один с предыдущим вариантом, промыл в банке с ацетоном, не идут. кварц уж 7 штук менял, молчит. +5в , +3в есть, подтяжки резисторы стоят, кондер по питанию есть...молчит зараза...
Часы реального времени DS1307
Добрый день. Собрал часы на ATtiny 2313 и DS 1307 не хотят работать. Собрал на ATmega 48 и DS 1307 тоже не работают. DS 1307 выписал у китайцев. Может они не исправные, или DS ку надо как то программировать? В интернете информации что DSка программируется я не нашёл . Схемки то простенькие ошибки быть не может. Помогите разобраться в чём дело.
Re: Не могу запустить RTC DS1307 на Atmega8
Попробуйте такое шаманское дествие
Хотя как раз с китайскими ДС( вернее купленными в Китае) я такого не замечал, у меня подозрение на кривую инициализацию ДС в программах.
-
pavel1979
- Мучитель микросхем
- Сообщения: 494
- Зарегистрирован: Пн авг 12, 2013 19:07:47
- Откуда: башкирия мелеуз
Re: Не могу запустить RTC DS1307 на Atmega8
у меня выводилось 169:169,неправильно инициализировал,сейчас все отлично,вот тема на вртп http://vrtp.ru/index.php?showtopic=25803&hl=
Re: Не могу запустить RTC DS1307 на Atmega8
Martin76 писал(а):Попробуйте такое шаманское дествиеХотя как раз с китайскими ДС( вернее купленными в Китае) я такого не замечал, у меня подозрение на кривую инициализацию ДС в программах.
Спасибо за совет. Запрограммировал новую ATtiny .при подачи напряжения показывает время 16:23 и часы стоят. Попробовал совет с кондёрам часы так и не пошли. Менял кварцы результат тот же. Проверил напряжение на батарейке и питание,всё нормально. На PICе без DSки часы работают без проблем. Хотел собрать часы которые не сбрасывают время при отключении напряжения,но что то не получается. КАК МОЖНО ИХ ЗАПУСТИТЬ?
Re: Не могу запустить RTC DS1307 на Atmega8
Цитата из даташита "Имейте в виду, что при включении питания начальное состояние всех регистров не
определено. Поэтому необходимо принудительно включать тактовый генератор (бит CH = 0) во
время начальной инициализации. " ,короче секунды нужно установить при первом включении RTC .
определено. Поэтому необходимо принудительно включать тактовый генератор (бит CH = 0) во
время начальной инициализации. " ,короче секунды нужно установить при первом включении RTC .
Re: Не могу запустить RTC DS1307 на Atmega8
А можно ли как-нибудь подключить DS1307 без батарейки? Тему прочитал, вроде пишут, а что пишут понять не могу. Делаю часы на 155-ой серии, вот решил в качестве генератора поставить сию микрушку (генератор частоты 1 Гц). Надо чтобы работало без микроконтроллера и батарейки (там всё равно ве функции реализовать не получится). Вроде нашёл схему, работать будет? Батарейку нафиг!!!

И что надо подавать/снимать с контактов SCL и SDA? SWQ/OUT понятно что выход. Вот надо чтобы на этом SWQ/OUT был 1 Гц

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