Память AT24Cxx

Вообще, я не планировал писать эту статью. Но по просьбам трудящихся/учащихся 🙂 решил осветить одну из своих конструкций с использованием памяти AT24Cxx. Данное устройство разрабатывалась давным-давно, и, честно говоря, я даже точно и не помню техзадания (сколько их было с тех пор!). Нужно было записать значение в указанную память по фиксированному адресу — вроде бы телемастерА заказывали, чтобы прописывать номера каналов или настроек или ещё фиг его знает что. Ну это не важно — главное понять принцип общения с данной памятью. Нужно сказать что памятьAT24Cxx достаточно удобный и дешёвый способ хранения информации, поэтому нижеуказанные наработки, надеюсь, помогут начинающим разработчикам в её освоении. Кроме того, можно посмотреть как организовано простое меню с использованием LCD и клавиатуры из четырёх кнопок.
Алгоритм обмена с AT24Cxx хорошо описан в даташите. Стандартный обмен по шине I2C, только, естественно, нужно смотреть адрес конкретного устройства. Протокол обмена реализован программно, мне так больше нравится — и более простой, и более гибкий, т.к не привязан к конкретным портам.
Поскольку самого устройства у меня нет (естественно, я его продал заказчикам) придётся макетировать из моего универсального микроконтроллерного конструктора. Управляющий контроллер ATmega8A, модуль I2C, LCD HD44780 — 24 символа х 2 строки без подсветки и телефонная тастатура в которой я использую всего 4 кнопки (0 — ввод, 8 — вверх, 5 — вправо, 2 — отмена). Устройство не содержит дополнительных дискретных элементов, все модули подключаются напрямую к контроллеру, поэтому схему рисовать смысла нет, ведь она «нарисована» в разделе define  и в заголовочных файлах проекта. Собираем макет, подключаем узлы к контроллеру:
прошиваем его и на экране ЖК? наблюдаем:
Это главное меню. Кнопкой «Вправо» выбираем нужный пункт, при этом стрелка показывает этот пункт, кнопка «Ввод» активирует. Выберем Set и активируем его:
Устройство предложит нам выбрать разрядность набираемого числа. «Вправо» будет гонять стрелку по кругу, показывая выбранную разрядность, «Отмена» вернёт нас в зад :), «Ввод» (в данном случае 7-ми разрядов) высветит следующее:
Это пункт меню непосредственно набора записываемого числа. «Вправо» — перебирает набираемые разряды стрелкой, «Вверх» — увеличивает набираемый разряд (при достижении 9-ки вернётся в 0), «Отмена» возвратит в предыдущий пункт меню, «Ввод» запишет набранное число в собственное EEPROM микроконтроллера для последующей его записи в AT24C16 и высветит меню выбора разрядности числа, т.е. предыдущее. В нём нажимаем «Отмена» и возвращаемся в главное меню. Выбираем «Save», нажимаем «Ввод». Наблюдаем:
если запись в AT24C16 прошла нормально, или:
если устройству не удалось обнаружить на линии I2C микросхему памяти AT24C16.

Проверим связь и, в случае её удачного установления, считаем записанное число. В главном меню выбираем «Connect» и нажимаем «Ввод». Если связь установлена, то вначале высветиться:
а по прошествии приблизительно трёх секунд и сама строка, считанная из AT24C16:
Первые два байта 0xCE и 0xBA. ?м я специально присвоил такие значения, чтобы лишний раз убедится, что записана именно та строка, которую набирал (типа маркера). Число 0x21E88E — это 2222222 в десятичной форме — то, что я набирал.  Считанное число будет высвечиваться около 10-ти секунд после чего устройство вернёться в главное меню.

Если связи с AT24C16 нет, то отобразится:
а по прошествии трёх секунд высветятся символы «FF» на всех знакоместах строки.

Вот такая получилась заготовка. Внимательно читаем комменты в исходнике — в них половина статьи, её теоретическая часть.
Повторюсь, что память AT24Cxx, ?МХО, весьма и весьма привлекательная в использовании в плане цены и простоты работы. Например, в предыдущей статье, где ATiny2313 выводит символы на uDisp320240 в ней можно хранить знакогенератор — получиться дёшево и сердито. Всех с праздником Крещения! Удачи, друзья!

Запись опубликована в рубрике Микроконтроллерный конструктор с метками , , . Добавьте в закладки постоянную ссылку.

11 комментариев на «Память AT24Cxx»

Добавить комментарий

Ваш адрес email не будет опубликован.

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.