Как известно, — в своей практике каждый начинающий программист микроконтроллеров должен научиться мигать светодиодом (тут, конечно, есть разные уровни мигания) и сделать часики. Первое я уже освоил, более того, — разобрался с синхронными и асинхронными портами ввода-вывода и для примера сделал свою библиотеку для индикатора на 7-сегментных светодиодах. Кроме того, теперь у меня есть опыт в работе с высокоточным интегральным датчиком температуры. Фактически теперь есть возможность собрать устройство, которое будет объединять уже изученные девайсы.

На многих форумах есть готовые примеры с программой для организации часов на микроконтроллере с разными извращениями, — и с помощью прерываний, и в теле программы, и другими еретическими метОдами. Не буду никого переубеждать, пусть каждый делает так, как ему нравится, но мне кажется, что организация часов, календаря и будильника силами микроконтроллера — это стрельба из пушки по воробьям, и что-то из серии домашних извращений. Нет, конечно, если от часов на микроконтроллере больше ничего и не требуется, кроме как показывать время, — то пожалуйста, можно и целый контроллер потратить. Но нафига? Не проще ли купить готовые часики, в корпусе, с индикатором и другими приблудами на свой вкус, почти за копейки? Я по этому поводу решил, что каждое устройство должно заниматься своим делом. Индикатор — показывать, датчики — мерять и отдавать показания когда их об этом попросят, часики — тИкать и так же по запросу отдавать значение времени и даты, а так же работать и после отключения питания. А то и прерывания можно организовать от них же, будильник, или ещё что-то полезное. Ну а микроконтроллер здесь — как и процессор в «большом брате», — всё это хозяйство будет объединять, управлять и властвовать. В перерывах — сладко спать, экономя энергию и не тратясь почём зря на ненужные такты.

В общем, — довольно лирики. Однажды, когда я планировал разобраться с датчиками температуры, я заказал у Dallas (maxim) образцы этих датчиков, и до кучи — «часы реального времени», — «ЧРВ», или «RTC» — «Real Time Clock», если по-буржуйски. Микросхемами для часов, которые я тогда выбрал, стали DS1394+ — часы реального времени, с выходом для подключения резервной батарейки, вместо которой можно поставить ионистор, большой конденсатор или аккумулятор. Внутри часов есть специальная схема, которая может для зарядки подключать резервный источник к источнику основного питания через диоды и набор резисторов, этим можно управлять через специальный регистр. Красота, да и только:

У Dallas (maxim)- большой выбор элементной базы, в том числе и часов реального времени. Сначала я смотрел в сторону ds1307, — они хорошо изучены и на них много материалов в сети, — код, примеры использования, готовые проекты и устройства. Но меня смущало то, что им нужно было организовывать питание +5В и городить преобразователи уровня, так как msp430 — довольно экономичная в плане энергопотребления серия, основное питание у них — 3,3В, а то и меньше (1,8 — запросто!) Кроме того, у этих часов — интерфейс I2C, а я тогда ковырял индикатор на шине SPI, её изучил тогда, и мне казалось, что лучший выбор будет — как раз часы с этой шиной, как наиболее простой и проверенный путь. На SPI часов у dallas была тоже куча, я выбрал  посовременней, они экономичнее и поддерживают много интересных плюшек, которые я опишу ниже. В итоге выбрал я для часов — ds1394+. Эта же серия включает в себя часы ds1390, ds1391, ds1392 и ds1393. Между собой они практически не отличаются, и включены в общий даташит.

Описание часов:

  • ds1390-ds1394 — Часы реального времени, содержат информацию о сотых долях секунды, секундах, минутах, часах, дне недели, дне месяца, месяце и годе (с учетом коррекции для високосных годов до 2100);
  • Имеется выход прямоугольного сигнала или сигнала прерывания, частота которого может быть 32.768 кГц, 8.192 кГц, 4.096 кГц или 1 Гц (только ds1390, ds1393, ds1394);
  • Настраиваемый будильник;
  • Детектор пропадания напряжения питания и схема переключения источника питания на резервный;
  • Выход сброса/вход антидребезга (ds1391, ds1393);
  • Отдельные выходы сигналов SQW и INT (ds1392);
  • Зарядное устройство для резервного источника питания;
  • Поддержка 1 и 3 режимов SPI (ds1390, ds1391, ds1394);
  • 3- проводный интерфейс (ds1392, ds1393);
  • Максимальная частота SPI — 4 МГц при 3,3 В напряжении питания;
  • Максимальная частота SPI — 1 МГц при 1,8 В напряжении питания;
  • Три диапазона допустимого рабочего напряжения питания: 1.8 В ±5 %, 3.0 В ±10 % и от 2.97 до 5.5 В;
  • Рабочий температурный диапазон — от -40°C до +85°C.

