Перейти к содержанию
    

Может ли сгореть DS1307 или часовой кварц при питании от батарейки и попадании на плату воды?

ГОспода, наступил на грабли:

есть плата с основным питанием и реервным батарейным питанием для DS1307. Часики исправно работали. Затем я отключил плату, почистил ацетоном кое-какие участки и в довершение промыл водой из-под крана. А грабли в том, что батарейку то я не вытащил)))))

Могла ли от этого сгореть микросхема или испортиться кварц?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Затем я отключил плату, почистил ацетоном кое-какие участки и в довершение промыл водой из-под крана. А грабли в том, что батарейку то я не вытащил)))))

Могла ли от этого сгореть микросхема или испортиться кварц?

 

Видимо батарейка села во время промывки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Батарейка не села - это точно.

На линиях SDA и SCL тишина, точнее единица.

Домой попаду завтра, посмотрю, наверное что-то с контроллером, потому как должен же он что-то на линию выдавать. Хотя основная програма работает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если паяли гадким флюсом, то при наличии воды он мог начать проводить. Кварц при этом не генерит. Измерьте сопротивление между контактами кварца, должно быть несколько мегом. Если сильно меньше - мойте тщательнее.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня в ремонт приезжала плата. Сознались что топили в ванне. Никак не хотела работать. Сменил кварц - заработала. Расковырял кварц - там вода!!! Видно глубокая была ванна. Корпус был HC49.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Возвращаюсь к теме. ТОгда проблема была действительно во флюсе. Отмыл и все ОК.

Часы заработали. Устройство я отладил, заказал плату, напаял детали - не работает. С заведомо правильным кодом и правильной разводкой.

Основной симптом - все цифры - и времени и даты равны 165. О чем это может говорить? О проблеме в микросхеме или на шине i2c?

Могу еще добавить, что после изготовления конечной платы я напаял другой контроллер - вместо ATMega32 у меня ATMega644p. Адрес порта С как полагается исправил с 0x12 на 8. Может еще есть какие отличия этих контроллеров в работе с i2c?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

domowoj, спасибо, но курение даташита ни к чему не привело.

Единственное - я понял, что i2c все же работает правильно, ибо на соответствующем выходе DS1307 имеются импульсы 1Гц, значит инициализация проходит...

А дальше два варианта - неправильная трансформация данных в процессе вывода их на экран, либо ошибка в микросхеме. Щупаю линию SDA осциллографом - там постоянная не меняющаяся последовательность импульсов. Т.Е. DS1307 тикает (судя по SQW), но данные на выходе не меняются. Но пару раз за все время правильные цифры на экран все- же проскочили. Монтаж я проверял, все ОК, да и, учитывая вышесказанное, не в монтаже дело.

Может у кого-то была именно такая ситуация - число 165 во всех переменных?

Код я выложу вечером, но смею вас заверить, он раньше работал.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Проверьте битовую скорость, она не должна быть больше 100кГц

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Мерял частотомером тестера - 43 кГц, не знаю, насколько точно вышло.

 

Я работаю в CodeVision, делаю так:

 

unsigned char DS_R;

unsigned char hour,minute,second,date,month,year;
unsigned char *pHour,*pMinute,*pSecond,*pDate,*pMonth,*pYear;


void main()
{
pHour=&hour;
  pMinute=&minute;
  pSecond=&second;
  pDate=&date;
  pMonth=&month;
  pYear=&year;

rtc_init(0,1,0);
DS_R=rtc_read(0); //прочесть нулевой байт
rtc_write(0,(DS_R&=0b01111111)); //обнулить старший бит(CH) запустить внутренний генератор 
rtc_set_date(24,03,11);
rtc_set_time(20,50,0);
  rtc_get_date(pDate,pMonth,pYear);
   
  
  rtc_get_time(pHour,pMinute,pSecond);
  
       SetFont(402);
       FillRect(0,440,210,479, clBlue,clBlue);
       GotoXY(10,430);
        sprintf(s,"%02d/%02d/20%02d",date,month,year);
        PutString(s);
         FillRect(630,440,799,479, clBlue,clBlue);
        GotoXY(635,430);
        sprintf(s,"%02u:%02u:%02u",hour,minute,second);
        PutString(s);

}

 

 

А где эту частоту устанавливать надо? Нет, я конечно могу записать в регистры что-то, но в стандартной библиотеке есть только i2c_init() параметров....

 

Проблема решена!!!!

Надо было всего лишь подключить батарейку!!!

Всем спасибо!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...