Вначале я хотел дополнить предыдущую статью входным регистром 74hc165, но потом понял понял, что он заслуживает "свои пять минут славы". Сложности возникают при подключении входного регистра совместно с выходным 74hc595 на один SPI порт. Кроме того, как оказалось, организация работы по SPI в ATmega8 имеет свои интересные особенности.
Итак, сдвиговый регистр 74hc165 преобразует параллельную шину в последовательную, работает только на вход, и имеет разрядность 8-бит. Их так же можно подключать цепочкой из n-элементов, которая даст 8^n - входов.
Руководство на SN74HC165N можно скачать например с сайта Texas Instruments.
Изучение модуля USI MSP430 странным образом(на самом деле закономерным) вывела меня на такую штуку, как сдвиговый регистр. Имея о них лишь общее представление, мне пришлось срочно разбираться c этой, довольно обширной темой. Итак.
Сдвиговый регистр, он же расширитель портов, он же шинный преобразователь, преобразует сигнал последовательной шины в параллельный или/и обратно.
В рамках этой статью я рассмотрю работу с популярным 8-и битовыми сдвиговым регистром на SPI интерфейсе 74HC595.
В качестве практических примеров, я рассмотрю подключение светодиодной гирлянды, семисегментных индикаторов и дисплея с параллельной шиной HD44780.
В качестве микроконтроллера я буду использовать ATmega8, а в качестве среды моделирования Proteus 8.5.
Кроме этого, я затрону организацию SPI интерфейса у ATmega8.
Полтора года назад я уже бегло рассматривал протокол I2C, теперь же настало время изучить его более подробно.
Попробуем написать программную реализацию протокола, рассмотрим "подводные камни" такой реализации, а также способы отладки шины I2C. Для обкатки алгоритма попробуем подключить следующие устройства на шине I2C: RTC DS1307/DS3231 и EEPROM AT24C512/AT24C32.
Для проектирования будет использована CAD Proteus_8.5. Для проверки на реальном железе будет использован чип MSP430G2453.
Итак, тренироваться будем на RTC DS1307, но здесь должен заметить, что данный чип относиться к 5-вольтовой логике поэтому с 3.3-вольтовым MSP430 он работать не будет. Заставить работать данную связку можно только в Proteus. Для тестирования на реальном железе я буду использовать DS3231 модуль. Однако для того чтобы понять I2C не нужен готовый модуль, он будет только мешать.
Когда не очень опытный радиолюбитель берет устройство на I2C, ему надо его как-то проверить, убедиться что оно хотя бы в принципе работает. Как это сделать? Обычно делается это на Arduino (я по крайней мере так делаю). Находится какой-нибудь скетч для проверки, и на нем проверяется.
Однако, при наличии проблем, как узнать в чем кроется загвоздка: в "косячной" библиотеке или в железке? Например, если мы загрузим этот скетч для работы с DS1307, и запустим его БЕЗ всякого модуля, то получим такую картинку:
Как видно, мы получили какие-то непонятные значения и если бы сбойная микросхема RTC была бы подключена, нам оставалось бы только гадать, где скрывается проблема: в коде или в железке.
И здесь проблема здесь не в низком качестве кода скетча. Если посмотрим API References:
Немного максималистическая попытка сделать статью в стиле "все-в-одном", а именно: разобрать базовую периферию MSP430 и заодно использовать эту тему как ознакомительную для Proteus.
К сожалению, как выяснилось, в Proteus симуляция MSP430 не совсем полная, поэтому реального микроконтроллера Proteus заменить конечно не сможет. Однако, с некоторыми оговорками это все-таки замечательная платформа для отладки схем и различных алгоритмов. Ниже будет наглядно показано как отладить работу программного UART передатчика с помощью Proteus.
Я начинал статью с Proteus_8.3, а заканчивал ее под Proteus_8.5. И там и там имеются неточности если сравнивать с работой реального чипа, не следует забывать, что это всего лишь модель. И все-таки я бы посоветовал использовать версию 8.5 по той причине что там более-менее корректно работает таймер. У меня были сложности большими частотами, но возможно сказалось ограничение по производительности виртуальной машины.
Честно говоря, я не слишком расписывал темы: что такое Proteus, зачем он нужен, как его устанавливать и что значат все эти кнопочки. Подобных руководств достаточное количество на YouTube.
В качестве примера рассматривается чип MSP430G2453 в 28-пиновом корпусе. Но весь материал можно экстраполировать на всю линейку MSP430x2xx.