Внутренняя структура часов на ds1390 — ds1394:

Назначение выводов:

Не учёл я тогда только одного… Это — корпус микросхемы ds1394… Когда мне пришли образцы, — я был поражён тем, какие они мелкие! Корпус микросхемы ds1394 размером 3х3 мм! Шаг выводов — 0,5 мм, а сами выводы шириной 0,27мм. Представьте только, как для этого делать плату и монтировать их! Макеткой тут уже не обойдёшься, хотя и встречаются маньяки. :) На сайте я, конечно, когда выбирал, на это совершенно никакого внимания не обратил. А зря. В общем, решил я тогда, что полежат они до лучших времён, а тут и командировка, и всякие другие события… Не до часов было, в общем :)

Прошло какое-то время, и в очередной раз у меня зачесались руки «чтобы такого собрать…». Взгляд упал на болтающиеся без дела семплы! А надо сказать, что перед этим я заранее прикупил свеженького фоторезиста, до этого ещё приобрёл домашний фотопринтер (с перспективой использования для печати фотошаблонов). Но когда впервые попробовал напечатать на нём фотошаблон, — в результате я разочаровался. Ох уж эти современные экономные технологии :( Шаблон вышел тусклым и практически прозрачным. Решив тогда, что с таким принтером каши не сваришь, — я отложил на какое-то время своё хобби, так как было весьма неудобно печатать на работе шаблоны и тащить их домой.

Однако я решил рискнуть. Покурил немного даташит, взял оттуда же схему подключения часов на ds1390-ds1394:

Развёл плату, получилась вот такая картинка:

Накатал свежий резист, напечатал шаблон, и несмотря на его полупрозрачность, — экспонировал плату через него и попробовал проявить. Надо ли говорить, в какой восторг я пришёл, когда всё получилось! Вот результат:

После травления:

Единственный косячок вышел, когда я в процессе уже травления начал водить по плате ватной палочкой, чтобы смывать оксиды для ускорения травления меди. Я слегка зацепил ФР, и в паре будущих контактных площадок стравилось несколько больше меди, чем было нужно. На последующий монтаж это не повлияло :)

Сразу после травления, когда удалось избавиться от фоторезиста (если делать это с помощью нормальной щёлочи — резист отваливается сам, другие средства его почти не берут, — химически и механически он очень стоек), плата была высушена и покрыта флюсом, чтобы защитить медь от окисления:

Лудим, паяем, примуса починяем…

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

Самое клёвое — это было припаивать мелкосхему ds1394. Она реально мелкая! Наверное в следующий раз я всё-таки возьму что-то увеличительное, но тут я справился с невооружённым глазом, хотя и вышло так, что первая оказалась немного повёрнутой относительно дорожек, но это было некритично:

Ещё по ходу разводки платы я несколько промахнулся с размерами резисторов и светодиодов, — не удалось найти таких относительно крупных элементов, поэтому поставил типоразмером поменьше.

После монтажа остальных компонентов отмываем плату от флюса, и она приобретает весьма симпатичный вид:

Здесь, правда мешают блики и кажется, что она какая-то некрасивая, но в реальности уверяю, — выглядит вполне красиво:

и вид сверху:

 

Делаем часы на микросхеме DS1394 с помощью launchpad. Часть 2. Программируем.

библиотека ds1394 для msp430 на sourceforge

поделиться:
  • Добавить ВКонтакте заметку об этой странице
  • Мой Мир
  • Facebook
  • Twitter
  • LiveJournal
  • В закладки Google
  • Яндекс.Закладки
  • БобрДобр
  • Сто закладок
  • Blogger
  • Блог Я.ру
  • Одноклассники