ATmega8 + Proteus: работа со сдвиговыми регистром 74HC595

разделы: AVR, SPI, Proteus, HD44780, дата: 26 сентября 2017г.

    Сдвиговые регистры, оглавление:
  1. ATmega8 + Proteus: работа со сдвиговыми регистром 74HC595
  2. ATmega8 + Proteus: входной сдвиговый регистр 74HC165, совместная работа с 74hc595
  3. ATmega8 + Arduino + Proteus: 8-битный сдвиговой регистр на I2C интерфейсе PCF8574

Изучение модуля USI MSP430 странным образом(на самом деле закономерным) вывела меня на такую штуку, как сдвиговый регистр. Имея о них лишь общее представление, мне пришлось срочно разбираться c этой, довольно обширной темой. Итак.

Сдвиговый регистр, он же расширитель портов, он же шинный преобразователь, преобразует сигнал последовательной шины в параллельный или/и обратно.

В рамках этой статью я рассмотрю работу с популярным 8-и битовыми сдвиговым регистром на SPI интерфейсе 74HC595.

В качестве практических примеров, я рассмотрю подключение светодиодной гирлянды, семисегментных индикаторов и дисплея с параллельной шиной HD44780.

В качестве микроконтроллера я буду использовать ATmega8, а в качестве среды моделирования Proteus 8.5.

Кроме этого, я затрону организацию SPI интерфейса у ATmega8.

    Оглавление:
  1. Сдвиговый регистр 74HC595 c SPI интерфейсом;
  2. Управление гирляндой светодиодов;
  3. SPI интерфейс в микроконтроллере ATmega8;
  4. Подключение семисегментного индикатора через сдвиговый регистр 74HC595;
  5. Подключение жидко-кристаллического дисплея HD44780 через сдвиговый регистр 74HC595;

Читать дальше

Arduino: библиотеки для работы с RTC DS1307,DS3231

разделы: Arduino, STM32duino, RTC, дата: 18 сентября 2017г.

В завершении прошлой статьи я приводил ссылку для проверки I2C модуля RTC DS3231. Для этого не надо устанавливать никакие библиотеки, достаточно скопировать текст программы в Arduino IDE и кликнуть на загрузку скетча в микроконтроллер. Это одинаково работает как в Arduino IDE, так и в MSP430 Energia и STM32duino.

Однако, больше чем для проверки этот пример не годится, и рано или поздно перед каждым встает вопрос написания своей библиотеки для полноценной работы с RTC. Отчет времени, с календарем или без, довольно распространенная штука, и этот код вы скорее всего будете тащить из проекта в проект. Т.е. это вещь которую проще один раз хорошо сделать, что бы потом к этому не возвращаться.

Сам я уже прошел по этому пути, но т.к. написанный код уже не умещался под спойлерами, поэтому пришлось написать полноценную Arduino - библиотеку. В заключение будет несколько примеров с использованием этой библиотеки, с тем, как на мой взгляд нужно правильно работать с DS1307/DS3231.

Но прежде чем "городить огород", предлагаю взглянуть на готовые решения, одобренные "патриархами" arduino.cc, а именно: библиотеки Time, DS1307RTC, а также DS3232RTC которая работает совместно с библиотекой Time.

    Для начала решим, что нам нужно от RTC типа DS1307/DS3231:
  • Автономный отчет времени, т.е. когда микроконтроллер при старте получает текущее время, а затем он уже считает время самостоятельно и не забивает I2C шину трафиком с RTC.
  • Отчет времени по SQW-выводу, когда RTC тактирует счетчик часов микроконтроллера через внешнее прерывание, и микроконтроллер самостоятельно рассчитывает календарные данные и текущее время.
  • Поддержка будильников.
  • Поддержка внесения поправок к ходу часов.
  • Периодическая синхронизация.

Вроде бы немного, и вроде бы несложно.

Весь код я буду тестировать на Arduino Nano, MSP430 Launchpad - Energia и на STM32duino - Blue Pill.

Общая концепция библиотек для работы со временем такая. Имеется базовая библиотека TIME которая ведет через функцию millis() расчет времени при запросе такого через функции библиотеки hour(), minute(), second() и т.д. Библиотека абстрагируется от аппаратной части того или иного хронометра. Она рассчитана на ведение календаря и отчет времени средствами самого микроконтроллера, без подключения RTC. Соответственно библиотеки DS3232RTC и DS1307RTC добавляют функции синхронизации микроконтроллера с RTC.

Содержание:

  1. Библиотека Time
  2. Библиотека DS1307RTC
  3. Часы реального времени повышенной точности с алгоритмом термокомпенсации DS3231
  4. Библиотека DS3231SQW

Читать дальше