Чем flash память отличается от eeprom
В первой части статьи я предоставил схему, прошивку программатора, софт и кратко описал принцип их работы. На тот момент программатор имел не очень впечатляющий функционал и перечень программируемых устройств, возможно поэтому, не вызвал особого интереса. Но проект ещё развивается и я стараюсь добавлять новый функционал, исправлять ошибки, вносить улучшения. Все изменения вносятся исключительно программным путём и добавлением новых съёмных переходников. В этой части статьи я опишу, поддержку каких новых микросхем я добавил, как с ними работать и как их подключать к программатору. В текущей версии софта добавлена поддержка SPI Flash 25-й серии и микроконтроллеров AVR в режиме высоковольтного программирования.
Начну, пожалуй, с более сложного - AVR. Все, кто работал с этими микроконтроллерами, наверняка знают, что такое Fuse биты, и что бывает, если их запрограммировать неверно - можно получить практически окирпиченную микросхему, которая в лучшем случае перестанет программироваться обычным ISP-программатором. Для исправления данной проблемы (и не только) у микроконтроллеров AVR существует ещё один режим программирования - высоковольтный (HVP - параллельный и последовательный). В одной из статей в сети автор называл HVP - режимом Бога. В этом режиме можно практически всё: читать/стирать любые Fuse биты, читать/писать калибровку RC-генератора, читать/писать/стирать Flash,EEPROM независимо от установленных Fuse битов.
Протокол параллельного программирования у AVR стандартизированн практически для всех моделей AVR8, но есть исключения. Например: основная масса микроконтроллёров имеет восьмибитную шину данных и девять управляющих сигналов. У микроконтроллеров Attiny2313 и подобным в 20-выводном корпусе несколько управляющих сигналов объединены (XA1 и BS2, BS1 и PAGEL). Микроконтроллер Atmega2560 и другие с 256Кб памяти имеют трёхбитную адресацию Flash, в отличие от двухбитной в остальных моделях. Микроконтроллеры Attiny в восьминогих, шестнадцатиногих корпусах вообще программируются по последовательному высоковольтному протоколу. Всё это разнообразие я попытался учесть при разработке ПО и микропрограммы программатора. И, естественно, опробовал на нескольких моделях микроконтроллеров.
Интерфейс ПО претерпел небольшие изменения. Для работы с новыми устройствами были добавлены новые вкладки:
В случае работы с AVR - одноимённая вкладка. Как видите, на этой вкладке есть своё окошко выбора модели AVR, кнопки работы с памятью, окна просмотра данных Flash и EEPROM, отдельные кнопки для загрузки прошивки и EEPROM. При этом все кнопки в правой боковой части окна также активны, и их нежелательно нажимать во время работы с AVR. Возможно, позже перенесу их на первую вкладку, чтобы не мозолили глаза.
Хотя микроконтроллеры AVR работают при напряжении до 5 Вольт, я советую их программировать на 3,3 Вольтах, так как при высоковольтном программировании они могут нагреваться при операциях чтения/записи Flash (у меня грелась Atmega8 и Attiny в восьминогих корпусах). А на пониженном напряжении питания нагрев незначительный, а функциональность не изменяется. Для этого необходимо переставить джампер S1 ("Switch V_Prog") на плате программатора в положение 3v3.
Все микроконтроллеры AVR подключаются к основному 32-пиновому разъёму программатора. Схемы подключения разных видов МК на представленном ниже изображении:
Все сигнальные линии микроконтроллеров можно найти в Datasheet на соответствующую модель в разделе "Memory programming". Как видно из схемы, микроконтроллеры Atmega/Attiny с полным набором сигналов управления подключены к питанию (VCC) напрямую, а остальные - через ключ на pnp транзисторе. Этот ключ используется для предотвращения нагрева МК во время простоя, а также для правильного алгоритма входа в режим программирования. Но, думаю, без него тоже должно работать (я не пробовал). Мои платы переходников для некоторых МК в DIP корпусах в формате SprintLayout будут в папке с программой. Там же будет и данная схема.
Список моделей AVR изначально в программе небольшой. Но его можно увеличивать самостоятельно. Для этого в корневом каталоге с программатором есть папка "Devices". В ней находятся xml файлы с соответствующими названиями. Открываем файл с названием "AVR.xml" с помощью обычного блокнота и видим там список однотипных структур:
Так вот, для добавления новой модели - копируете любую из структур от тега
Из имеющихся у меня камней я протестировал Atmega8, Atmega16, Atmega32, Attiny2313, Attiny13a, Attiny45. На них же есть схемы переходников. Позже проверю работу с Atmega128a и Atmega2560 (просто на них я не делал переходники, подключу на проводах и отпишусь в комментариях).
Об AVR - всё. Теперь опишу, как работать со SPI Flash 25-й серии. Для данных микросхем памяти также есть соответствующая отдельная вкладка в программе:
Работа со Spi Flash в данной вкладке аналогична таковой во вкладке AVR. Поясню лишь, что означают окошки Sreg1 и Sreg2. У Spi Flash 25-й серии есть два Status-регистра, в которых есть флаги состояний и биты защиты. В некоторых б/у микросхемах, особенно выпаянных из материнских плат, могут быть установлены биты защиты от записи верхних блоков памяти (например для предотвращения порчи bootloader). Такие флешки будут читаться правильно, а при записи или стирании верхние блоки памяти изменяться не будут. Чтобы снять такую защиту необходимо записать нули в регистры Sreg (чаще - в Sreg2). Для этого можно написать по два нуля в соответствующие окошки и нажать кнопку "Write SR". Биты будут сброшены. После этого для корректной работы надо отключить питание от флешки и снова включить. Если флешку планируется вернуть после записи, например, в материнскую плату, то надо будет установить биты защиты обратно. Для этого их надо предварительно прочитать и запомнить (или записать на листик), затем стереть биты защиты, стереть/записать флешку и записать биты защиты обратно кнопкой "Write SR".
Spi Flash подключаются к восьми-контактному разъёму на плате программатора (XS4 на схеме). Схема подключения следующая:
SPI Flash XS4
CS -> CS
DI -> MOSI
DO -> MISO
CLK -> SCK
WP -> VCC
HOLD -> VPP
Положение джамперов на плате программатора не имеет никакого значения, так как на этот разъём напрямую выведены сигналы SPI2 от STM32 и его питание в 3.3 Вольта.
В случае со Spi Flash также возможно добавление новых моделей. Аналогичный AVR xml-файл под названием "25XXX.xml" хранится также в папке "Devices" и имеет сходную структуру:
В данном случае, тег "page_size" это размер страницы памяти Spi Flash в байтах (чаще всего 256 байт), "f_size" - объём памяти всей флешки в байтах, "id" - три байта сигнатуры чипа (первый байт - код производителя, второй - модель, третий - объём памяти), "page_count" - количество страниц памяти (можно получить делением объёма флешки на размер страницы в байтах). Все данные можно найти в datasheet на соответствующую модель чипа. ID - можно прочитать программатором и затем вписать в xml файл, работоспособность от этого не изменится.
В случае со Spi Flash микросхемами скорость чтения/записи не слишком большая. Флешка на 1 Мегабайт (например W25Q80) читается приблизительно 1-1,5 минуты. А если флешка на 8Мегабайт - можете смело пойти попить чаю, это минут на десять. Но запись обычно проходит без сбоев. Проверял, когда записывал звуковые файлы и картинки. Кстати, программатор позволяет записать практически любой файл соответствующего размера в виде "сырых данных". Кроме hex-файлов, они предварительно конвертируются в массив байт.
Кроме AVR и Spi Flash программатор также поддерживает работу с параллельными Flash и EEPROM, I2C EEPROM, восьмибитными SRAM (смотрите первую часть статьи).
Общие советы по использованию программатора:
- При подключении программатора необходимо использовать хороший USB кабель, желательно от старых переносных USB-винчестеров. Потому что питается программатор от USB шины, а в схеме присутствуют электромагнитные реле и преобразователь напряжения, которые могут потреблять достаточно много. Ток потребления я не измерял, но при работе питания от USB порта моего ноутбука вполне хватает, при условии использования хорошего кабеля. При использовании тонкого кабеля, если срабатывало реле, микроконтроллер мог зависнуть.
- При длительных операциях чтения/записи нельзя нажимать никакие кнопки, иначе собьётся цикл чтения или записи и программатор ("железная часть") просто зависнет в ожидании правильного USB пакета. Пока что я еще не реализовал "защиту от дурака". Но у меня уже есть идеи по этому поводу.
PS: проект пока ещё развивается. Память STM32 заполнена приблизительно только на 1/5, поэтому я буду стараться добавлять поддержку новых устройств. В ближайших планах добавить поддержку параллельной Flash с 16-битной шиной данных (mx29lv320), FWH (Pm49FL004) микросхемы bios материнских плат, microwire eeprom. И всё, что будет попадать мне в руки.
Если кто-то решиться собрать данный программатор, все вопросы пишите в комментариях. Предлагайте новые модели микросхем, которые есть у Вас, возможно кто-то поможет мне в тестировании программатора. Постараюсь ответить всем.
Флэш-память и EEPROM используют транзисторы с плавающим затвором для хранения данных. Что отличается между двумя и почему Flash так намного быстрее?
Первые устройства ПЗУ должны были иметь информацию, размещенную в них с помощью некоторых механических, фотолитографических или других средств (перед интегральными схемами было принято использовать сетку, в которой диоды могут быть выборочно установлены или опущены). Первым важным усовершенствованием стал «плавкий предохранитель-PROM» - чип, содержащий сетку из плавленных диодов, и рядно-приводные транзисторы, которые были достаточно прочными, чтобы выбрать ряд и заставить состояние выхода можно было продуть предохранители на любых диодах один не хотел. Хотя такие чипы были электрически перезаписываемыми, большинство устройств, в которых они были бы использованы, не имели мощной схемы привода, необходимой для их записи. Вместо этого они будут записаны с использованием устройства под названием «программист», а затем будут установлены в оборудовании, которое должно было бы их читать.
Следующим усовершенствованием стало устройство памяти с имплантированным зарядом, которое позволило заряжать электрически имплантированным, но не удаленным. Если такие устройства были упакованы в пакеты с ультрафиолетовым излучением (EPROM), их можно было бы стереть при воздействии ультрафиолетового излучения примерно на 5-30 минут. Это позволило повторно использовать устройства, содержимое которых оказалось нецелесообразным (например, багги или недоделанные версии программного обеспечения). Помещение одинаковых чипов в непрозрачный пакет позволяло им продаваться более недорого для приложений конечного пользователя, где маловероятно, что кто-то захочет их стереть и повторно использовать (OTPROM). Последующее улучшение позволило стереть устройства электрически без УФ-излучения (ранняя ЭСППЗУ).
Ранние устройства EEPROM могут быть уничтожены только в массовом порядке, а программирование требует условий, сильно отличающихся от условий, связанных с нормальной работой; следовательно, как и в устройствах PROM /EPROM, они обычно использовались в схемах, которые могли читать, но не записывать их. Более поздние усовершенствования EEPROM позволили стереть меньшие регионы, если не отдельные байты, а также позволили им записать те же схемы, которые использовали их. Тем не менее, имя не изменилось.
Когда на сцену вышла технология под названием «Flash ROM», для устройств EEPROM было довольно нормально разрешать отдельные байты стираться и перезаписываться в схеме приложения. Flash ROM был в некотором смысле шагом назад функционально, так как стирание могло иметь место только в больших кусках. Тем не менее, ограничение стирания на большие куски позволило хранить информацию гораздо компактнее, чем это было возможно с EEPROM. Кроме того, многие флэш-устройства имеют более быстрые циклы записи, но более медленные циклы стирания, чем это было бы типично для EEPROM-устройств (многие устройства EEPROM занимали бы 1-10 мс для записи байта и 5-50 мс для стирания; флеш-устройства обычно требовали бы менее 100US пишите, но для удаления требуется несколько сотен миллисекунд).
Я не знаю, что между флеш-памятью и EEPROM существует четкая разделительная линия, так как некоторые устройства, которые называются «флеш-памятью», могут быть стерты на основе каждого байта. Тем не менее, сегодняшняя тенденция, по-видимому, заключается в использовании термина «EEPROM» для устройств с возможностями для каждого байта и «вспышки» для устройств, которые поддерживают только стирание большого блока.
Flash - это тип EEPROM (электрически стираемая программируемая постоянная память). «Flash» - скорее маркетинговый термин, чем конкретная технология. Тем не менее, эти термины имеют сортировку для обозначения типа EEPROM, который оптимизирован для больших размеров и плотности, обычно за счет больших блоков стирания и записи и более низкой выносливости.
Спойлер: EEPROM на самом деле является Flash.
Как ответ блестяще указал суперкарт, EEPROM - это эволюция более старых УФ-стираемых EPROM (EEPROM EEPROM означает «электрически стираемый»). Однако, несмотря на то, что это улучшение для его старого приятеля, способ хранения EEPROM на сегодняшний день - это точная флэш-память.
Единственное существенное различие между ними - логика чтения /записи /стирания.
Вспышка NAND (обычная вспышка):
Может быть стерто только на страницах. блоков байтов. Вы можете читать и писать (по неписаным) одиночные байты, но для стирания требуется уничтожить много других байтов.
В микроконтроллерах он обычно используется для хранения прошивки. Некоторые реализации поддерживают флеш-обработку из встроенного программного обеспечения, и в этом случае вы можете использовать эту флешку для хранения информации до тех пор, пока вы не испортите использованные страницы (в противном случае вы удалите свою прошивку).
Вспышка NOR (также EEPROM):
Может читать, записывать и стирать отдельные байты. Его логика управления выложена таким образом, что все байты доступны индивидуально. Хотя это медленнее обычной вспышки, эта функция отличается меньшими /более старыми электронными устройствами. Например, более старые телевизоры и мониторы CRT использовали EEPROM для хранения пользовательских конфигураций, таких как яркий, контрастный и т. Д.
В микроконтроллерах это то, что вы обычно используете для хранения конфигураций, состояний или данных калибровки. Это лучше, чем вспышка для этого, так как для стирания одного байта вам не нужно запоминать (ОЗУ) содержимое страницы, чтобы переписать его.
Интересный факт
Существует распространенное заблуждение, что NOR Flash использует NOR gates , а NAND Flash использует NAND gates (и на самом деле это кажется очевидно). Однако это неверно. Причиной для именования является сходство логики управления каждого типа памяти с символическими символами NAND и NOR.
Флеш-память - это вариация EE-PROM, которая становится популярной. Основное различие между флеш-памятью и EE-PROM заключается в процедуре стирания. EEE-PROM можно стереть на уровне регистра, но флэш-память должна стираться либо полностью, либо на уровне сектора.
«Флеш-память» - это полный термин для хранения микросхем памяти (энергонезависимая память), а не для вращения дисков, таких как гибкий диск, CD, DVD, жесткий диск и т. д.
NOR и NAND - это оригинальные чипы флеш-памяти и были изобретены Fujio Masuoka во время работы в Toshiba примерно в 1980 году. Используются «NOR» и «NAND» на большинстве USB-накопителей.
Флэш-память также включает в себя как EEP-ROM (электрически стираемое программируемое постоянное запоминающее устройство), так и NV-RAM (энергонезависимая память произвольного доступа). EEP-ROM дешевле и используется для хранения на большинстве устройств System-on-Chips и Android. NV-RAM более дорогая и используется для твердотельных дисков и хранения в устройствах Apple.
Новые чипы NV-RAM намного быстрее, чем EEP-ROM и другие технологии Flash.
Подсистемы памяти являются неотъемлемой частью практически всех современных устройств вычислительной техники, за исключением, пожалуй, некоторых малых контроллеров.
Все статьи цикла:
- Современные микросхемы памяти. Часть 1, (Компоненты и технологии №4’2002)
- Современные микросхемы памяти. Часть 2, (Компоненты и технологии №6’2002)
Введение
Подсистемы памяти являются неотъемлемой частью практически всех современных устройств вычислительной техники, за исключением, пожалуй, некоторых малых контроллеров. В настоящее время в мире насчитывается более ста производителей тех или иных микросхем памяти. Существуют фирмы, которые специализируются на выпуске только микросхем памяти, однако множество фирм выпускают микросхемы памяти наряду с другой продукцией. Настоящая статья призвана ознакомить читателя с современной терминологией в области подсистем памяти, основными разновидностями микросхем памяти, их особенностями, наиболее известными и крупными производителями микросхем и их продукцией.
Основные функции библиотеки EEPROM.h.
EEPROM.length () - возвращает размер памяти EEPROM в байтах.
EEPROM.write (address, value) – записывает значение value величиной 1 байт (0-255) по адресу address (от 0 до EEPROM.length()).
EEPROM.read(address) – читает и возвращает байт данных, размещенной по адресу address.
EEPROM.update(address, value) – обновляет байт памяти (записывает новое значение), если новое значение отличается от текущего. Этот вариант записи значения переменной предпочтительнее, т.к. продлевает срок службы памяти, уменьшая число перезаписей.
EEPROM.put(address, data) – автоматически вычисляет размер и записывает данные любого типа по адресу address .
С помощью данной функции можно размещать в памяти переменные разных размеров.
Например, можно последовательно записывать в память переменные разной длины:
не забывая вычислять размер переменной в байтах и сдвигать начальный байт записи на данный размер:
Так же можно объединить значения переменных в массив или сами переменные в структуры и записывать с помощью функции EEPROM.put() массив или структуру целиком.
EEPROM.get(address, data) – считывает данные по адресу address и заносит их в указанную переменную data .
Естественно, что тип и размер данных, записанных с помощью функции EEPROM.put(), должен совпадать с типом и размером данных, читаемых функцией EEPROM.get(). В примерах библиотеки есть скетчи, иллюстрирующие работу этих функций.
Еще в библиотеке есть оператор EEPROM[] , который позволяет работать с памятью EEPROM как с массивом байтов.
В следующей статье, я расскажу, как увеличить объем памяти EEPROM до 64 КБ . Это будет особенно актуально для микроконтроллеров с малым объемом всех типов памяти, таких как ATtiny .
За счет того, что скорость чтения данных из памяти EEPROM очень велика, мы можем использовать внешнюю память EEPROM как дополнительную оперативную память, либо хранить в ней достаточно объемные массивы данных. Например, шрифты для работы с LED-матицами и LCD-дисплеями. В статье " Создание анимации для LED матрицы 16x16 адресных светодиодов ", мы хранили массив изображения с помощью ключевого слова PROGMEM во FLASH-памяти (из-за нехватки оперативной памяти). Подключив внешнюю EEPROM память, изображения и шрифты можно будет хранить во внешней памяти , оставив FLASH-память исключительно для того, для чего она и предназначена, т.е. для хранения прошивки микроконтроллера.
Спасибо, что дочитали до конца! Если статья понравилась, нажмите, пожалуйста, соответствующую кнопку. Если интересна тематика электроники и различных электронных самоделок, подписывайтесь на канал. До встречи в новых статьях!
Основные понятия
Для лучшего понимания состояния рынка современных микросхем памяти следует ознакомиться с основной общепринятой терминологией в этой области:
RAM (Random Access Memory) — оперативная память с произвольным доступом;
ROM (Read Only Memory) — постоянная память;
NVM (Non-Volatile Memory) — обычно термин используется для обозначения семейства ROM, в которое входят ROM, OTP, EPROM, EEPROM, Flash, NV-RAM;
Flash (Flash RAM, FRAM) — особый тип памяти, допускающей операции чтения и записи при рабочих напряжениях (обычно 5 В, для более ранних микросхем запись при 12 В), которые сохраняют содержимое при отсутствии питания за счет оригинальной структуры запоминающей ячейки;
NV-RAM (Non-Voltage RAM) — особый вид RAM, которая может сохранять свое содержимое при отсутствии питания либо за счет особенностей изготовления запоминающей ячейки, либо за счет наличия встроенной в микросхему или модуль литиевой батарейки;
OTP (Once programmed memory) — память, однократно программируемая потребителем;
EPROM (Electrically Programmable ROM) — электрически программируемая постоянная память;
EEPROM (Electrically Erasable Programmable ROM) — электрически стираемая и программируемая постоянная память;
SRAM (Static RAM) — статическая память с произвольным доступом;
DRAM (Dynamic RAM) — динамическая память с произвольным доступом;
TK-RAM (Timekeeping RAM) — память с произвольным доступом, в которой часть ячеек заменена на регистры, в которые автоматически выводятся данные от встроенных часов реального времени (RTC), календаря и т. п. Обычно выпускается либо со встроенной литиевой батарейкой, либо со входом для подключения внешней батарейки, либо с конструктивно совмещенным (в корпусе микросхемы) держателем для внешней батарейки;
RTC (Real Time Clock) — таймер реального времени;
Parallel (Access) Memory (RAM, Flash…) — память с параллельным доступом;
Serial (Access) Memory (RAM, Flash…) — память с последовательным доступом.
Кроме приведенных выше общепринятых терминов в специальной литературе и документации фирм-производителей встречается еще множество других, с которыми мы познакомим читателя по мере необходимости.
Названия наиболее известных производителей микросхем памяти, их Internet-адреса и выпускаемые типы микросхем памяти приведены в табл. 1.
Очевидно, что в рамках одной статьи ознакомить читателя со всей продукцией рынка памяти невозможно, да и нет необходимости, так как продукция многих фирм не поставляется в нашу страну, да и в своей стране поставляется только фирмам-партнерам. Поэтому мы познакомимся с продукцией только крупнейших или наиболее доступных производителей.
Пожалуй, наибольшую известность и популярность в нашей стране имеет фирма Atmel, являющаяся несомненным мировым лидером по производству различных микросхем с применением Flash-технологий. Микросхемы памяти, выпускаемые этой фирмой, приведены в табл. 2.
Не менее известна на нашем рынке и фирма Dallas Semiconductor, которая совсем недавно стала частью фирмы MAXIM. Фирма Dallas Semiconductor является мировым лидером по производству NV Timekeeping RAM. Это модули, содержащие SRAM, в которой часть ячеек заменена на регистры. В эти регистры автоматически выводятся данные от встроенных часов реального времени (RTC), календаря и т. п. Обычно выпускается либо со встроенной литиевой батарейкой, либо со входом для подключения внешней батарейки, либо с конструктивно совмещенным (в корпусе микросхемы) держателем для внешней батарейки (PwrCAP). Микросхемы TK-SRAM фирмы Dallas приведены в табл. 3.
Кроме этого, фирма Dallas Semiconductor выпускает достаточно большой набор других типов NV-RAM (см. табл. 4).
Большой выбор статической (SRAM), динамической (DRAM) и Flash-памяти предлагает фирма Alliance Semiconductor. Перечень микросхем статической памяти представлен в табл. 5.
SRAM 3,3 V Fast Asynchronous — быстродействующая асинхронная статическая память.
Динамическая память, выпускаемая фирмой Alliance Semiconductor, представлена в табл. 6.
Кроме этого, фирмой Alliance Semiconductor выпускается несколько микросхем Flash-памяти (см. табл. 7).
Достаточно широкий набор асинхронной статической памяти SRAM предлагает фирма Brilliance Semiconductor (табл. 8).
Для существенной экономии места на печатной плате выпускается специальная колодка для установки нескольких микросхем памяти одна на одну, так называемый LP-Stacks™ (Leaded Plastic Stacks). Это изделие идеально подходит для широкого круга коммерческих и индустриальных применений. Колодки LP-Stacks™ выпускаются для микросхем SDRAM, DRAM, SRAM, EEPROM, Flash, DDR и FCRAM. Существуют LP-Stacks™ для коммерческого и расширенного температурного диапазона.
Другое оригинальное изделие High-Reliability Ceramic Modules — высоконадежные керамические модули. Это изделие не только экономит место на печатной плате (поскольку в него устанавливается несколько микросхем), но и защищает их от тяжелых условий эксплуатации и климатических воздействий.
Для ускорения разработки новых изделий выпускаются специальные отладочные платы. Они позволяют устанавливать кроме микросхем памяти несколько корпусов микросхем DSP, ASIC, PLD, а также пассивных элементов.
Разработанные фирмой DPAC Technologies устройства для установки микросхем памяти в «этажерки» получили название DDR-технологий. Они запатентованы и стали, фактически, промышленным стандартом. Фирма DPAC Technologies продолжает разрабатывать все новые системы для компактной установки различных типов памяти в «этажерки».
Кроме того, фирма выпускает микросхемы памяти и предлагает их в комплекте с вышеуказанными изделиями (см. табл. 9).
Микросхемы памяти применяют для долгого хранения данных-энергонезависимое постоянное запоминающее устройство-ПЗУ,и для временного хранения данных-энергозависимое оперативное запоминающее устройство -ОЗУ.Микросхемы ПЗУ бывают:PROM,EPROM,EEPROM и FLASH память.
EPROM-запоминающее устройство,память,имеет многократные циклы записи с помощью программатора и стирания ультрафиолетом.На корпусе микросхемы можно увидеть Vpp=23В-это напряжение программирования.На каждый бит приходится один полевой транзистор.При прошивке,идет заряд электронами плавающего затвора,этот заряд может сохраняться десятки лет.Чтобы стереть информацию,кристалл облучают ультрафиолетом потоком фотонов,специальной лампой.Фотоны воздействуют на электроны и заряд рассеивается.Стекло на корпусе микросхемы затеняют изолентой, стереть информацию может солнечный свет в течении одной недели.
Микросхема EEPROM-электрически стираемая перепрограммируемая ПЗУ.Одна из подобных микросхем-кр1628рр2,емкостью 1кбит.
FLASH память,это EEPROM,также электрически стираемая и перепрограммируемая ПЗУ,но имеет большую емкость,скорость работы и низкое энергопотребление.
PROM-однократно программируемое ПЗУ,постоянная память с пережигаемыми перемычками.При прошивке,внутри сжигаются перемычки и такую микросхему уже не перепрошить.
Далее идет энергозависимая память или RAM.На такую память надо подавать питание,для сохранения информации,при отсутствии питания,информация стирается.К RAM(ОЗУ) памяти относится DRAM и SRAM.
DRAM-динамическая память,известная оперативная память компьютера.Для хранения бита используют заряженный конденсатор с транзистором.Заряд конденсатора уменьшается динамически во времени и этот заряд надо периодически восстанавливать(регенерация).
На старых компьютерах,для оперативной памяти использовали кр565ру6 или подобные микросхемы,в количестве десятков штук на плате.
SRAM-статическая память.Эту память не нужно регенерировать,она ститична,быстродейственна,запоминающей ячейкой является триггер.Но емкость такой памяти меньше,чем у динамической.
В данной статье речь пойдет об энергонезависимой памяти EEPROM (электрически стираемое программируемое постоянное запоминающее устройство). Как видно из названия EEPROM является разновидностью ПЗУ , важной особенностью которой является возможность перезаписывать хранимые в памяти значения (в отличие от FLASH-памяти) во время выполнения скетча и сохранять после отключения питания.
Энергонезависимая память EEPROM прекрасно подходит для хранения настроек работы устройства , которые были выбраны пользователем во время его работы и должны быть сохранены при отключении питания. Например, пользователь может задать определенную температуру, при которой микроконтроллер должен включить нагревательный элемент. Или определенную влажность почвы, при которой будет включен автополив. Определенную освещенность, при которой будет включено освещение и т.д. Так же в данной памяти можно логировать данные , получаемые от внешних датчиков и возникающие в процессе работы ошибки для последующей отладки.
В размещенной ниже таблице можно посмотреть сравнение различных типов памяти у микроконтроллеров серии ATtiny и микроконтроллера ATmega328 (основы Arduino UNO).
Как видно из таблицы, размер EEPROM либо равен размеру памяти SRAM (оперативной памяти), либо даже меньше неё. И существенно меньше размера FLASH-памяти (памяти для хранения кода программы).
Работа с памятью EEPROM в среде Arduino UNO отличается от работы с памятью SRAM. При работе с оперативной памятью нам не нужно заботиться, где именно располагается значение переменной, к которой мы обращаемся. Т.к. на этапе компиляции программы под каждую переменную, в зависимости от ее размера, выделяется блок памяти, где и хранится значение переменной. Мы же извлекаем это значение или перезаписываем его, обращаясь к переменной по имени.
При работе с памятью EEPROM мы должны указывать непосредственно адрес байта, в котором храниться переменная . Учитывая, что переменные bool, char, byte – занимают 1 байт, переменные int, word - 2 байта, а переменные long, float – 4 байта.
Т.е. в память EEPROM ATtiny13 можно записать 64 значения переменной типа byte, 32 значения переменной типа int и 16 значений переменной типа long. При этом в качестве адреса ячейки памяти при записи и чтении мы указываем номер первого байта переменной.
Для работы с памятью EEPROM в среде Arduino IDE служит специальная библиотека EEPROM.h . В её примерах есть несколько скетчей, показывающих как работать с основными функциями библиотеки.
Читайте также: