Тест EEPROM памяти AVR микроконтроллера. Эксперимент
Внутренняя программа микроконтроллера AVR может читать и записывать любой байт EEPROM памяти. Однако при программировании EEPROM`a внешним программатором чтение и запись осуществляется постранично. В зависимости от типа микроконтроллера страницы EEPROM памяти имеют разный размер. Например, у микроконтроллера atmega16 размер страницы EEPROM памяти равен 4-ем байтам.
Существует мнение, что заявленный производителем ресурс EEPROM памяти AVR микроконтроллеров, равный 100000 циклов запись/чтение, относится не к единичной ячейке памяти, а к целой странице. То есть если мы в один байт EEPROM`а atmega16 запишем 100000 раз, остальные три ячейки страницы памяти потеряют свой ресурс, будучи вроде ни разу не тронутыми.
Мне стало интересно узнать, соответствует ли это действительности, и я провел небольшой тест EEPROM памяти atmega16. Понятно, что этот тест не является каким-то глубоким научным исследованием, но это все же лучше, чем ничего.
AVR. Работа с портами через указатели
Выводы микроконтроллера в проекте обычно задают с помощью макроопределений - define`ов. Мы получаем некую "отвязку" от железа и в дальнейшем это позволяет нам переназначать выводы на другие порты. Неудобство такого подхода состоит в том, что для каждого вывода нужно определять три регистра. Бывает, что два (только PORTx и DDRx), но это тоже неудобно, если выводов много. Существует другой подход, позволяющий сократить число макроопределений. Разберемся в чем он заключается.
Учебный курс AVR. Таймер - счетчик Т0. Регистры. Ч1
Таймер-счетчик является одним из самых ходовых ресурсов AVR микроконтроллера. Его основное назначение - отсчитывать заданные временные интервалы. Кроме того, таймеры-счетчики могут выполнять ряд дополнительных функций, как то - формирование ШИМ сигналов, подсчет длительности и количества входящих импульсов. Для этого существуют специальные режимы работы таймера-счетчика.
В зависимости от модели микроконтроллера количество таймеров и набор их функций может отличаться. Например, у микроконтроллера Atmega16 три таймера-счетчика - два 8-ми разрядных таймера-счетчика Т0 и Т2, и один 16-ти разрядный - Т1. В этой статье, на примере ATmega16, мы разберем как использовать таймер-счетчик Т0.
Учебный курс AVR. Проблемы при работе с EEPROM. Повышение надежности EEPROM. Ч3
В этом материале мы рассмотрим возможные проблемы при работе с EEPROM. Часть из них связана с аппаратным стороной микроконтроллера, такие как повреждение EEPROM при пониженном напряжении питания и ограниченный ресурс EEPROM, а часть с программным обеспечением, например, при использовании EEPROM в прерываниях. Также рассмотрим способы решения этих проблем и методы повышения надежности хранения данных в EEPROM.
AVR библиотека для LCD с произвольным подключением выводов
Некоторое время назад я написал макросы для реализации виртуальных портов. С помощью этих макросов можно переделать практически любую библиотеку для работы с произвольными выводами микроконтроллера. Первая библиотека, которая попала под это изменение, стала библиотека для символьного LCD. В этом посте я расскажу, как ее применить в своем проекте.
Учебный курс AVR. Работа с EEPROM. Объявление переменных. Чтение и запись данных. Ч1
При программировании микроконтроллеров AVR иногда возникает потребность сохранять данные, которые бы после выключения питания или сброса контроллера не изменяли свое значение. Для этих целей в составе AVR есть энергонезависимая память данных EEPROM (Electrically Erasable Programmable Read-Only Memory — электрически стираемое перепрограммируемое ПЗУ).
EEPROM имеет адресное пространство отличное от адресных пространств ОЗУ и flash памяти, в котором можно читать и записывать одиночные байты. В зависимости от модели микроконтроллера EEPROM может иметь объем от 512 байт (как, например, в микроконтроллере atmega16) до нескольких килобайт. Гарантированное количество циклов перезаписи этой памяти составляет не меньше 100000.
В этой статье на примере atmega16 мы разберемся, как работать с этим типом памяти, какие возможные проблемы при этом могут возникать и как с ними бороться.
Учебный курс AVR. Работа с EEPROM. Низкоуровневое чтение и запись данных. Ч2
Если вы читали предыдущий материал, то знаете как объявлять, читать и записывать данные в EEPROM. Но давайте разберемся, как же на самом деле происходят эти операции и что от нас скрывает компилятор. Это позволит лучше понимать работу микроконтроллера, и при желании написать свои специфические функции для работы с EEPROM.
Виртуальный порт. Макросы для управления выводами микроконтроллера
Выводы микроконтроллеров AVR сгруппированы в порты. Как правило порты состоят из восьми выводов, но также они могут быть и урезанными, как, например, у некоторых микроконтроллеров семейства Tiny. Порт позволяет одновременно выполнять операции над всеми выводами, входящими в его состав. Это такие операции как установка направления передачи данных, установка логических уровней на выводах и чтение состояния выводов.
Многие выводы микроконтроллеров AVR помимо основного назначения, имеют дополнительные функции, которые часто востребованы. Это обстоятельство осложняет использование порта в качестве параллельной шины данных, а иногда и делает полностью невозможным.
Обойти эту проблему можно тремя способами:
- использовать микроконтроллер с избыточными ресурсами (с большим количеством портов и периферии),
- использовать внешние микросхемы расширители портов,
- программно реализовать виртуальные порты, составленные из выводов разных физических портов.
В этом материале пойдет речь о программных виртуальных портах.
Порты ввода-вывода микроконтроллеров AVR. Электрические характеристики
Для грамотного использования микроконтроллера необходимо иметь представление об электрических характеристиках его выводов. Эти характеристики определяют максимально допустимый втекающий/вытекающий ток и уровни входных/выходных напряжений. От них зависит что и как можно подключать к микроконтроллеру, и к чему это приведет.
Сегодняшний материал посвящен как раз этой теме. Данные, приведенные ниже, взяты из описания на микроконтроллер Atmega16 в разделах Electrical Characteristics и Typical Characteristics. Для более детального изучения этого вопроса, рекомендую обязательно их посмотреть.
Самый дешевый двухканальный USB осциллограф в галактике
Этот субминиатюрный USB осциллограф сделан на микроконтроллере Atmel Tiny45 и с самодельной печатной платой он стоит меньше 5 Евро.