Микроконтроллер прошить: Как прошить микроконтроллер AVR? | Практическая электроника

Как проще всего прошить микроконтроллер? — Eddy site

Регулярно получаю этот вопрос от тех радиолюбителей, которые раньше с PIC-контроллерами дела не имели, используя «более простые и народные» AVR-контроллеры.

Второй по частоте вопрос: где фузы к прошивкам? Как фузы надо выставлять??

Так как я слегка ленюсь многократно писать одно и то же, я решил снять короткое видео о том, как прошивать PIC контроллер с помощью программатора PICkit2 или PICkit3, который на Алиэкспресс стоит 8 долларов:
https://aliexpress.ru/af/PICkit2.html?d=y&origin=n&SearchText=PICkit2&catId=0&initiative_id=SB_20210309101908

Это ВЕСЬ процесс прошивки в PIC12F629 последнего моего проекта «мягкого будильника». От начала и до конца. Больше ничего не надо делать. Только впаять контроллер в плату.
И всё.

🙂

 

На момент начала записи контроллер уже находится в панельке. При запуске программатор автоматически определяет наличие и тип контроллера и сам не него настраивается.
То же самое происходит и при открытии файла прошивки.

Исключение — мелкие контроллеры PIC10 — у них нет DivicID, по которой программатор определяет вставленный в панельку чип. Для десятой серии надо контроллер выбирать вручную (меню Device Family -> Baseline) — на экране появится окошко с полем выбора контроллера.

После выбора типа контроллера дальше всё как в видео. Ничего другого делать больше не надо.

Для прошивки новых семейств микроконтроллеров от Microchip, имеющих низковольтное ядро (4-5 знаков после буквы F в названии), нужно обновить файл описаний контроллеров у программатора (гугол ищет за секунду) и сделать на один клик больше, указав низковольтное ядро.

Ну и  прошивка крошки PIC10F200.

 

Архив файла конфигурации с поддержкой новых контроллеров скачать можно бесплатно тут.

(его нужно положить в папку установленной программы управления PICkit2 или PICkit3 взамен старого)

P.S. Если Вам этого мало и Вы хотите полнее использовать возможности программаторов, очень неплохая инструкция на русском языке есть на этом ресурсе

В том числе и обновления для новых контроллеров:
http://pickit2.ru/doku.php/%D1%80%D0%B0%D0%B7%D0%BD%D1%8B%D0%B5.%D1%85%D0%B8%D1%82%D1%80%D0%BE%D1%81%D1%82%D0%B8#%D0%BF%D0%BE%D0%B4%D0%B4%D0%B5%D1%80%D0%B6%D0%BA%D0%B0%D0%BD%D0%BE%D0%B2%D1%8B%D1%85%D0%BA%D0%BE%D0%BD%D1%82%D1%80%D0%BE%D0%BB%D0%BB%D0%B5%D1%80%D0%BE%D0%B2%D0%B2pickit2

Если у Вас возникнут вопросы или Вы захотите связаться со мной, сделайте это с помощью формы на страничке «Обратная связь»

cxema.org - Прошивка микроконтроллеров AVR

Не редко, в радиолюбительской практике, возникает необходимость в прошивке микроконтроллера семейства AVR. Для себя я решил эту проблему изготовлением простейших программаторов под самые ходовые микроконтроллеры среди радиолюбителей, для ATMEGA8 и ATtyny2313. Схема программатора очень проста, при его изготовлении не возникнет проблем даже у начинающего радиолюбителя.

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

Этим программатором можно прошить любой микроконтроллер семейства AVR, достаточно подключить выходы программатора к соответствующим ножкам микроконтроллера:

Для прошивки AVR микроконтроллеров я использую специализированную программу PonyProg.

При первом включении программы, требуется указать программе используемый нами программатор и куда мы его подключили, для этого, заходим в настройки оборудования,

выбираем последовательный порт, тип программатора - SI Prog API, выбираем COM порт, в который воткнули программатор, и жмём кнопку "Проверка", Если всё сделали правильно, появится соответствующее окошко. Если нет, ищите ошибки в монтаже.

После удачно пройденого теста необходимо пройти калибровку программы под ваш компьютер, для этого выбираем соответствующий пункт меню в разделе настроек. В появившемся оне жмём утвердительно кнопку "Да".

Об окончании калибровке программа сообщит соответствующим появившемся окошком. Эта процедура проводиться только один раз, при первом подключении программатора к компьютеру, и в дальнейшем проводить не требуется. Что бы убедиться в работоспособности программатора на панели выбираем семейство "AVR micro", тип подключенного микроконтроллера, в моём случае ATmega8, и жмём кнопку "Читать содержимое устройства".

Начнётся процесс чтения, и по окончании программа выдасть код, содержащийся в памяти микроконтроллера. Если микроконтроллер новый, память будет забита единицами. В шеснадцатеричном коде - FF.

Для записи в микроконтроллер необходимого кода жмём на кнопку "Открыть содержимое устройства из файла", выбираем необходимый HEX файл и жмём открыть.

Программа отобразит открытый код. Далее жмём кнопку "Запись устройства".

В появившемся окне жмём ДА. Начнётся процесс записи.

Потом проверки, и в случае успешной записи, программа выдаст соответствующее сообщение.

Некоторые авторы выкладывают прошивку не целиком, а по отдельности. Отдельно область программ и отдельно область данных. То же самое, но для чтения и записи используются соседние кнопки с буквами P (программа) и D (данные). Файлы могут иметь расширение не HEX, а e2p.

Теперь настал самый ответственный момент, требующий особого внимания, это запись битов конфигурации (fuse bits). Для этого жмём кнопку с замком "Биты конфигурации и защиты". Откроется соответствующее окно, в котором необходимо расставить "птички" так, как рекомендует автор устройства, которое вы повторяете.

После чего жмём ОК, начнётся запись конфигурации.

Это самый ответственный момент, из-за неправильно установленных битов конфигурации можно заблокировать микроконтроллер, и его работа может быть неправильная, а перепрограммирование будет возможно лишь на параллельном программаторе, конструкция которогог довольно сложна. Все авторы работают с разными программами, в которых биты конфигурации выставляются по разному. Для примера, теже биты конфигурации, но в программе Algorithm Builder

Обратите внимание, биты конфигурации выставлены инверсно!

Что бы не возникало вопросов, как надо выставлять фьюзы, перед изменением битов жмём кнопку "Читать" и смотрим на бит SPIEN, по умолчанию он всегда включен. Этот бит разрешает последовательное программирование. В PonyProg он специально заблокирован, что бы его случайно не выключить. Сравнивая этот бит в статье автора и со своей программой делаем выводы, как надо ставить биты, инверсно или нет, так как у автора он тоже включен!

Существуют программаторы, подключаемые к USB разъёму компьютера, собрал и я себе такой

Сразу же возникли проблемы с драйверами под windows7. Так же проблемы с софтом, так как не каждая программа умеет с ним работать. Пробовал разные версии прошивок программатора, различные варианты разных авторов, но всё таки отложил его в сторону.

Плата программатора для ATmega8 в формате lay тут

Как прошить микроконтроллер PIC?

Работа с программой PicKit2 Programmer

Если вы уже собрали USB программатор PIC своими руками, то пора научиться им пользоваться. Для этого нам необходимо установить программную оболочку "PICkit 2 Programmer", которая разрабатывалась специально для управления программатором PICkit2.

Для работы программы требуется .NET Framework. Если этот пакет не установлен на компьютере, то его нужно установить. Также можно воспользоваться дистрибутивом "PICkit 2 Programmer" с интегрированным пакетом - PicKit 2 V2.61 Install with .NET Framework. Скачать его можно здесь.

Итак, если программа установлена, приступим к изучению её возможностей.

Устанавливаем микроконтроллер в панель программации, подключаем программатор к компьютеру и запускаем "PICkit 2 Programmer".

При запуске программа производит опрос программатора и автоматически определяет тип программируемого микроконтроллера по идентификационным битам (так называемому device ID). Внимание! Микросхемы семейства Baseline, а также микросхемы EEPROM и KeeLOG не имеют device ID. Чтобы программа смогла работать с этими микросхемами, нужно выбрать конкретное изделие через меню "Device Family".

Если вместо такой дружелюбной картинки покажется вот такая...

..., то нужно проверить корректно ли подключен usb-кабель, и через меню "Tools" - "Check Communication" произвести переподключение устройства.

Открытие файла с прошивкой.

Чтобы записать программу МК в его память, необходимо выбрать в меню пункт "File" - "Import Hex".

Затем выбрать в открывшемся окне нужный файл прошивки.

После этого в окне памяти программ (Program Memory) и данных (EEPROM Data) отобразится содержимое .hex файла.

Запись программы в МК.

Теперь можно программировать МК. Для этого жмём кнопку "Write". Процесс записи занимает 3 - 5 секунд.

Об успешном выполнении процедуры записи уведомит надпись "Programming Successful".

Для большей уверенности можно провести процедуру проверки. При нажатии на кнопку "Verify" программа сравнивает данные hex-файла и данные, записанные в МК. Если верификация прошла успешно, то в окне сообщений появится надпись "Verification Successful".

Внимание! Если вы прошиваете микроконтроллеры PIC12F675, PIC12F629 и аналогичные с внутренним тактовым генератором, то при верификации может выскакивать ошибка. Дело в том, что PICkit2 Programmer (версии 6.21) сохраняет калибровочную константу, а затем записывает её в последнюю ячейку памяти МК. Понятно, что исходный файл прошивки и записанные данные в памяти будут отличаться. О калибровочной константе будет рассказано далее.

Быстрые кнопки.

Кнопка "Auto Import Hex + Write Device" понравиться тем, кто хочет "загонять прошивку" в МК нажатием одной кнопки. Один щелчок и программа предложит выбрать файл прошивки, а затем незамедлительно запишет её в МК.

Кнопка "Read Device + Export Hex File" выполняет обратную функцию - производит считывание данных с МК и предлагает сохранить файл прошивки в .hex файл.

Изменение битов конфигурации.

Биты конфигурации задают основные параметры работы МК. Это и тип генератора (кварц, RC-цепь), включение/отключение так называемого "сторожевого таймера", установка защиты от считывания памяти программ и некоторые другие. Как правило, при написании алгоритма работы МК (программы) прописываются значения, которые нужно записать в биты конфигурации. При "прошивке" программная оболочка берёт данные о конфигурации из самого файла прошивки и принудительно указывать эти данные не требуется.

Но, нам, как начинающим не будет лишним знать, как можно просмотреть или изменить конкретные биты конфигурации. Для этого щёлкаем по надписи "Configuration". Откроется окно редактирования битов конфигурации.

Если нужно поменять 0 на 1, то меняем - жмём "Save". Естественно, менять надо осознанно. Повторяю, при использовании готового файла прошивки менять ничего не надо, программа сделает всё автоматически.

Выбор модели микроконтроллера.

Микроконтроллеры бывают разные. Поэтому при программировании МК бывает необходимость указать конкретную модель микроконтроллера. При выборе пункта меню "Device Family" выпадает список семейств микроконтроллеров. Есть среди этого списка и микросхемы памяти EEPROM.

В отличие от микроконтроллеров, микросхемы памяти EEPROM не определяются автоматически по команде "Tools" - "Check Communication". Поэтому при считывании/записи микросхем EEPROM в программе необходимо указать маркировку микросхемы.

В меню выбираем пункт "Device Family" - "EEPROMS" - "24LC".

Далее выбираем конкретную марку микросхемы в выпадающем списке "-Select Part-". Как видим, у нас микросхема 24LC08B (аналоги 24C08, 24WC08L и др.).

Чтобы считать данные с микросхемы EEPROM жмём "Read". Если в памяти записаны данные, то в окне "Program Memory" значения обновятся.

Кнопки "Write" (считать), "Erase" (стереть) выполняют соответствующие функции.

Калибровочная константа.

Как известно, для работы микроконтроллера требуется тактовый генератор. Элементом, который задаёт частоту работы этого генератора, может быть внешний кварцевый резонатор, RC - цепь. Но среди микроконтроллеров PIC есть такие, которые содержат необходимые задающие цепи внутри самой микросхемы. К таким МК относятся, например PIC12F629, PIC12F675.

На заводе в память таких микроконтроллеров записывается специальная константа, которая задаёт параметры встроенного генератора на 4 МГц. Эта калибровочная константа вида 34хх записывается в последнюю ячейку памяти программ по адресу 0x3FF.

При программировании микроконтроллера эту константу легко стереть. И хоть PICkit2 Programmer версии 2.61 автоматически сохраняет эту константу и затем записывает её при программации, не лишним будет записать значение константы OSCCAL.

При необходимости константу легко указать вручную. Для этого в меню выбираем пункт "Tools" - "OSCCAL" - "Set Manually".

В поле "OSCCAL value" указываем ранее записанное значение константы. Жмём кнопку "Set" (установить).

Теперь, когда вы знакомы с основными возможностями PICkit2 Programmer, можно смело начать сборку какого-нибудь устройства на микроконтроллере, например, RGB-светильника на PIC12F629/675.

Главная &raquo Микроконтроллеры &raquo Текущая страница

Также Вам будет интересно узнать:

 

Грызем микроконтроллеры. Урок заключительный. Прошивка.

Ну вот, писать программы для микроконтроллеров мы научились. Работоспособность прошивки тоже проверили, пусть и виртуально.
Пора переходить на следующую ступень. Раньше мы их боялись, а теперь - они нас!
Будем шить, шить и еще раз шить!!!
Микроконтроллеры корпорации Atmel имеют очень удобный, особенно нам, изобретателям, интерфейс программирования.
Называется он Serial Programming Interface (SPI), или, интерфейс последовательного программирования.

Причем, большинство контроллеров серии AVR поддерживают режим ISP (In System Programming) - Внутресхемное программирование.
Т.е., программировать мы можем уже впаянный в наше устройство микроконтроллер.

Но чтобы воспользоваться всеми этими возможностями, нам нужен программатор...
В интернете можно найти немало схем, но нам будет достаточно самой простейшей, тем более, что CVAvr ее поддерживает

Называется эта схема "Пять проводков". Почему? Да потому, что пять проводов, подключенных к LPT порту компьютера и будут простейшим программатором.

Резисторы можно и не ставить, но без них можно спалить выходы LPT порта (не лучший исход!), что приведет к необходимости сборки более сложного программатора, или необходимости покупи новой материнской платы.

А еще лучше собрать программатор с буферной микросхемой. Это сохранит ваши LPT порт и нервы
Хотя я, в силу своей лени, так его и не собрал...

А на плате нашего устройства предусматриваем разъем для подключения этого самого программатора. К каким выводам МК всё это подключать смотрим в даташите, в разделе Memory Programming ->SPI.

После сборки программатора и нашего устройства, переходим к самому процессу прошивки.

Создаем новую или открываем готовую программу, компилируем.

В меню выбирам команду

И устанавливаем тип программатора STK200+/300

Теперь жмем кнопочку

Открылось окно, в котором уже любезно выбран наш тип микроконтроллера.

Обратите внимание на правую часть окна

Это фьюз биты. Они отвечают за настройку основных режимов работы микроконтроллера.
К примеру, фьюзы CKSEL и CKOPT отвечают за выбор тактового генератора микроконтроллера, а SUT - определяет время, необходимое для установления четкого тактового сигнала.

Для начала очень советую отключить галочку "Program Fuse Bit(s)", во избежание неприятных последствий. И по даташиту на ваш микроконтроллер изучить назначение каждого фьюза!

Вот таблица для настройки фьюз-битов для разных тактовых генераторов.

ОЧЕНЬ ВАЖНО! В таблице "1" означает НЕ запрограммированный бит! В CVAvr это означает СНЯТУЮ галочку. И вообще, если говорят, что фьюз запрограммирован, то это значит, что он равен НУЛЮ, а если НЕ запрограммирован, то он равен ЕДИНИЦЕ. Значение каждого вьюза лучше проверить десять раз, иначе потом будет много проблем!

Теперь, чтобы запрограммировать конроллер нам достаточно нажать кнопку

Или, можно вручную очистить память МК

И прошить туда программу

Вот и всё! Отключаем программатор и наслаждаемся результатом

Схемы программаторов и таблица настройки фьюзов взяты с сайта //avr123.nm.ru/.
Советую почитать! Там можно найти много полезной информации по микроконтроллерам!

Камрад, рассмотри датагорские рекомендации

🌻 Купон до 1000₽ для новичка на Aliexpress

Никогда не затаривался у китайцев? Пришло время начать!
Камрад, регистрируйся на Али по нашей ссылке. Ты получишь скидочный купон на первый заказ. Не тяни, условия акции меняются.

🌼 Полезные и проверенные железяки, можно брать

Куплено и опробовано читателями или в лаборатории редакции.

 

Краткий учебный курс - Самоучитель - Программирование микроконтроллеров AVR - быстрый старт с нуля

 

- страница  7 -

Всё о прошивке AVR
микроконтроллеров AVR

Чем и как "прошить" МК AVR, ATmega, ATtiny.

Как загрузить программу в микроконтроллер.

Как запрограммировать микроконтроллер AVR.

Я советую прошивать микроконтроллер AVR из удобного интерфейса программирования встроенного в компилятор CVAVR  CodeVisionAVR

Можно через простейший адаптер - буквально "пять проводков" (схема ниже) соединяющих принтерный порт ПК с прошиваемым микроконтроллером AVR.

Но более удобны программаторы подключаемые в USB или COM порты ПК - особенно в USB.

 

Книги по электронике и микроконтроллерам  скачать в библиотеке

Страницы курса :   заглавная    1   2   3   4   5   6   7   8   9

Задачи-упражнения курса по AVR  -   там
 

Скачать весь курс по AVR одним архивом на заглавной странице курса.

Электрический ток. Закон Ома
Последовательное и параллельное соединение проводников
Правила Кирхгофа для разветвленных цепей
Работа и мощность тока
Электронно-дырочный переход. Транзистор

 


ПРОГРАММИРОВАНИЕ  AVR

Результат написания и компиляции программы - файл-прошивку с расширением .hex (и возможно файл  .epp  или  .bin  с содержимым для EEPROM МК) нужно записать ("зашить", "загрузить", "прожечь") в МК AVR.

МК AVR можно (пере-) программировать не менее 10000 раз, при чем это можно делать прямо в устройстве в котором они будут работать - такое программирование называют "в системе" - "ин систем программин" или ISP.

Компания ATMEL рекомендует установить на плате устройства специальный разъем для подключения программатора. 

Например 6 штырьков для ISP прошивания AVR

Вид сверху платы на штырьки. 

 


или 10 штырьков  в аналогичном порядке ( NC - значит не подключен )

Все контакты ISP разъема подсоединяются к  ножкам  МК в соответствии с названиями сигналов !  Исключения указаны ниже.


Вывод 2 нужно подключить к " + " питания МК если вы собираетесь использовать программатор питающийся от вашего же устройства - например фирменный ISP AVR либо если вы хотите питать ваше устройство от USB при использовании программатора указанного выше.  Для адаптера "5 проводков" этот вывод не подключается.


Для ISP программирования достаточно 5 контактов. Соответственно и разъем который вы будете использовать может быть любым удобным для размещения на плате и имеющий минимум 5 контактов - например в один ряд.

Я использую и считаю это очень удобным 6 штырьков расположенные в 1 ряд, в том порядке как расположены ножки программирования у ATmega16 ( рисунок есть на страничке 6 ) - при этом разводка линий программирования получается простейшей.  Такой разъем легко применять и для 28 выводных AVR  ATmega8  ATmega48 ATmega88  ATmega168 ATmega328 только сделать отдельный проводник для подключения к контакту RESET.

 

     
 

ВНИМАНИЕ !

1) в ATmega64 и ATmega128  выводы MOSI и MISO не применяют для ISP программирования.  Используются другие выводы МК  !

Внимательно смотрите ДатаШит вашего МК !    
 

в ATmega128 ATmega64  сигналы ISP программатора

MISO подключают к ножке PE1

MOSI подключают к ножке PE0


Для ATmega640 -1280 -1281 -2560 -2561 смотрите в даташит 
Table 163. Pin Mapping Serial Programming.

2) Вывод PEN нужно подключить к питанию VCC резистором 1-10  кОм

3) в ATmega128 и ATmega64 есть FUSE бит совместимости со старым МК ATmega103 и с завода он запрограммирован в "0" на совместимость.
См  Table 117. Extended Fuse Byte. 
При прошивании ATmega128 и ATmega64 вам нужно сделать этот fuse "1" -  "не запрограммирован".    Убрать галочку в CVAVR.
 

Подробней о фьюзах ниже и на стр. 2 курса

 
     

Трудно сразу написать правильно работающую программу, даже после прогона и отладки в софт эмуляторе - симуляторе VMLAB или PROTEUS ваше реальное устройство с реальным AVR может делать не то, что вы от него ожидаете.

Значит в программу нужно будет вносить изменения, перекомпилировать и снова зашивать в МК AVR, и так раз 20-40 и более поэтому разумно использовать отличный программатор AVR в уже имеющемся у вас CVAVR в котором вы правите программу.  


 

В меню CVAVR  "Сеттинс  -> Программер" вам надо выбрать ваш адаптер (подробней про адаптеры ниже!) для программирования.

 

Вариант 1.   Только если вы понимаете что такое фьюзы и знаете как правильно их установить !!!   Вы можете в компиляторе CodeVisionAVR открыть меню "Проджект -> Конфига -> Афта Мэйк"  и отметить чек бокс  "Program the chip". Появится окно программирования-прошивания AVR 

 

В этом окне надо установить параметры программирования - фьюз биты и лок биты - об этом подробней написано ниже. После установки параметров программирования нажмите ОК.

 

Теперь после компиляции программы без ошибок в окне с результатами компиляции вам будет доступна кнопка "Program" - нажмите на нее и, если все подключено правильно, произойдет программирование МК - т.е. файл .hex будет загружен в память программ МК и (если используется в программе) файл EEPROM будет в нее загружен. Затем МК будет "сброшен" (на ножку RESET будет подан лог. 0 а затем опять "1") и AVR начнет выполнять уже новую, только что прошитую (загруженную в него) программу.

Вам даже не нужно будет отсоединять адаптер программирования от вашего устройства  если вы не используете в вашем устройстве последовательный интерфейс SPI. 

... и так до окончательной отладки устройства.

 

Вариант 2.   Если вы не устанавливали чек бокс  "Program the chip" или

Если вы хотите без компиляции прошить с помощью CVAVR готовые файлы прошивки .hex и возможно содержимое EEPROM в микроконтроллер AVR

1) запустите программатор CVAVR кнопочкой "МИКРОСХЕМА" правее "красного  
    жучка" в верхней панели инструментов.  Появится окно программирования AVR

  

2) Откройте меню "File" затем "Load FLASH" - выберете файл прошивки .hex который нужно прошить в AVR (CVAVR поддерживает и другие форматы, а не только .hex) и щелкните "Открыть".  

3) Если у вас есть информация для загрузки в EEPROM AVR то откройте меню "File" затем "Load EEPROM" - выберете файл .epp  (CVAVR поддерживает и другие форматы) и щелкните "Открыть".

Если вы не используете EEPROM или не меняете ее содержимое - поставьте галочку у "Preserve EEPROM" - это ускорит прошивание.

4) Установите параметры программирования - фьюз биты и лок биты.

Лок биты устанавливают уровень защиты вашей программы от чтения из памяти AVR - это актуально для коммерческих изделий. Для защиты прошивки отключите отладочные интерфейсы JTAG или "уан вая" и  установите "Programming and Verification disabled".

 

ГЛАВНОЕ это правильная установка фьюз битов - fuse AVR ...

5) Запрограммируйте AVR не кнопкой "Program All", а через меню "Program" -  Стереть, потом FLASH, потом EEPROM и если надо и если вы уверены в их установке то и фьюзы. 

После прошивания, если вы сделали все правильно, AVR начнет выполнять уже новую программу.

 

     
 

В А Ж Н О !  

В диалоге настройки прошивания отключите программирование фьюзов МК  уберите галочку у Program Fuse Bit(s) - если не разобрались четко, что они делают и как правильно их установить ! 

Иначе вы можете отключить режим ISP или внутренний RC-генератор и для следующего программирования вам понадобится ставить кварц с конденсаторами или даже искать:

Параллельный программатор для AVR


Но популярному ATtiny2313 даже параллельный программатор
не всегда поможет !    В Errata на ATtiny2313 было написано:

Parallel Programming does not work
Parallel Programming is not functioning correctly. Because of this, reprogramming
of the device is impossible if one of the following modes are selected:
– In-System Programming disabled (SPIEN unprogrammed)
– Reset Disabled (RSTDISBL programmed)
 

 
     

 

в ATmegaXXX с завода включен внутренний RC генератор
на  частоте 1 МГц  
( уточните это по ДШ  и его возможные частоты )

Если вам нужна другая частота или нужно включить внешний кварцевый или керамический резонатор - вам нужно при программировании МК установить фьюзы (Fuses) по таблицам из ДШ ( Даташит AVR на русском языке ) или по таблице фьюзов на стр. 2 или по таблице установки фьюзов ниже :

ЗАПОМНИТЕ :

НЕ запрограммированный  фьюз        1

ЗАпрограммированный   фьюз             0
 

Пример: Чтобы включить в ATmega16 внешний кварцевый резонатор (говорят просто - "кварц") с частотой от 3 до 8 МГц с конденсаторами ( по схеме рис. 12 ДШ ) найдите в ДШ раздел "System Clock" - "системный тактовый сигнал".

В таблице 2 указаны комбинации фьюзов для разных источников тактового сигнала.
Далее написано что с завода МК поставляется с такой комбинацией фьюзов

CKSEL   0001     SUT  10       CKOPT   1


По таблице 4  находим :   в ATmega16 для кварца с частотой от 3 до 8 МГц  нужны конденсаторы от 12 до 22 пФ и  вот  такая  комбинация  фьюзов :

CKSEL   1111     SUT  11       CKOPT   1

Вот скриншот с такой установкой фьюзов в программаторе компилятора  CVAVR


Сняв галочку Program Fuse Bit(s) вы cможете не менять установку фьюзов при прошивании AVR !

НЕ НАЖИМАЙТЕ кнопку "Program All"  -  она прошивает и фьюзы не смотря на отсутствие галочки.

 

Обязательно !!! Прочитайте текущую комбинацию фьюзов в микроконтроллере - "Read" -> "Fuse bit(s)" и скопируйте ее в окно фьюзов.  теперь при случайном нажатии кнопки "Програм ол" в МК прошъется та же комбинация фьюзов которая есть сейчас.

 


Фьюз биты - фьюзы AVR - у которых нет галочки после прошивки AVR будут
равны "1" - т.е. будут  не запрограммированными.

 

Реклама недорогих радиодеталей почтой:


Для прошивания МК используйте меню  "Program"

Вначале  "Erase chip" - стереть чип.

Затем "FLASH"  - прошить программу в МК

И если надо то  "EEPROM" - прошить в EEPROM.


 

Для использования ATmega16 (и других мег) с внешним кварцевым или керамическим резонатором на частотах выше 8 МГц вам нужно установить фьюзы как в примере выше, но запрограммировать CKOPT  
значит сделать его "0".

Т.е. вам нужна такая комбинация:

CKSEL   1111     SUT  11       CKOPT   0

 

CKOPT   - нужен и тогда когда вы хотите взять с XTAL2 тактовый сигнал для другого
микроконтроллер или тактируемого прибора в вашем устройстве.
 

Фьюзы  SUT   - определяют быстроту запуска генератора тактового сигнала,
более детально это описано в даташите в таблицах до 12.
 


Фьюзы ATtiny2313 описаны в конце следующей страницы курса.

 

 

Интерфейс программирования AVR - Адаптер для соединения МК с ПК при прошивании.

Для соединения компьютера с ISP разъемом устройства на AVR Советую сделать адаптер от STK200  - это "правильные 5 проводков" с микросхемой буфером снижающим вероятность случайного повреждения порта ПК.

В установках компилятора CodeVisionAVR интерфейс "5-проводков" называется  "Канда системз STK200+/300".  Меню "сеттингс" - "программер". В этом же диалоге можно понизить частоту с которой программатор будет обмениваться с прошиваемым МК увеличивая множитель задержки.

Частоту тактирования сигнала SCK программатором при прошивании можно установить в диалоге программирования в CVAVR. 



Снижение частоты на SCK повышает помехоустойчивость при прошивке.

Программа узнаёт адаптер STK200 по перемычкам на разъеме параллельного порта к которому он подключается - должны быть соединены двумя перемычками пары выводы: 2 и 12,  3  и 11. 

     
 

Внимание!  

Для программирования к МК должно быть подключено питание. Например +4...+5.5 вольт ко всем выводам МК в названии которых есть VCC , а  0 вольт ко всем выводам GND (это "общий" провод).    

Обязательно поставьте подтягивающий резистор 10 кОм от ножки RESET AVR на питание VCC и конденсатор 0.01-0.15 мкФ (в апноутах AVR040 и AVR042 рекомендуют 0.01 мкФ) от RESET на GND .

Пример схемы там

 
     

 
Если в МК нет внутреннего генератора тактового сигнала (например старые AVR серии AT90sXXXX или мега побывавшая в чьих то шаловливых руках изменивших фьюзы до того как попасть к вам) то нужно подключить кварц
на 1 - 8 МГц и два конденсатора от 15 до 33 пФ. 

Либо подать тактовый сигнал 0.8-1.5 МГц от внешнего источника -
например генератора на микросхеме 74hc14 (аналог 1553ТЛ2) или на таймере LM555.

Вот как сделать простой генератор тактовой частоты :

 


Программатор  AVReAl  может программировать МК без кварца и без конденсаторов ! Он выводит тактовый сигнал на выв. 5 LPT его нужно подать на ножку XTAL1 МК и добавить в командной строке AVReAL специальный ключ  "-o0".  Программатор  AVReAl  позволяет назначать какие ножки LPT порта использовать - это будет полезно когда часть ножек LPT вы уже спалите  
  🙂

 

Если вы считаете эту информацию полезной, пожалуйста, помогите информировать в интернете о курсе - просто щелкните по банеру. Большое спасибо !
Electronic Banner Exchange (ElBE)


Тактовый сигнал генерирует и самодельный программатор AVR
для  USB - смотрите ниже на этой странице.

 

     
 

Я использую самый простой вариант адаптера
STK200 - "для самых ленивых"   

Пять поводков соединяющих линии параллельного (LPT) порта ПК и AVR так же как на схеме STK200 выше, но без микросхемы буфера. 

Лучше все же токоограничительные резисторы от 150 до 270 ом впаять Береженого бог бережет !
 

Проводки не более 15 см длиной !

 
     

 

 

Адаптер "5-проводков" прекрасно работает с компилятором CVAVR  CodeVisionAVR.

Я проверял "проводки" при питании МК ATmega64L от 3,0 до 5,3 вольт, а так же с ATmega16, ATmega48, ATtiny26, ATtiny261, ATtiny13, ATtiny2313 - программирует всегда без сбоев!  

Всё о прошивке AVR Прошивка AVR PIC прошивки Программирование PIC и AVR

     
 

Советую для изготовления адаптера взять " принтерный" шнур - он длинный и экранированный, а не экранированные проводки не стоит делать более 10-15 см.

 
     

 


Питать устройство при программировании можно :

- сетевым адаптеры от бытовых устройств понизив напряжение до 5 вольт. 

- батарейками ! Достаточно три батарейки по 1,5 вольт последовательно. 

+5 вольт можно взять с вывода 1 гейм порта компьютера или из провода включенного в гнездо USB.

Желательно питать устройство от ПК!  В этом случае "земля" вашего устройства будет соединена с корпусом ПК и можно будет безопасно подключать и отключать разъем программирующего адаптера.

 

 
     
 

ВНИМАНИЕ ! 

Вначале старайтесь соединять "земли" (металлические корпуса, "общие" провода) устройств - для уравнивания их потенциалов ! 

Удобно подпаять к проводнику GND устройства проводок с "крокодильчиком" который прицепите к металлу ПК у LPT или COM портов перед подключением разъемов или сигнальных линий, проводов.

Теперь БЕЗОПАСНО соединять разъемы
и затем подавать питание на устройство.

 
     

 

 


Не поленитесь:  спаяйте адаптер STK200 на микросхеме буфере по рисункам внизу страницы  - так как LPT порт компьютера более нежен чем COM - соответственно его спалить проще...     Спалите LPT и будете меня ругать! 

А  я  предупреждал !

 

 

Поставщики AVR говорят что ATTiny2313 поступают с завода с настройкой внутреннего RC-генератора на 4МГц (в даташите указано 8 МГц) с делителем частоты на 8  - т.е. частота тактирования всего 500 КГц. Значит частота на линии SCK, формируемая программатором, не должна быть выше 120..125кГц. 
 


Программатор встроенный в CodeVisionAVR позволяет настроить эту частоту правильно. Выше было написано как.
 

AVReal  тоже.  


 

     
 

Если вы хотите использовать ножки МК SCK, MOSI, MISO в вашем устройстве то подключайте другие компоненты к ним через резисторы 4.7 КОм - чтобы не мешать программированию.

Так рекомендовано в апноуте AVR042

Для Мега64, -128 вместо MOSI и MISO используются другие ножки для ISP программирования !

 
     

 

 

Если у вас нет LPT порта сделайте
Аналог  "5 проводков" для COM-порта.

 


Или соберите простой, дешевый и хороший
USB программатор для AVR

Прошитый микроконтроллер для сборки USB программатора AVR вы можете заказать по почте.

 

     
 


Существуют специальные программы "бутлодеры" (bootloader - начальный загрузчик) 
которые записываются в микроконтроллер способами перечисленными выше и после этого микроконтроллер может сам, при включении, закачивать в себя программу (например из ПК через адаптер USB-UART rs232 COM port - схема в задаче 4 курса) и запускать ее выполнение.

Есть много бесплатных загрузчиков

Вот Bootloader AVR_Arduino.

Вот хороший:   Bootloader AVR.

Вот еще:    MegaLoad Bootloader

STC создал загрузчик bootloader размером 256 байт с поддержкой быстрого страничного режима записи.


Прошитые загрузчиком bootloader микроконтроллеры AVR PIC вы можете заказать по почте.

 
     

 

 

 Дальше - стр. 8 курса.

 

 

Назад на стр. /06.htm - задачи управжнения по AVR

 

 

ниже  

Cписок Апноутов для AVR примеры применения микроконтроллеров.

 

И много полезной информации !
 

Как прошить микроконтроллер

mavrin_88
Загрузка

14.08.2019

339

Вопросы и ответы
Статья относится к принтерам:
Anet A8 Добрый день, перепаял микроконтроллер на принтере Anet A8, теперь осталось прошить его.

Подскажите как правильно прошить и где взять прошивку ?

Купил программатор с алиекспресса AVR USBASP

Ответы на вопросы

Популярные вопросы

sancho
Загрузка

26.02.2021

841

Всем приветНе спешно собираю "Правильную дельту". Тут на форуме видел фото интересных шарниров на тяги для дельта-принтера

Автор...

Читать дальше sKostik
Загрузка

08.03.2021

662

Привет всем. Взял и я себе «игрушку» под названием Anet A8. Решил попробовать себя в 3d печати. Но после сборки удалось поиграть всего несколько часов...

Читать дальше mlizart
Загрузка

07.12.2016

19491

Коллеги, помогите!

На занятиях по моделированию один школьник спросил - Чем 3D принтер отличается от 3D плоттера и что лучше для нови...

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

Прошивка AVR микроконтроллеров с "нуля" / Микроконтроллеры / Блоги по электронике

Микроконтроллеры семейства PIC мы уже научились прошивать вот из этой статьи. Но, существует не менее популярное семейство AVR микроконтроллеров. В этой статье для начинающих будет рассмотрено как же «залить прошивку» в контроллеры AVR.


Еще когда я только начинал осваивать контроллеры семейства AVR сразу встал вопрос, а чем же я буду их прошивать. Как и полагается «полез» в интернет. Много чего я там по находил!
Вариант 1. Прошивка контроллера при помощи технологии «пяти проводков»
Микроконтроллер AVR имеет следующие основные выводы программирования:
MOSI — вход данных
MISO — выход данных
SCK — вход синхронизирующих импульсов
REST — сигнал сброса
Так вот, суть технологии «пять проводков» заключается в том, что выводы программирования
контроллера подключаются напрямую к LPT порту компьютера. Пяты проводок — это общий провод.
Вот схема подключения:

Питание на программируемый микроконтроллер в этой схеме подается от отдельного источника.
Обратите внимание на перемычки между контактами 2-12, 3-11. По наличию этих перемычек программа «прошивальщик» определяет подключение к LPT порту программатора.
Кабель соединяющий компьютер и программатор должен быть экранированный, проводки, соединяющие контроллер должны быть минимальной длины, иначе, посыпятся ошибки при прошивке контроллера.
Это, конечно самый простой способ прошить AVR контроллер. Но у него есть и куча недостатков. Самый большой недостаток — это очень большая возможность «спалить» LPT порт, да и всю материнскую плату, так как никакой защиты для порта не предусмотрено. Но, не все еще потеряно.
Вариант 2. Существуют программаторы, в которых предусмотрена защита. Вот такой нам и нужно собрать, и компьютер цел останется и нервы в порядке.
А будем собирать программатор под названием STK200/300.
Этот программатор получил свое название от комплектующихся им отладочных плат фирмы Atmel для быстрого начала работы с микроконтроллерами At90s8515 и Atmega103. Но, им иожно прошивать и другие типы контроллеров.
Схем в сети этого программатора полно в различных вариация. Вот собственно его схема:

Тут все просто. На входе защитные резисторы от перегрузки по току, далее идет микросхема 74HC244. Это не инвертирующий буфер. Микросхема содержит два независимых четырехразрядных буфера. Каждый буфер имеет свой сигнал разрешения выхода (низкий активный уровень). На входах нет триггеров Шмитта. Микросхема выполнена по технологии “быстрый” КМОП, что обеспечивает высокое быстродействие. Мощный токовый выход делает возможным сохранение высокого быстродействия даже при емкостной нагрузке. Быстродействие 74HC244 сравнимо с быстродействием микросхем, основанных на диодах Шоттки, при этом 74HC244 сохраняет достоинства микросхем КМОП, т.е. высокая помехозащищенность и низкая потребляемая мощность.Входы микросхемы защищены от повреждения статическим электричеством при помощи диодов. Вот блок схема данной микросхемы:

Так что тут все ясно и просто. На входе питания для программатора и контроллера Vcc
сидит светодиод и сигнализирует о подачи напряжения питания. Светодиод на линии LED / XTAL 1(некоторые программы на эту линию выводят тактовую частоту для работы контроллера) помаргивает при программировании. Ну вроде и все! Перейдем к конструкции.
Была сделана печатная плата. Детали в основном SMD. Плату планировалось «запихнуть в стандартную коробочку для разъема DP-25C. Вот в такую:

Плату сделал, надфилем доработал до формы коробочки, запаял детальки:


В крышке разъема потом просверлил отверстия для светодиодов. С платы вывел проводки для подключения контроллера.
Вот файл печатной платы
Все собрано, теперь бы надобно все настроить и опробовать! Поехали!
прошивать будем из программы PonyProg.
Запускаем пони прог. С начала раздастся звук ржания пони, чтоб это в дальнейшем не напрягало, ставим галочку в поле Disable sound, нажимаем ОК. Далее выпрыгнет окошко такого плана:

тут программа нас просит произвести ее калибровку, это нужно для того, чтобы программа проверило „железо“ компа и подстроилось под него, компы ведь бывают шустрые и не очень!)
Нажимаем ОК. Выскочит теперь еще одно окошко:

Тут программа хочет от нас, чтоб настроили интерфейс программирования, проще говоря, указали с каким программатором ей предстоит работать.Нажимаем ОК.
Теперь заходим Setup -> Calibration. Появляется окно:

Нажимаем „YES“ и через некоторое время программа скажет, что „Calibration OK“. Хорошо!
Теперь лезем в Setup -> Interface Setup.

Выбираем параллельный порт ввода/вывода, жмем OK.
Далее лезем в Command -> Program Options. Настраиваем все как на картинке ниже.

Жмем OK. Вот теперь все готово к „прошивке“.
Теперь последовательность действий для „прошивки“ контроллера. Программатор должен уже быть подключен к LPT порту, контроллер к программатору и подано питание на программатор и контроллер.

1. Тут выбираем из списка тип семейства контроллеров „AVR micro“
2. Из другого списка выбираем „ATtiny2313“
3. Загружаем файл прошивки (File -> Open Device File), выбираем нужный файл.
4. Жмём кнопку „Launch program cycle“. Когда программирование завершится, прога скажет „Program successful“
5. Ну и напоследок надо запрограммировать так называемые Фьюзы (fuses). Для этого жмём кнопочку „Security and Configuration Bits“.

В появившемся окне жмём „Read“, потом выставляем галочки фьюзов так, как нам нужно для конкретной схемы и жмём „Write“. Все, все „прошито“ Подробнее об этих самых фьюзах можно почитать тут и тут — тут приводить описание не вижу смысла, уже все давно рассмотрено!
А если у нас есть в наличии современный компьютер или ноутбук, где нет LPT порта вообще?
Как тогда быть? А тогда надо делать USB программатор. В принципе, тут тоже уже все давно придумано. Я собрал себе USB программатор AVR910. Вот официальный сайт его разработчика. Повторюсь, и приведу тут схему данного программатора.

Описание работы здесь не привожу, кто захочет, почитает на страничке автора. Единственный недостаток этого программатора — для прошивки контроллера программатора нужен программатор. Но, думаю где-нибудь найти компьютер с LPT портом, чтоб прошить контроллер хоть „5 проводками“, думаю еще можно!) Была разведена печатная плата, все смонтировано. На плате было выведено +5 вольт с USB порта для питания программируемого контроллера.
Светодиоды HL1 и HL2 загораются при чтении/записи контроллера, светодиод HL3 сигнализирует о подачи питания с USB порта. Перемычкой J1 LOW возможно понижать тактовую частоту порта SPI МК программатора до ~20 кГц. При разомкнутом джампере частота SPI нормальная, при замкнутом — пониженная. Cкорость работы порта SPI МК программатора при разомкнутом джампере J1 равна 187,5 кГц. Это позволяет программировать контроллеры с тактовой частотой примерно от 570 кГц для tiny/mega, 750 кГц для 90S и 7,5 МГц для 89S.
На вывод LED разъема выведен меандр с частотой 1 МГц для „оживления“ МК, у которых были ошибочно запрограммированы фьюзы, отвечающие за тактирование. Сигнал генерируется постоянно и не зависит от режима работы программатора.
Программатор позволяет программировать все контроллеры AVR, поддерживающие ISP (In System Programming — Программирование В Системе), а так же МК серии 89S — 89S53 и 89S8252.
Джампер J2-J3 служит как для начального программирования микроконтроллера (замкнут J2 — MOD), так и для использования в качестве разъема программатора (замкнут J3 — NORM)
Была разведена печатная плата.


Микроконтроллер ATmega8 в программаторе был взят в корпусе TQFP32, если использовать в корпусе DIP28, то следует учесть, что нумерация выводов у МК в корпусах TQFP отличается от нумерации выводов МК в корпусе PDIP-28.
Подключил собранный программатор к программатору STK 200/300, поставил джампер J2, воткнул кабель от программатора в USB порт, запустил Pony Prog и прошил.
Вот файл прошивки.
После система определит новое устройство — AVR910 USB Programmer, при предложении автоматически найти драйвер, отказаться, и указать путь к файлу prottoss.avr910.usb.inf Качаем его здесь.
Система начнет устанавливать драйвер. Если установка драйвера прервется и система попросит указать путь к файлу lowcdc.sys
то указываем где он у нас лежит, вот ссылка для скачивания данного файла. Система должна его увидеть и закончить установку драйвера.
Программатор установлен в системе. Теперь настроим его для работы в программе прошивальщике. К сожалению этот программатор не работает в программе Pony Prog. Работает он в таких программах:AVRProg v.1.4 (входит в пакет AVRStudio), ChipBlasterAVR v.1.07 Evaluation, AVROSP (ATMEL AVR Open Source Programmer), CodeVisionAVR.
Рассмотрим настройку данного программатора в программном пакете CodeVisionAVR.
Качаем ее тут. Теперь самое главное. Щелкаем левой кнопкой на значке „Мой компьютер“,
в выпадающем меню выбираем „Свойства“
Вот так получится:

переходим на вкладку „Оборудование“

запускаем „Диспетчер устройств“

Выбираем „Порты (COM и LPT)“. Видим там „Virtual Communications Port“ и в скобочках указан номер присвоенного порта, в моем случае это COM5. Запоминаем этот номер.
Теперь запускаем CodeVision AVR. В основном меню нажимаем кнопку „Setting“, в выпадающем меню нажимаем „Programmer“:

Появится вот такое окошко:

В самой первой строчке из списка выбираем наш AVR910, во второй строчке выставляем номер
Com порта, который смотрели в диспетчере оборудования. Остальное оставляем без изменений.
Все, программатор настроен. Теперь немного о том как прошить контроллер в CodeVision AVR.
Итак, в основном меню выбираем „Tools“, далее нажимаем „Chip Programmer“,

появится вот такое окошко:

Рассмотрим, что тут есть и как это работает.
Программатор уже должен быть подключен к Usb, а к программатору подключен контроллер,
в моем случае это будет Atmega 8.
В списке Chip выбираем наш контроллер, теперь нажимаем в меню сверху Read.

В этом меню мы можем запустить чтение содержимого контроллера. Пока, что нас интересуют два пункта, это FLASH и Fuse Bit(s). Если нажать на FLASH, то начнется чтение содержимого
FLASH памяти контроллера, на программаторе будет мигать зеленый светодиод. Итак, FLASH прочитана, а где же глянуть, что же там прочиталось. А вот где. Нажимаем в главном меню
Edit, а выпавшем списке FLASH.

Появится вот такое окно:

Вот, собственно, все содержимое FLASH памяти контроллера, тут можно и отредактировать,
если нужно определенные блоки. Но, пока тут все чисто, во всех ячейка — FFFF.
Если нужно прочитать Fuse Bit(s), то делаем следующее — Read — Fuse Bit(s). Пройдет чтение и вот в таком окошке появятся заводские фьюзы контроллера (если он новый):

С этим думаю, понятно. А как же здесь загрузить прошивку в контроллер. Тоже просто!
Сперва нужно указать сам файл прошивки, которым будем загружать в контроллер. Делается это так. выбираем в меню File, далее выбираем Load FLASH.

Жмем Load FLASH и в появившемся окне выбираем файл прошивки.

Нажимаем Открыть.
Теперь заходим в меню Program.

Если в контроллере были какие-то данные, то сперва стираем его, нажав на Erase Chip, если контроллер новый, то стирать не надо. Теперь нажимаем на FLASH. Программа спросит, действительно ли хотите запрограммировать, на что ответьте ОК. Пойдет процесс прошивки.
Когда он закончился, то теперь нужно запрограммировать фьюз биты. Сперва необходимые фьюз биты выставляем в том же окошке

Запомните, если в квадратике, напротив названия фьюз бита стоит галочка, то фьюз бит не запрограммирован, если не стоит, то запрограммирован.
Когда выставили необходимые фьюз биты, то в пункте меню Program нажимаем Fuse Bit(s). Вот
теперь все. Можно еще раз прочитать содержимое FLASH и удостовериться, что все за программировалось.
Теперь немножко по доработке программатора AVR910. Когда я начал им пользоваться и активно шить контроллеры, то выявил один, вроде и не очень существенный недостаток.
Этот программатор достаточно медленно читает и прошивает контроллеры. Вроде, а куда спешить? Но бывает приходится по десять раз стирать и заново прошивать контроллер во время настройки устройства, вот тогда и надоедает ждать. Поискав по сети решение этой проблемы, нашел! Вот тут.
Автор там переделал прошивку самого программатора и теперь с этой прошивкой он работает намного шустрее. Перешивал при помощи того же STK200/300. Вот файл прошивки и драйвера для Windows. После перепрошивки так же устанавливаем драйвер, но только уже из архива, ссылка на который выше. В CodeVision AVR теперь настраиваем следующим образом:

Новая прошивка эмулирует теперь программатор STK 500. Вот такое превращение).
Далее работаем так же как и описывалось выше, но с заметным приростом скорости работы программатора.
Вот и все, что хотел рассказать. Конечно, все в одну статью не всунешь, так что если возникнут вопросы, задавайте! Думаю, статья поможет тем, кто только начинает осваивать
микроконтроллеры AVR! Микроконтроллеры на базе флэш-памяти

быстро набирают обороты

Микроконтроллеры на базе флэш-памяти

изменили ландшафт для встраиваемых приложений. Скорость программирования и время доступа улучшились. Надежность флэш-памяти больше не является проблемой во всех средах, кроме самых требовательных. Микроконтроллеры на основе флэш-памяти эффективно отказались от технологии одноразового программирования (OTP) и даже опережают решения на основе ПЗУ в некоторых средах, заботящихся о безопасности.

Марк Буччини, менеджер по маркетингу продуктовой линейки MSP430 компании Texas Instruments, указывает, что, хотя на микроконтроллеры на основе ПЗУ приходится около половины текущих поставок, микроконтроллеры на основе флэш-памяти получили более трех четвертей побед в новых разработках.

Технология флэш-памяти оказалась особенно рентабельной для проектов, требующих меньших объемов. Дэвид Ламар, старший менеджер по маркетингу микроконтроллерных продуктов в NEC Electronics, говорит, что микроконтроллеры на основе флэш-памяти часто используются на начальном этапе производства, а ПЗУ в конечном итоге может использоваться для экономии средств. Это позволяет быстро выводить продукты на рынок и обеспечивает гибкость с точки зрения обновлений, в то время как продукты получают выгоду от полевых испытаний.

Энергонезависимая природа технологии флэш-памяти делает ее идеальным дополнением к микроконтроллерам.Возможность перепрограммировать флэш-память позволяет обновлять данные в полевых условиях и сохранять относительно статическую информацию, например параметры конфигурации.

Ожидается, что микроконтроллеры на основе флэш-памяти будут доминировать в мире встраиваемых приложений как минимум в ближайшие годы. Хотя такие конкуренты, как MRAM от Motorola, находятся в стадии разработки, они находятся только на экспериментальной и тестовой стадиях (см. «MRAM: замена для Flash?» Стр. 54).

Поскольку микроконтроллерные среды очень требовательны с точки зрения надежности, цены, производительности и энергопотребления, для широкого внедрения этих новых технологий потребуются годы.Микроконтроллеры на основе флэш-памяти обычно доступны в том же форм-факторе с теми же выводами, что и решения на основе OTP и ROM. Это позволило использовать микроконтроллеры на основе флэш-памяти взаимозаменяемо. Если новая технология будет реализована таким же образом и не будет иметь особых требований к питанию или распиновке, то скорость принятия значительно повысится.

Если бы использование флэш-памяти было просто вопросом включения блока кремния, не было бы такого разнообразия продуктов.На рисунке показано, как микроконтроллеры на основе флэш-памяти могут использовать ряд различных методов, среди прочего, для повышения производительности, надежности и времени программирования. Микроконтроллеры на основе флэш-памяти обычно включают по крайней мере один из этих методов. Некоторые из них обычно используются в высокопроизводительных или очень маломощных микроконтроллерах.

Low Power: ПЗУ потребляют очень мало энергии и энергонезависимы при загрузке. Но разработчики флеш-микроконтроллеров продолжают снижать требования к питанию, делая энергопотребление менее важной проблемой при выборе микроконтроллера.Джефф Лис, директор по маркетингу Philips Semiconductor, говорит, что микроконтроллер LPC900 потребляет всего 1 мкА в режиме пониженного энергопотребления и от 2 до 10 мА на полной скорости, в зависимости от используемых периферийных устройств и тактовой частоты процессора. Эта работа с низким энергопотреблением основана на конструкции, которая сводит к минимуму требования к мощности флэш-памяти, не прибегая к дополнительному оборудованию, например кэшам инструкций.

Нановаттная технология Microchip направлена ​​на работу с низким энергопотреблением за счет применения нескольких методов проектирования.Они варьируются от нескольких режимов управления питанием до поддержки ряда выбираемых источников синхронизации. Замедление процессора снижает энергопотребление системы, в том числе мощность, необходимую для доступа к флеш-памяти.

Технология флэш-памяти PEEC (PMOS Electrically Erasable Cell) Microchip обеспечивает работу с низким энергопотреблением и долгосрочное хранение данных (порядка 40 лет). Для повышения технологичности в ячейке PEEC используется объединенная ячейка с туннельной областью Фаулера-Нордхейма вместо определенного туннельного диэлектрического окна.Однотранзисторная архитектура больше похожа на двухтранзисторную флеш-архитектуру с точки зрения надежности.

Cyan Technology использует другой подход к минимизации общих требований к питанию системы. Cyan eCog использует систему кэширования инструкций SRAM. SRAM потребляет меньше энергии, чем флеш-память, и имеет более быстрое время доступа. Кэш уменьшает количество обращений к флеш-памяти с соответствующим увеличением энергопотребления. Обычно при обращении к флеш-памяти происходит расход заряда насоса в несколько миллиампер.Кэширование используется рядом систем, как правило, для увеличения скорости работы процессора.

Кэш eCog позволяет программистам блокировать код в кеше SRAM. Обычно кеш выбрасывает старый код, чтобы освободить место для нового кода. Это может быть проблемой для реакции на прерывание. Если основное приложение предотвращает кэширование кода прерывания, время отклика на прерывание и энергопотребление увеличиваются. Блокировка кода прерывания в SRAM делает использование мощности и скорости предсказуемым.

Добавьте к этому переключение на более низкую тактовую частоту, и eCog потребляет всего 10 мкА. Этот подход очень хорошо работает для мобильных устройств с батарейным питанием и радио, где устройство обычно ожидает сообщения. Когда eCog обнаруживает входящую информацию, он может переключиться в высокоскоростной режим, разблокировать кэш, а также получать и обрабатывать данные. Это позволяет eCog поддерживать даже мощные устройства, которые в течение длительного времени бездействуют по интерфейсу 802.11.

Высокая производительность: Флэш-память обеспечивает отказоустойчивость и перепрограммируемость, которые требуются разработчикам, но быстрый доступ и время цикла не являются большим преимуществом.Разработчики флэш-памяти продолжают стремиться к максимальной производительности, хотя маловероятно, что флэш-память когда-либо бросит вызов SRAM, другой памяти, присутствующей в каждом микроконтроллере, с точки зрения скорости.

Один из способов ускорить доставку кода в ядро ​​процессора - использовать флеш-память, которая шире, чем инструкции процессора. Ширина 8, 16 и 32 бита является стандартной для массивов флэш-памяти в микроконтроллерах. Но в новом семействе 32/16-разрядных микроконтроллеров Philips Semiconductor, основанном на 32-разрядных процессорах RISC ARM, используется двухтранзисторная ячейка, поскольку она более прочная и требует более низкого напряжения, чем однотранзисторный подход.Кроме того, он имеет минимальный срок хранения 10 лет и ячейки памяти, которые защищены от таких нарушений, как программирование соседних ячеек. Микроконтроллеры будут использовать 128-битную шину флэш-памяти, которая в четыре раза шире, чем инструкции RISC.

Cygnal Integrated Products также увеличивает свою флеш-память на 25 МГц в четыре раза, что позволяет ядру процессора 8051 работать на частоте 100 МГц. Компания использует 32-битную флеш-память для передачи 8-битного потока инструкций процессору, но это только начало.4-байтовый буфер предварительной выборки обеспечивает достаточную буферизацию, чтобы обеспечить последовательный доступ к флэш-памяти на частоте 100 МГц.

Кроме того, Cygnal включает в себя кэш инструкций с 64 записями, чтобы все двигалось, когда выполнение приложения отличается от последовательного потока. 32-битные записи поступают в буфер предварительной выборки, позволяя процессору работать на полной скорости до тех пор, пока к коду обращаются последовательно, или если код содержится в кэше инструкций.

IP2202

Ubicom со скоростью 120 MIPS (миллионов инструкций / с) должен работать на максимальной скорости во многих средах связи, поэтому он содержит два банка SRAM.Один банк может использоваться для памяти программ, если приложение явно перемещает код из флэш-памяти в SRAM. Приложения могут запускаться непосредственно из флеш-памяти, но только при соответствующем снижении производительности и мощности. Уловка для программистов состоит в том, чтобы хранить часто выполняемый код в SRAM. Это не так уж сложно, учитывая, что для этой задачи доступно 16 Кбайт SRAM. Разделение между кодом и данными в этой SRAM было выбрано произвольно, чтобы позволить разработчикам найти компромисс между более высокой скоростью выполнения и большим объемом данных.

Обеспечение безопасности: В то время как низкое энергопотребление и высокая скорость являются обычными соображениями, связанными с конструкциями микроконтроллеров на основе флэш-памяти, безопасность часто игнорируется. При использовании флеш-микроконтроллеров возникает ряд различных проблем безопасности. Защита кода от злоумышленников является проблемой для многих, чья интеллектуальная собственность часто является основным отличительным фактором во многих продуктах, основанных на флеш-микроконтроллерах. Еще одна проблема - предотвращение неправильного доступа для чтения или записи.Ограничение доступа для чтения позволяет скрыть или зашифровать данные, а предотвращение случайной записи защищает приложение от перезаписи.

Что касается защиты кода приложения, Юджин Фенг, бизнес-директор группы продуктов для конкретных приложений Silicon Storage Technology (SST), говорит, что флэш-память более чувствительна к физическому анализу, чем ПЗУ. Таким образом, хотя решительный пират может взломать микросхему и получить прямой доступ к ПЗУ, такой доступ к флэш-памяти обычно приводит к повреждению ее содержимого.

Семейство 8051-совместимых микроконтроллеров SST FlashFlex51 использует технологию SuperFlash CMOS компании. Его функция SoftLock предотвращает обновление флэш-памяти. Эта функция активируется путем установки адреса во флэш-памяти для подпрограммы, которой разрешено выполнять обновления. Зная адрес этой процедуры, как она работает и где она находится, необходимо обновить флэш-память.

Безопасное программирование SST использует преимущества программирования в приложении (IAP) SST.IAP имеет детерминированное время записи и может использовать двухблочную конфигурацию, которая позволяет записывать данные в один блок, в то время как другой блок обращается к программному коду.

Переключение блоков может быть проблемой для прерываний, которые реализуют вектор прерывания во флэш-памяти. SST устраняет эту возможность, позволяя перенаправлять прерывания в другой блок флэш-памяти.

Поскольку размер сектора SST составляет всего 64 байта, он требует точного управления. Но небольшой размер сектора также избавляет от необходимости обновлять блоки гораздо большего размера (64 кбайта для многих других систем).

Еще одна особенность технологии SuperFlash - поддержка программных разделов - позволяет хранить данные во флэш-памяти, которая не используется для памяти программ. Механизм DMA и интерфейс регистрации почтового ящика позволяют использовать флэш-память в качестве хранилища данных без значительного влияния на выполнение программы. Интерфейс перемещает данные в фоновом режиме вместо того, чтобы требовать от приложения ожидания завершения записи во флэш-память.

Независимо от того, что требуется для дизайна встроенной системы - низкое энергопотребление, высокая производительность или безопасность - существуют технологии флэш-памяти, обеспечивающие эти функции.В результате микроконтроллеры на основе флэш-памяти будут основным выбором для разработки встраиваемых систем на многие годы вперед.


микроконтроллер - Flash и EEPROM

В настоящее время флэш-память используется для хранения программного кода, а EEPROM (электрически стираемая постоянная память) используется для хранения постоянных данных. Примерно 30 лет назад, до появления Flash, EEPROM использовались для хранения программного кода.

На самом деле сначала идет ПЗУ (постоянное запоминающее устройство), затем ППЗУ (программируемое ПЗУ, только один раз), СППЗУ (ППЗУ, стираемое УФ-светом), ЭСППЗУ и, наконец, флэш.ПЗУ по-прежнему используются для очень объемных и недорогих приложений (например, говорящих поздравительных открыток).

Важное отличие современных микроконтроллеров состоит в том, что обычно вы не можете выполнять код из EEPROM, а программам неудобно хранить данные во флеш-памяти. (Данные хранятся во флэш-памяти, когда, например, вы используете ключевое слово «const» в объявлении данных или определяете строку, но это обрабатывается за кулисами компилятором и компоновщиком.)

Область EEPROM может использоваться для хранения конфигурации или других данных, которые должны быть доступны при перезагрузках, в том числе в случае, если микроконтроллер потерял питание, а затем снова включился.Функционально вы можете думать о EEPROM как об очень маленьком жестком диске или SD-карте.

На микроконтроллерах без EEPROM можно хранить постоянные данные во флэш-памяти, но это становится затруднительным, поскольку микроконтроллеры на самом деле не предназначены для этого, и вам нужно найти специальное место, которое не будет мешать программному коду, и установить это помимо линкера. Плюс, как упоминалось ниже, обычно вы можете обновлять EEPROM во много раз больше, чем флэш-память.

Если вы выполняете данные программы во флэш-памяти, это не означает, что вы можете получить доступ к данным как к переменным в вашей программе на C, потому что нет способа сообщить компилятору, где эти переменные находятся в вашем коде (т.е. вы не можете привязать константную переменную к этой области флеш-памяти.) Поэтому их чтение должно выполняться через специальный набор регистров, которые используются для их записи. Обратите внимание, что это ограничение распространяется и на данные в EEPROM, поэтому в этом отношении оно не имеет преимуществ.

Для программирования флэш-памяти или EEPROM сначала необходимо стереть блок памяти. Тогда это программируется. Для флэш-памяти запись обычно также выполняется по блокам. Для EEPROM это может быть сделано блоками или байтом за раз, в зависимости от микроконтроллера.

Как для флэш-памяти, так и для EEPROM существует максимальное количество раз, которое вы можете обновить, прежде чем вы изнашиваете память. Это число указано в таблице как минимальное гарантированное значение. Обычно он намного выше для EEPROM, чем для флэш-памяти. Для флеш-памяти я встречал числа всего 1000. Для EEPROM я встречал числа до 1 000 000.

Одно из преимуществ EEPROM над флэш-памятью состоит в том, что вы можете стирать их гораздо чаще, чем флэш-память.

«Самопрограммируемый внутри системы» просто означает, что микроконтроллер может обновлять свою собственную флеш-память во время работы.Эта функция обычно используется для обновления кода в полевых условиях. Хитрость в том, что вам нужно оставить код в системе, пока обновляется основная программа, называемая загрузчиком. Эта схема используется в системе Arduino для программирования чипа.

pic - Можно ли использовать флеш-память программы микроконтроллера для хранения пользовательской конфигурации?

Многие PIC18 имеют память EEPROM размером до 1 КБ. К сожалению, PIC18F46J50, на который вы ссылаетесь, нет. Если доступна EEPROM, это гораздо лучший выбор, если она достаточно велика для ваших данных, поскольку EEPROM имеет минимум 1 000 000 циклов стирания / записи, а флэш-память - только 10 000.

PIC18, как и большинство других микроконтроллеров, использует так называемую архитектуру Гарварда, что означает наличие физически отдельной адресуемой области для программ и данных (то есть у вас может быть адрес программы 4 и адрес данных 4, и они не совпадают). . Поэтому вы не можете читать или записывать во флэш-память обычными методами на языке C или ассемблере.

Вместо этого в семействе PIC18 вы устанавливаете начальный адрес в 22-битном регистре, называемом TBLPTR. Чтобы читать байты из флэш-памяти, вы используете инструкцию TBLRD.Существует возможность автоматически увеличивать или уменьшать адрес после чтения, вам не нужно делать это вручную.

Для записи во флэш-память вы должны сначала стереть один или несколько 64-байтовых блоков флэш-памяти, которые будут перезаписаны. После повторной установки начального адреса в TBLPTR и значений в некоторых других регистрах для инициализации операции стирания прерывания отключаются, и тогда вы должны записать 0x55 сразу после 0xAA в регистр; это разблокирует команду стирания и необходимо, чтобы предотвратить случайное стирание памяти ошибочным кодом.Наконец, выполняется команда для фактического стирания с последующим повторным включением прерываний.

Запись во флэш-память аналогична стиранию, за исключением того, что размер блока меньше. Запись фактически выполняется с использованием инструкции TBLWT, которая также позволяет автоматически увеличивать / уменьшать, как инструкция TBLRD.

В дополнение к сохранению данных конфигурации, запись во флэш-память позволяет обновлять микропрограммное обеспечение в полевых условиях, используя так называемое «микропрограммное обеспечение по воздуху».У вас должен быть фиксированный блок прошивки, обычно в начале программной памяти, который может получать обновления от модуля Bluetooth, Wi-Fi, сотового модуля или даже проводного соединения и обновлять флэш-память выше определенной точки в программа (например, «забор») с новым кодом. После завершения обновления инициируется сброс, и новый код вводится в действие.

Многие другие микроконтроллеры, помимо семейства PIC, имеют возможность обновлять свою флеш-память; большинство из них используют комбинацию регистров конфигурации, адресного указателя и специальных инструкций для выполнения задачи.

Основы флэш-памяти

и ее интерфейс с процессором

Дата: 30-12-16

Основы флэш-памяти и ее интерфейс с процессором:

Введение:

Флэш-память или флэш-ОЗУ - это тип энергонезависимого полупроводникового запоминающего устройства, в котором сохраненные данные существуют, даже если запоминающее устройство не имеет электрического питания. Это улучшенная версия электрически стираемой программируемой постоянной памяти (EEPROM). Разница между флэш-памятью и EEPROM заключается в том, что EEPROM стирает и перезаписывает свое содержимое по одному байту за раз или, другими словами, на уровне байтов.В то время как флэш-память стирает или записывает данные целыми блоками, что делает ее очень быстрой памятью по сравнению с EEPROM. Флэш-память не может заменить DRAM и SRAM, потому что скорость, с которой DRAM / SRAM может получить доступ к данным, а также их способность адресации на уровне байтов, не может быть сопоставлена ​​с Flash.

Флэш-память также называется твердотельным запоминающим устройством (SSD) из-за отсутствия движущихся частей по сравнению с традиционным жестким диском компьютера.

Типы флэш-памяти:

Двумя основными типами флэш-памяти являются NOR Flash и NAND Flash.Intel - первая компания, которая представила коммерческие микросхемы флэш-памяти (типа NOR) в 1988 году, а Toshiba выпустила первую в мире флэш-память NAND в 1989 году.

NOR-flash медленнее выполняет операции стирания и записи по сравнению с NAND-flash. Это означает, что NAND-flash имеет более быстрое время стирания и записи. Более того, NAND имеет меньшие блоки стирания. Так что требуется меньше стираний. NOR-flash может считывать данные немного быстрее, чем NAND.

NOR предлагает полные шины адреса и данных для произвольного доступа к любой области своей памяти (адресуемой для каждого байта).Это делает его подходящей заменой для старых микросхем ROM BIOS / прошивки, которые редко нуждаются в обновлении. Его ресурс составляет от 10 000 до 1 000 000 циклов стирания. NOR отлично подходит для хранения кода во встроенных системах. Большинство современных микроконтроллеров имеют встроенную флэш-память.

NAND-flash занимает меньшую площадь кристалла на ячейку. Этот производитель NAND доступен с большей плотностью хранения и с меньшими затратами на бит, чем NOR-flash. Кроме того, она в десять раз дольше, чем NOR-вспышка.NAND больше подходит в качестве носителя для хранения больших файлов, включая видео и аудио. Флэш-накопители USB, SD-карты и MMC-карты относятся к типу NAND.

NAND-flash не предоставляет шину внешнего адреса с произвольным доступом, поэтому данные должны считываться на блочной основе (также известной как доступ к страницам), где каждый блок содержит от сотен до тысяч бит, что напоминает своего рода последовательный доступ к данным. Это одна из основных причин, по которой NAND-flash не подходит для замены ПЗУ, потому что большинство микропроцессоров и микроконтроллеров требуют произвольного доступа на уровне байтов.

Операция записи во флеш-устройстве любого типа может выполняться только на пустом или стертом блоке. Поэтому в большинстве случаев операции записи должна предшествовать операция стирания. Операция стирания довольно проста в случае устройств NAND-flash. Но для NOR-flash обязательно, чтобы все байты в целевом блоке были записаны нулями, прежде чем их можно будет стереть.

Размер блока стирания в NOR-flash составляет от 64 до 128 Кбайт. Здесь операция записи / стирания может занять до 5 секунд.Но у NAND-flash есть блоки стирания размером от 8 до 32 Кбайт. Таким образом, очевидно, что NAND выполняет идентичную операцию за меньшее время.

Интерфейс

INOR-flash очень похож на интерфейс памяти SRAM, который имеет достаточное количество адресных контактов для отображения всего носителя, обеспечивая легкий доступ ко всем содержащимся в нем байтам, тогда как NAND-flash используется для последовательного доступа к сложному отображению ввода-вывода интерфейс. Здесь одни и те же контакты используются для управления, адреса и данных.

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

Структура ячеек флэш-памяти:

Флэш-память хранит данные в виде массива ячеек памяти. Ячейки памяти сделаны из полевых МОП-транзисторов с плавающим затвором (известных как FGMOS). Эти FG MOSFET (или сокращенно FGMOS) обладают способностью сохранять электрический заряд в течение продолжительных периодов времени (от 2 до 10 лет) даже без подключения к источнику питания.

FGMOS фактически изготавливается путем электрической изоляции затвора стандартного МОП-транзистора, так что нет резистивных соединений с этим затвором (плавающим затвором) (см. Рис. 1). Вторичный затвор (более одного в случае транзистора с несколькими затворами), известный как управляющий затвор, затем размещается над этим плавающим затвором и электрически изолирован от него с помощью изолятора, такого как SiO2. Между новыми входами (управляющими затворами) и плавающим затвором будет только емкостное соединение, поскольку плавающий затвор полностью окружен высокоомным материалом (SiO2).Итак, с точки зрения рабочей точки постоянного тока FG является плавающим узлом.

Рис 1

Каждая ячейка (FGMOS) NOR-flash памяти напоминает стандартный MOSFET, за исключением того, что FGMOS имеет два затвора вместо одного (см. Рис. 2). Сверху находится управляющий затвор, как в обычных МОП-транзисторах. Под этим управляющим затвором расположен новый затвор, называемый плавающим затвором, который со всех сторон изолирован оксидным слоем (SiO2).Плавающий затвор находится между управляющим затвором и каналом MOSFET. Поскольку плавающий затвор электрически изолирован оксидным слоем, любые электроны, находящиеся на нем, задерживаются там и в нормальных условиях не будут разряжаться в течение многих лет.


Рис2

Имена NOR-flash и NAND-flash произошли от структуры, используемой для взаимодействия между ячейками памяти (см. Рис. 3).

Ячейки в NOR-flash подключаются параллельно битовым линиям, так что каждую ячейку можно читать / записывать / стирать отдельно. Это параллельное соединение ячеек очень похоже на параллельное соединение транзисторов в вентиле CMOS NOR, поэтому оно получило название NOR flash. В NAND-flash ячейки соединены последовательно, напоминая логический элемент NAND, отсюда и название. Последовательное соединение предотвращает индивидуальное программирование ячеек. Эти ячейки необходимо читать последовательно.


Рис 3

Типичный флэш-массив имеет сетку из столбцов и строк ячеек FGMOS-транзистора, как показано на рис.Словесная линия WL является горизонтальной линией, а битовая линия BL - вертикальной линией (показанной на фиг.4). Управляющие вентили ячеек FGMOS подключены к словарной линии WL. Декодированный адрес фактически применяется к этой строке слов. Битовая линия BL соединяет стоки ячеек FGMOS вместе и представляет шину данных. Source-line SL соединяет источники FGMOS с общей землей. Комбинации напряжений, приложенные к WL и BL, определяют операцию, будь то чтение, стирание или программирование.

Рис 4

Принцип работы:

Flash сохраняет данные, удаляя или помещая электроны на плавающий затвор (см. Рис. 5).Заряд на плавающем затворе влияет на порог элемента памяти. Когда на плавающем затворе присутствуют электроны, через транзистор не течет ток, что указывает на логический 0. Когда электроны удаляются из плавающего затвора, транзистор начинает проводить, показывая логическую единицу. Это достигается за счет приложения напряжения между управляющим затвором и истоком или стоком.

Рис 5

Fowler-Nordheim (F-N) Туннелирование и инжекция горячих электронов - некоторые из процессов, с помощью которых эти операции выполняются в ячейке вспышки.

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

Давайте теперь попробуем узнать, как работает ячейка NOR-flash. В программе NOR-flash (или запись в память) осуществляется «инжекция горячих электронов», а стирание - посредством квантового туннелирования.

1. Операция удаления:

Необработанное состояние ячеек флеш-памяти (одноуровневая флеш-ячейка ИЛИ-НЕ) будет битом 1 (в состоянии по умолчанию), потому что плавающие вентили не несут отрицательных зарядов.Стирание ячейки флэш-памяти (сброс до логической 1) достигается путем подачи напряжения на исток и управляющий вентиль (словарная линия). Напряжение может быть в диапазоне от -9В до -12В. А также приложить к источнику около 6 В. Электроны в плавающем затворе оттягиваются и передаются источнику посредством квантового туннелирования (туннельный ток). Другими словами, электроны туннелируют от плавающего затвора к источнику и подложке.

2. Операция записи (программирования):

Ячейка флэш-памяти ИЛИ-НЕ может быть запрограммирована или установлена ​​на двоичное значение «0» с помощью следующей процедуры.
Во время записи на управляющий вентиль (линия слов) подается высокое напряжение около 12 В. Если на разрядную линию (клемму слива) подается высокое напряжение около 7 В, бит 0 сохраняется в ячейке. Теперь канал включен, поэтому электроны могут течь от истока к стоку. Через тонкий слой оксида электроны движутся к плавающему затвору. Ток исток-сток достаточно высок, чтобы заставить некоторые высокоэнергетические электроны прыгать через изолирующий слой на плавающий затвор посредством процесса, называемого инжекцией горячих электронов.

Из-за приложенного напряжения на плавающем затворе возбужденные электроны проталкиваются и захватываются на другой стороне тонкого оксидного слоя, придавая ему отрицательный заряд на плавающем затворе. Эти отрицательно заряженные электроны действуют как барьер между управляющим затвором и плавающим затвором.

Если низкое напряжение подается на сток через разрядную шину, количество электронов на плавающем затворе остается неизменным, а логическое состояние не изменяется, сохраняя бит 1. Поскольку плавающий затвор изолирован оксидом, заряд накапливается. на плавающих затворах не протечет, даже если питание отключено.
Устройство, называемое датчиком ячейки, отслеживает уровень заряда, проходящего через плавающий затвор. Если поток через затвор пересекает 50-процентный порог, он имеет значение 1. Когда проходящий заряд падает до 50-процентного порога, значение изменяется на 0.
Из-за очень хороших изоляционных свойств SiO2 заряд плавающего затвора уходит очень медленно.

3. Операция чтения:

Подайте напряжение около 5 В на управляющий затвор и около 1 В на сток.Состояние ячейки памяти определяется током, протекающим между стоком и истоком.

Для считывания данных на управляющий затвор подается напряжение, и канал MOSFET будет либо проводящим, либо изолирующим, в зависимости от порогового напряжения ячейки, которое, в свою очередь, управляется зарядом на плавающем затворе. Ток, протекающий через канал MOSFET, воспринимается и формирует двоичный код, воспроизводящий сохраненные данные.

Интерфейс флэш-памяти:

Интерфейс флэш-памяти такой же, как интерфейс SRAM, за исключением того, что флэш-память требует программирования напряжения 12 В / 5 В для стирания и записи новых данных.

Рис 6

На приведенном выше рисунке представлена ​​принципиальная схема микросхемы NOR flash IC 28F400 от Intel, подключенной к 16-разрядному процессору (данных) или микроконтроллеру. 28F400 может быть сконфигурирован как устройство памяти 512K x 8 или как устройство памяти 256K x 16. Здесь, в приведенном выше случае, его конфигурация 512K x 8. Контакты управляющих соединений CE, OE и WE аналогичны интерфейсу SRAM.

A0 - A17 - это выводы адреса, а от DQ0 до DQ15 - выводы данных.
Функции каждого контрольного штифта:

OE (OUTPUT ENABLE): Разрешает выход устройства через буферы данных во время цикла чтения. OE активен на низком уровне.
WE (WRITE ENABLE): Управляет записью в регистр команд и блоки массива. МЫ активен низкий. Адреса и данные фиксируются по переднему фронту импульса WE.
CE (CHIP ENABLE): Активирует логику управления устройства, входные буферы, декодеры и усилители считывания. CE активен низкий.CE high отменяет выбор устройства памяти и снижает энергопотребление до уровня ожидания. Если CE и RP высокие, но не на высоком уровне CMOS, ток в режиме ожидания будет увеличиваться из-за протекания тока через входные каскады CE и RP.
BYTE: Определяет, будет ли устройство работать в байтовом режиме (x8) или в режиме всего слова (x16). Этот вывод должен быть установлен при включении питания или возврате из глубокого выключения и не должен изменяться во время работы устройства. Вывод BYTE должен управляться на уровнях CMOS, чтобы соответствовать текущей спецификации CMOS в режиме ожидания.
Когда BYTE имеет низкий логический уровень, включается байтовый режим, в котором данные считываются и программируются на DQ0-DQ7, а DQ15 / A-1 становится адресом самого низкого порядка, который декодируется между старшим и младшим байтом. DQ8-DQ14 являются тройными в байтовом режиме.
Когда BYTE находится на высоком логическом уровне, включен режим всего слова, в котором данные считываются и программируются на DQ0-DQ15.

Vpp (PROGRAM / ERASE POWER SUPPLY): Для стирания блоков массива памяти или программирования данных в каждом блоке на этот вывод должно быть подано напряжение 5 В ± 10% или 12 В ± 5%.Когда VPP

RP / PWD (RESET / DEEP POWER-DOWN): Использует три уровня напряжения (VIL, VIH и VHH) для управления двумя различными функциями: режим сброса / глубокого отключения питания и разблокировка загрузочного блока. Он обратно совместим с продуктами BX / BL / BV. Когда RP находится на низком логическом уровне, устройство находится в режиме сброса / глубокого отключения питания, в котором выходы устанавливаются на высокий Z, сбрасывается конечный автомат записи и потребляется минимальный ток.
Когда RP находится на высоком логическом уровне, устройство работает в стандартном режиме. Когда RP переходит с низкого логического уровня на высокий, устройство по умолчанию переходит в режим чтения массива.
Когда RP находится на VHH, загрузочный блок разблокирован и его можно запрограммировать или стереть. Это отменяет любой контроль со входа WP.

IC 74LS139 декодера используется в вышеупомянутой схеме для выбора флэш-памяти через A19 и IO / M в качестве входов.


Чтобы получить больше информации, прочтите это примечание по применению, доступное по адресу:
. ftp: // скачать.intel.com/design/intarch/applnots/29219801.PDF


Чтобы узнать о некоторых микросхемах флеш-памяти, доступных на рынке, нажмите на статью под номером

.

Микросхемы флэш-памяти для вашего встраиваемого дизайна

Чтобы узнать о некоторых из новейших микросхем флэш-памяти, заменяющих микросхемы энергонезависимой памяти, такие как FRAM PRAM и FRAM, доступные на рынке, нажмите на статью ниже

Альтернативные варианты энергонезависимой флэш-памяти: FRAM, PRAM и MRAM

Этот интерфейсный модуль флэш-памяти на сербо-хорватском языке по адресу esmod16serbo


Щелкните текст ниже, чтобы перейти к следующему модулю курса по встроенным системам
Следующий модуль - 16 (интерфейс с ЖК-дисплеем)

Щелкните текст ниже, чтобы перейти к предыдущему модулю
Предыдущий модуль - 14 (интерфейс памяти SRAM)

ОБ ЭТОМ КУРСЕ:

Всего EEHerald планирует привезти 12 модулей.Вы можете быть уверены, что пройдете базовый курс по встроенным системам после изучения и практики упражнений по всем модулям. Мы отдадим приоритет программированию и последовательной связи (SPI, USB, CAN и т. Д.). Чтобы получить копию общей программы курса, пожалуйста, напишите нам по электронной почте.

Эти бесплатные учебные пособия по встроенным системам подготовлены профессионалами в области встроенных систем с довольно хорошим опытом работы в промышленности, однако нам нужны ваши отзывы о содержании этого курса; пожалуйста, присылайте свои вопросы, предложения и комментарии редактору @ eeherald.com. Ответы на ваши вопросы по существующим модулям будут даны в обновленных модулях. Мы можем изменить содержание курса на основании большинства ваших запросов и отзывов.
Пожалуйста, сообщите своим друзьям об этом курсе, мы просим вас отправить эту ссылку по электронной почте своим друзьям и коллегам, которые заинтересованы во встроенной системе.

Что такое флэш-память и как она работает?

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

Флэш-память

используется в серверах, хранилищах и сетевых технологиях корпоративных центров обработки данных, а также в широком спектре потребительских устройств, включая USB-накопители, также известные как карты памяти, SD-карты, мобильные телефоны, цифровые камеры, планшеты. компьютеры и PC-карты в портативных компьютерах и встроенных контроллерах.Например, твердотельные накопители на основе флэш-памяти NAND часто используются для повышения производительности приложений с интенсивным вводом-выводом. Флэш-память NOR часто используется для хранения управляющего кода, такого как базовая система ввода / вывода (BIOS) на ПК.

Флэш-память

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

Истоки технологий флэш-памяти

Доктору Фудзио Масуока приписывают изобретение флэш-памяти, когда он работал в Toshiba в 1980-х годах.Коллега Масуоки, Сёдзи Ариидзуми, как сообщается, придумал термин «вспышка», потому что процесс стирания всех данных с полупроводникового чипа напомнил ему вспышку камеры.

Флэш-память

представляет собой стираемую программируемую постоянную память (EPROM) и электрически стираемую программируемую постоянную память (EEPROM). Флэш-память технически является вариантом EEPROM, но промышленность оставляет за собой термин EEPROM для стираемой памяти на уровне байтов и применяет термин флэш-память к стираемой памяти большего размера на уровне блоков.

Флэш-память состоит из транзистора и плавающего затвора, в котором хранится электрический ток.

Как работает флеш-память?

Архитектура флэш-памяти

включает массив памяти, укомплектованный большим количеством ячеек флэш-памяти. Базовая ячейка флэш-памяти состоит из запоминающего транзистора с управляющим затвором и плавающим затвором, который изолирован от остальной части транзистора тонким диэлектрическим материалом или оксидным слоем. Плавающий затвор накапливает электрический заряд и контролирует поток электрического тока.

Электроны добавляются к плавающему затвору или удаляются из него для изменения порогового напряжения запоминающего транзистора. Изменение напряжения влияет на то, запрограммирована ли ячейка на ноль или единицу.

Ячейка флэш-памяти состоит из запоминающего транзистора с управляющим затвором и плавающим затвором.

Процесс, называемый туннелированием Фаулера-Нордхейма, удаляет электроны из плавающего затвора. Либо туннелирование Фаулера-Нордхейма, либо явление, известное как инжекция горячих электронов в канал, улавливают электроны в плавающем затворе.

При туннелировании Фаулера-Нордхейма данные стираются из-за сильного отрицательного заряда на управляющем вентиле. Это заставляет электроны проникать в канал, где существует сильный положительный заряд.

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

Процесс, называемый туннелированием Фаулера-Нордхейма, удаляет электроны из плавающего затвора.

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

Канальная инжекция горячих электронов позволяет электронам пробивать оксид затвора и изменять пороговое напряжение плавающего затвора.

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

Флэш-память NOR против NAND

Существует два типа флеш-памяти: NOR и NAND.

Флэш-память

NOR и NAND различаются по архитектуре и конструктивным характеристикам. Флэш-память NOR не использует общих компонентов и может подключать отдельные ячейки памяти параллельно, обеспечивая произвольный доступ к данным.Флэш-ячейка NAND более компактна и имеет меньше разрядных линий, объединяя транзисторы с плавающим затвором для увеличения плотности хранения.

NAND лучше подходит для последовательного, а не для произвольного доступа к данным. Геометрия процесса флеш-памяти NAND была разработана в ответ на то, что планарная NAND достигла своего практического предела масштабирования.

NAND flash работает быстро при чтении данных, но обычно медленнее, чем NAND при стирании и записи. NOR flash программирует данные на байтовом уровне. Флэш-память NAND программирует данные в страницах, которые больше байтов, но меньше блоков.Например, страница может иметь размер 4 килобайта (КБ), а размер блока - от 128 до 256 КБ или мегабайт. Флэш-память NAND потребляет меньше энергии, чем флеш-память NOR, для приложений с интенсивной записью.

Флеш-память

NOR дороже в производстве, чем флэш-память NAND, и, как правило, используется в основном в потребительских и встроенных устройствах для целей загрузки и в приложениях только для чтения для хранения кода. Флэш-память NAND больше подходит для хранения данных в потребительских устройствах и корпоративных серверах и системах хранения из-за более низкой стоимости хранения данных за бит, большей плотности и более высоких скоростей программирования и стирания (P / E).

Устройства, такие как телефоны с камерой, могут использовать как флэш-память NOR, так и NAND, в дополнение к другим технологиям памяти, для облегчения выполнения кода и хранения данных.

Форм-факторы флэш-памяти

Флэш-носитель основан на кремниевой подложке. Также известные как твердотельные устройства, они широко используются как в бытовой электронике, так и в корпоративных системах хранения данных.

Существует три форм-фактора твердотельных накопителей, которые были определены организацией Solid State Storage Initiative:

  • SSD, которые вставляются в те же слоты, что и традиционные электромеханические жесткие диски (HDD).SSD имеют архитектуру, аналогичную архитектуре интегральной схемы.
  • Твердотельные карты, размещенные на печатной плате и использующие стандартный форм-фактор карты, например Peripheral Component Interconnect Express (PCIe).
  • Твердотельные модули, которые подходят к модулю двойной встроенной памяти (DIMM) или небольшому модулю памяти с двумя встроенными линиями с использованием стандартного интерфейса жесткого диска, такого как Serial Advanced Technology Attachment (SATA).

Дополнительная подкатегория - это гибридные жесткие диски, в которых обычный жесткий диск сочетается с модулем флэш-памяти NAND.Гибридный жесткий диск обычно рассматривается как способ преодолеть разрыв между вращающимися носителями и флэш-памятью.

All-flash и гибридная флэш-память

Появление флэш-памяти привело к появлению массивов all-flash. Эти системы содержат только твердотельные накопители, они предлагают преимущества в производительности и потенциально снижают эксплуатационные расходы по сравнению со всеми дисковыми массивами хранения. Главное отличие, помимо носителя, заключается в базовой физической архитектуре, используемой для записи данных на устройство хранения.

Массивы на основе жестких дисков

имеют исполнительный рычаг, который позволяет записывать данные в определенный блок в определенном секторе на диске. Системы хранения All-Flash не требуют движущихся частей для записи данных. Записи производятся непосредственно во флэш-память, а управление данными выполняется специальным программным обеспечением.

Гибридный флеш-массив объединяет диск и твердотельные накопители. Гибридные массивы используют твердотельные накопители в качестве кэша для ускорения доступа к часто запрашиваемым горячим данным, которые впоследствии перезаписываются на внутренний диск. Многие предприятия обычно архивируют данные с диска по мере его старения, реплицируя его во внешнюю библиотеку на магнитной ленте.

Лента

Flash plus, также известная как flape, описывает тип многоуровневого хранилища, в котором первичные данные во флэш-памяти одновременно записываются в линейную ленточную систему.

Помимо массивов флэш-памяти, возможность вставлять твердотельные накопители в серверы на базе x86 повысила популярность технологии. Такое расположение известно как серверная флэш-память, и оно позволяет компаниям обходить привязку к поставщику, связанную с покупкой дорогих интегрированных массивов флэш-памяти.

Недостаток размещения флэш-памяти на сервере заключается в том, что клиентам необходимо самостоятельно создавать аппаратную систему, включая покупку и установку стека программного обеспечения для управления хранением данных от стороннего поставщика.

Плюсы и минусы флеш-памяти

Вот некоторые преимущества флеш-памяти:

  1. Флэш - наименее дорогая форма полупроводниковой памяти.
  2. В отличие от динамической памяти с произвольным доступом (DRAM) и статической RAM (SRAM), флэш-память энергонезависима, обеспечивает более низкое энергопотребление и может стираться большими блоками.
  3. Флэш-память
  4. NOR обеспечивает повышенную скорость произвольного чтения, а флеш-память NAND обеспечивает быструю последовательную запись и чтение.
  5. Твердотельный накопитель с микросхемами флэш-памяти NAND обеспечивает значительно более высокую производительность, чем традиционные магнитные носители данных, такие как жесткие диски и ленты.
  6. Флэш-накопители
  7. также потребляют меньше энергии и выделяют меньше тепла, чем жесткие диски.
  8. Корпоративные системы хранения, оснащенные флэш-накопителями, обладают низкой задержкой, которая измеряется в микросекундах или миллисекундах.

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

Неофициальные данные свидетельствуют о том, что флеш-накопители NAND не изнашиваются до такой степени, как раньше опасались. Производители флэш-накопителей повысили долговечность и надежность за счет алгоритмов исправления ошибок, выравнивания износа и других технологий.

Кроме того, SSD не изнашиваются без предупреждения.Обычно они предупреждают пользователей так же, как датчик может указывать на недостаточно накачанную шину.

Типы флеш-памяти NAND

Производители полупроводниковых флеш-памяти

NAND разработали различные типы памяти, подходящие для широкого спектра случаев использования хранения данных. В следующей таблице поясняются различные типы флеш-памяти NAND.

Типы флэш-памяти NAND

Описание

Преимущества

Недостатки

Первичное использование

Одноуровневая ячейка ( SLC )

Хранит один бит на ячейку и два уровня заряда.

Более высокая производительность, долговечность и надежность, чем у других типов флеш-памяти NAND.

Более высокая стоимость, чем у других типов флеш-памяти NAND.

Корпоративное хранилище, критически важные приложения.

Многоуровневая ячейка ( MLC )

Может хранить несколько битов на ячейку и несколько уровней заряда. Термин MLC означает два бита на ячейку.

Дешевле, чем SLC и Enterprise MLC (eMLC), высокая плотность.

Более низкая выносливость, чем у SLC и eMLC, медленнее, чем у SLC.

Потребительские устройства, корпоративные хранилища.

Enterprise MLC ( eMLC )

Обычно хранит два бита на ячейку и несколько уровней заряда; использует специальные алгоритмы для увеличения срока службы записи.

Дешевле, чем флэш-память SLC, более долговечна, чем флэш-память MLC.

Дороже, чем MLC, медленнее, чем SLC.

Корпоративные приложения с высокими рабочими нагрузками записи.

Трехуровневая ячейка ( TLC )

Хранит три бита на ячейку и несколько уровней заряда. Также называется MLC-3, X3 или 3-битным MLC.

Более низкая стоимость и более высокая плотность, чем у MLC и SLC.

Более низкая производительность и выносливость, чем у MLC и SLC.

Потребительские приложения для запоминающих устройств, например USB-накопители и карты флэш-памяти.

Вертикально / 3D NAND

Укладывает ячейки памяти друг на друга в трех измерениях по сравнению с традиционной технологией планарной NAND.

Более высокая плотность, более высокая производительность записи и более низкая стоимость на бит по сравнению с плоской NAND.

Более высокая стоимость производства, чем у планарной NAND; сложность производства с использованием производственных процессов плоской NAND; потенциально более низкий срок хранения данных.

СХД для бытовых и корпоративных клиентов.

* Четырехуровневая ячейка (QLC)

Использует 64-слойную архитектуру, которая считается следующей итерацией 3D NAND.Недоступно по состоянию на ноябрь 2017 года.

Хранит четыре бита данных на ячейку NAND, потенциально увеличивая плотность SSD.

Большее количество битов данных на ячейку может повлиять на срок службы; повышенные затраты на инжиниринг.

В основном писать один раз, читать много (WORM) сценарии использования.

Примечание. Износ флэш-памяти NAND представляет меньшую проблему для флэш-памяти SLC, чем для менее дорогих типов флэш-памяти, таких как MLC и TLC, для которых производители могут установить несколько пороговых значений для заряда.

В этом видео рассматриваются некоторые основы 3D NAND в их отношении к NAND:

Типы флеш-памяти NOR

Двумя основными типами флэш-памяти NOR являются параллельный и последовательный, также известный как последовательный периферийный интерфейс. Изначально флэш-память NOR была доступна только с параллельным интерфейсом. Parallel NOR предлагает высокую производительность, безопасность и дополнительные функции; его основные области применения включают промышленные, автомобильные, сетевые и телекоммуникационные системы и оборудование.

Ячейки NOR подключены параллельно для произвольного доступа. Конфигурация предназначена для произвольного чтения, связанного с инструкциями микропроцессора, и для выполнения кодов, используемых в портативных электронных устройствах, почти исключительно потребительских.

Флэш-память

с последовательным ИЛИ-НЕ имеет меньшее количество контактов и меньшую упаковку, что делает ее менее дорогой, чем параллельное ИЛИ-НЕ. Сценарии использования последовательного NOR включают персональные и ультратонкие компьютеры, серверы, жесткие диски, принтеры, цифровые камеры, модемы и маршрутизаторы.

Разбивка по поставщикам продуктов флэш-памяти NAND для предприятий

Основными производителями микросхем флэш-памяти NAND являются Intel Corp., Micron Technology Inc., Samsung Group, SanDisk Corp. - теперь принадлежащая Western Digital Corp. - SK Hynix Inc. и Toshiba Memory Corp.

Основные поставщики флэш-памяти NAND предлагают как корпоративные, так и потребительские флэш-накопители.

В 2016 году возникла нехватка флэш-памяти NAND, что привело к сбоям на рынке. Дефицит привел к росту цен на твердотельные накопители и увеличению сроков поставки.Спрос превысил предложение во многом из-за резкого роста спроса со стороны производителей смартфонов. В 2018 году начали появляться признаки того, что дефицит близок к концу.

Другие потрясения оказывают влияние на рынок. В ноябре 2017 года ведущий поставщик флэш-памяти Toshiba согласился продать свое подразделение по производству микросхем группе корпоративных и институциональных инвесторов во главе с Bain Capital. Toshiba продала свой бизнес флеш-памяти, чтобы покрыть финансовые потери и избежать исключения из листинга на Токийской фондовой бирже.

Продукты ведущих поставщиков NOR

Основные производители флэш-памяти NOR включают Cypress Semiconductor Corp. - через приобретение Spansion Inc. - Macronix International Co. Ltd., Microchip Technology Inc., Micron Technology Inc. и Winbond Electronics Corp.

Cypress Semiconductor приобрела Spansion, поставщика флэш-памяти NOR в 2015 году. Портфель Cypress NOR включает продукты FL-L, FL-S, FS-S и FL1-K.

Macronix OctaFlash использует несколько банков, чтобы разрешить запись в один банк и чтение из другого.Macronix MX25R Serial NOR - это версия с низким энергопотреблением, предназначенная для приложений Интернета вещей (IoT).

Microchip NOR выпускается под торговой маркой Serial SPI Flash и Serial Quad I / O Flash. Параллельные продукты NOR от производителя включают в себя семейства многоцелевых флэш-устройств и усовершенствованных многоцелевых флэш-устройств.

Micron продает последовательные флэш-память NOR и параллельную флэш-память NOR, а также высокопроизводительную флэш-память Micron Xccela для автомобилей и приложений Интернета вещей.

Линия продуктов Winbond с серийным номером NOR называется SpiFlash Memories и включает в себя память W25X и W25Q SpiFlash Multi-I / O.В 2017 году Winbond расширил свою линейку Secure Flash NOR для дополнительных применений, включая разработку системы на кристалле для поддержки искусственного интеллекта, Интернета вещей и мобильных приложений.

% PDF-1.5 % 10678 0 obj> эндобдж xref 10678 305 0000000016 00000 н. 0000008252 00000 н. 0000008389 00000 н. 0000006540 ​​00000 н. 0000008596 00000 н. 0000008626 00000 н. 0000008676 00000 н. 0000008713 00000 н. 0000008939 00000 н. 0000009027 00000 н. 0000009111 00000 п. 0000009197 00000 н. 0000009283 00000 п. 0000009369 00000 н. 0000009455 00000 н. 0000009541 00000 н. 0000009627 00000 н. 0000009713 00000 н. 0000009799 00000 н. 0000009885 00000 н. 0000009971 00000 н. 0000010057 00000 п. 0000010143 00000 п. 0000010229 00000 п. 0000010315 00000 п. 0000010401 00000 п. 0000010487 00000 п. 0000010573 00000 п. 0000010659 00000 п. 0000010745 00000 п. 0000010831 00000 п. 0000010917 00000 п. 0000011003 00000 п. 0000011089 00000 п. 0000011175 00000 п. 0000011261 00000 п. 0000011347 00000 п. 0000011433 00000 п. 0000011519 00000 п. 0000011605 00000 п. 0000011691 00000 п. 0000011777 00000 п. 0000011863 00000 п. 0000011949 00000 п. 0000012035 00000 п. 0000012121 00000 п. 0000012207 00000 п. 0000012293 00000 п. 0000012379 00000 п. 0000012465 00000 п. 0000012551 00000 п. 0000012637 00000 п. 0000012723 00000 п. 0000012809 00000 п. 0000012895 00000 п. 0000012981 00000 п. 0000013067 00000 п. 0000013153 00000 п. 0000013239 00000 п. 0000013325 00000 п. 0000013411 00000 п. 0000013497 00000 п. 0000013583 00000 п. 0000013669 00000 п. 0000013755 00000 п. 0000013841 00000 п. 0000013927 00000 п. 0000014013 00000 п. 0000014099 00000 п. 0000014185 00000 п. 0000014271 00000 п. 0000014357 00000 п. 0000014443 00000 п. 0000014529 00000 п. 0000014615 00000 п. 0000014701 00000 п. 0000014787 00000 п. 0000014873 00000 п. 0000014959 00000 п. 0000015045 00000 п. 0000015131 00000 п. 0000015217 00000 п. 0000015303 00000 п. 0000015389 00000 п. 0000015475 00000 п. 0000015561 00000 п. 0000015647 00000 п. 0000015733 00000 п. 0000015819 00000 п. 0000015905 00000 п. 0000015991 00000 п. 0000016077 00000 п. 0000016163 00000 п. 0000016249 00000 п. 0000016335 00000 п. 0000016421 00000 п. 0000016507 00000 п. 0000016593 00000 п. 0000016679 00000 п. 0000016765 00000 п. 0000016851 00000 п. 0000016937 00000 п. 0000017023 00000 п. 0000017109 00000 п. 0000017195 00000 п. 0000017281 00000 п. 0000017367 00000 п. 0000017453 00000 п. 0000017539 00000 п. 0000017625 00000 п. 0000017711 00000 п. 0000017797 00000 п. 0000017883 00000 п. 0000017969 00000 п. 0000018055 00000 п. 0000018141 00000 п. 0000018227 00000 п. 0000018313 00000 п. 0000018399 00000 п. 0000018485 00000 п. 0000018571 00000 п. 0000018657 00000 п. 0000018743 00000 п. 0000018829 00000 п. 0000018915 00000 п. 0000019001 00000 п. 0000019087 00000 п. 0000019173 00000 п. 0000019259 00000 п. 0000019345 00000 п. 0000019431 00000 п. 0000019517 00000 п. 0000019603 00000 п. 0000019689 00000 п. 0000019775 00000 п. 0000019861 00000 п. 0000019947 00000 п. 0000020033 00000 н. 0000020119 00000 п. 0000020205 00000 п. 0000020291 00000 п. 0000020377 00000 п. 0000020463 00000 п. 0000020549 00000 п. 0000020635 00000 п. 0000020721 00000 п. 0000020807 00000 п. 0000020893 00000 п. 0000020979 00000 п. 0000021065 00000 п. 0000021151 00000 п. 0000021237 00000 п. 0000021323 00000 п. 0000021409 00000 п. 0000021495 00000 п. 0000021581 00000 п. 0000021666 00000 п. 0000021751 00000 п. 0000021836 00000 п. 0000021921 00000 п. 0000022006 00000 п. 0000022091 00000 п. 0000022176 00000 п. 0000022261 00000 п. 0000022346 00000 п. 0000022431 00000 п. 0000022516 00000 п. 0000022601 00000 п. 0000022686 00000 п. 0000022771 00000 п. 0000022856 00000 п. 0000022941 00000 п. 0000023026 00000 п. 0000023111 00000 п. 0000023196 00000 п. 0000023281 00000 п. 0000023366 00000 п. 0000023451 00000 п. 0000023536 00000 п. 0000023621 00000 п. 0000023705 00000 п. 0000023853 00000 п. 0000023931 00000 п. 0000024010 00000 п. 0000024050 00000 п. 0000024791 00000 п. 0000025612 00000 п. 0000026357 00000 п. 0000026550 00000 п. 0000026732 00000 п. 0000027490 00000 н. 0000028252 00000 п. 0000029265 00000 п. 0000030254 00000 п. 0000031349 00000 п. 0000032244 00000 п. 0000033139 00000 п. 0000035811 00000 п. 0000035874 00000 п. 0000035961 00000 п. 0000036058 00000 п. 0000036212 00000 п. 0000036319 00000 п. 0000036474 00000 п. 0000036566 00000 п. 0000036656 00000 п. 0000036770 00000 п. 0000036931 00000 п. 0000037036 00000 п. 0000037133 00000 п. 0000037244 00000 п. 0000037369 00000 п. 0000037528 00000 п. 0000037621 00000 п. 0000037731 00000 п. 0000037882 00000 п. 0000037971 00000 п. 0000038060 00000 п. 0000038210 00000 п. 0000038302 00000 п. 0000038396 00000 п. 0000038555 00000 п. 0000038647 00000 п. 0000038738 00000 п. 0000038906 00000 п. 0000038994 00000 п. 0000039097 00000 н. 0000039208 00000 н. 0000039361 00000 п. 0000039453 00000 п. 0000039542 00000 п. 0000039693 00000 п. 0000039781 00000 п. 0000039901 00000 н. 0000040051 00000 п. 0000040155 00000 п. 0000040250 00000 п. 0000040420 00000 п. 0000040516 00000 п. 0000040614 00000 п. 0000040757 00000 п. 0000040854 00000 п. 0000040959 00000 п. 0000041082 00000 п. 0000041243 00000 п. 0000041351 00000 п. 0000041455 00000 п. 0000041607 00000 п. 0000041697 00000 п. 0000041785 00000 п. 0000041938 00000 п. 0000042036 00000 п. 0000042134 00000 п. 0000042287 00000 п. 0000042392 00000 п. 0000042479 00000 п. 0000042599 00000 н. 0000042750 00000 п. 0000042841 00000 п. 0000042929 00000 п. 0000043035 00000 п. 0000043187 00000 п. 0000043273 00000 п. 0000043359 00000 п. 0000043467 00000 п. 0000043574 00000 п. 0000043671 00000 п. 0000043775 00000 п. 0000043895 00000 п. 0000044014 00000 п. 0000044129 00000 п. 0000044254 00000 п. 0000044378 00000 п. 0000044481 00000 п. 0000044584 00000 п. 0000044689 00000 п. 0000044815 00000 н. 0000044930 00000 н. 0000045034 00000 п. 0000045163 00000 п. 0000045269 00000 п. 0000045391 00000 п. 0000045508 00000 п. 0000045637 00000 п. 0000045778 00000 п. 0000045903 00000 п. 0000046007 00000 п. 0000046113 00000 п. 0000046226 00000 п. 0000046326 00000 п. 0000046432 00000 н. 0000046548 00000 п. 0000046661 00000 п. 0000046783 00000 п. 0000046891 00000 п. 0000047010 00000 п. 0000047126 00000 п. 0000047250 00000 п. 0000047366 00000 п. 0000047476 00000 п. 0000047582 00000 п. 0000047692 00000 п. 0000047799 00000 н. 0000047911 00000 п. 0000048037 00000 п. трейлер ] >> startxref 0 %% EOF 10681 0 obj> поток z} LOdI0BA.p * _G`k`Cs

% PDF-1.6 % 1227 0 obj> эндобдж xref 1227 305 0000000016 00000 н. 0000009760 00000 н. 0000009897 00000 н. 0000010076 00000 п. 0000010104 00000 п. 0000010149 00000 п. 0000010397 00000 п. 0000010458 00000 п. 0000010504 00000 п. 0000010547 00000 п. 0000010592 00000 п. 0000011946 00000 п. 0000017541 00000 п. 0000018115 00000 п. 0000018731 00000 п. 0000020110 00000 п. 0000021448 00000 н. 0000022557 00000 п. 0000023988 00000 п. 0000024335 00000 п. 0000024538 00000 п. 0000025082 00000 п. 0000026135 00000 п. 0000027387 00000 п. 0000028682 00000 п. 0000029989 00000 н. 0000036057 00000 п. 0000036695 00000 п. 0000037342 00000 п. 0000037365 00000 п. 0000037388 00000 п. 0000037411 00000 п. 0000037471 00000 п. 0000037554 00000 п. 0000037713 00000 п. 0000037833 00000 п. 0000037962 00000 п. 0000038114 00000 п. 0000038201 00000 п. 0000038289 00000 п. 0000038403 00000 п. 0000038561 00000 п. 0000038666 00000 п. 0000038803 00000 п. 0000038953 00000 п. 0000039083 00000 п. 0000039211 00000 п. 0000039371 00000 п. 0000039502 00000 п. 0000039592 00000 п. 0000039761 00000 п. 0000039892 00000 п. 0000039983 00000 н. 0000040149 00000 п. 0000040279 00000 н. 0000040369 00000 п. 0000040514 00000 п. 0000040608 00000 п. 0000040696 00000 п. 0000040849 00000 п. 0000040979 00000 п. 0000041071 00000 п. 0000041229 00000 п. 0000041360 00000 п. 0000041450 00000 п. 0000041602 00000 п. 0000041724 00000 п. 0000041814 00000 п. 0000041969 00000 п. 0000042061 00000 п. 0000042151 00000 п. 0000042295 00000 п. 0000042386 00000 п. 0000042474 00000 п. 0000042619 00000 п. 0000042721 00000 п. 0000042809 00000 п. 0000042956 00000 п. 0000043079 00000 п. 0000043168 00000 п. 0000043314 00000 п. 0000043422 00000 п. 0000043510 00000 п. 0000043629 00000 п. 0000043770 00000 п. 0000043901 00000 п. 0000043992 00000 п. 0000044140 00000 п. 0000044281 00000 п. 0000044373 00000 п. 0000044519 00000 п. 0000044608 00000 п. 0000044696 00000 п. 0000044843 00000 п. 0000044936 00000 п. 0000045030 00000 п. 0000045176 00000 п. 0000045263 00000 п. 0000045365 00000 п. 0000045471 00000 п. 0000045583 00000 п. 0000045686 00000 п. 0000045792 00000 п. 0000045926 00000 п. 0000046022 00000 п. 0000046118 00000 п. 0000046221 00000 п. 0000046322 00000 п. 0000046473 00000 п. 0000046574 00000 п. 0000046682 00000 п. 0000046799 00000 н. 0000046929 00000 н. 0000047060 00000 п. 0000047151 00000 п. 0000047246 00000 п. 0000047363 00000 п. 0000047467 00000 п. 0000047615 00000 п. 0000047707 00000 п. 0000047801 00000 п. 0000047948 00000 н. 0000048045 00000 п. 0000048145 00000 п. 0000048256 00000 п. 0000048357 00000 п. 0000048450 00000 п. 0000048564 00000 п. 0000048714 00000 п. 0000048807 00000 п. 0000048902 00000 н. 0000049010 00000 п. 0000049158 00000 п. 0000049264 00000 н. 0000049372 00000 п. 0000049514 00000 п. 0000049614 00000 п. 0000049714 00000 п. 0000049858 00000 п. 0000049952 00000 н. 0000050048 00000 н. 0000050154 00000 п. 0000050255 00000 п. 0000050393 00000 п. 0000050494 00000 п. 0000050587 00000 п. 0000050725 00000 п. 0000050827 00000 н. 0000050933 00000 п. 0000051049 00000 п. 0000051182 00000 п. 0000051297 00000 п. 0000051428 00000 п. 0000051543 00000 п. 0000051693 00000 п. 0000051806 00000 п. 0000051924 00000 п. 0000052041 00000 п. 0000052153 00000 п. 0000052260 00000 п. 0000052369 00000 п. 0000052480 00000 п. 0000052634 00000 п. 0000052745 00000 п. 0000052855 00000 п. 0000052999 00000 н. 0000053098 00000 п. 0000053210 00000 п. 0000053341 00000 п. 0000053482 00000 п. 0000053610 00000 п. 0000053752 00000 п. 0000053832 00000 п. 0000053985 00000 п. 0000054088 00000 п. 0000054183 00000 п. 0000054339 00000 п. 0000054442 00000 п. 0000054543 00000 п. 0000054653 00000 п. 0000054759 00000 п. 0000054903 00000 п. 0000054995 00000 п. 0000055091 00000 п. 0000055207 00000 п. 0000055326 00000 п. 0000055444 00000 п. 0000055553 00000 п. 0000055701 00000 п. 0000055800 00000 п. 0000055897 00000 п. 0000056049 00000 п. 0000056148 00000 п. 0000056244 00000 п. 0000056359 00000 п. 0000056477 00000 п. 0000056595 00000 п. 0000056707 00000 п. 0000056822 00000 п. 0000056917 00000 п. 0000057014 00000 п. 0000057106 00000 п. 0000057209 00000 п. 0000057370 00000 п. 0000057466 00000 п. 0000057562 00000 п. 0000057700 00000 п. 0000057872 00000 п. 0000057962 00000 п. 0000058074 00000 п. 0000058232 00000 п. 0000058338 00000 п. 0000058448 00000 п. 0000058600 00000 п. 0000058689 00000 п. 0000058800 00000 п. 0000058914 00000 п. 0000059045 00000 п. 0000059183 00000 п. 0000059308 00000 п. 0000059435 00000 п. 0000059546 00000 п. 0000059659 00000 п. 0000059805 00000 п. 0000059908 00000 н. 0000060024 00000 п. 0000060129 00000 п. 0000060256 00000 п. 0000060386 00000 п. 0000060517 00000 п. 0000060627 00000 п. 0000060743 00000 п. 0000060837 00000 п. 0000060936 00000 п. 0000061046 00000 п. 0000061157 00000 п. 0000061262 00000 п. 0000061369 00000 п. 0000061462 00000 п. 0000061566 00000 п. 0000061686 00000 п. 0000061804 00000 п. 0000061923 00000 п. 0000062045 00000 п. 0000062144 00000 п. 0000062245 00000 п. 0000062362 00000 п. 0000062473 00000 п. 0000062590 00000 н. 0000062704 00000 п. 0000062774 00000 п. 0000062863 00000 п. 0000063010 00000 п. 0000063178 00000 п. 0000063329 00000 п. 0000063425 00000 п. 0000063568 00000 п. 0000063662 00000 п. 0000063757 00000 п. 0000063908 00000 п. 0000064002 00000 п. 0000064098 00000 п. 0000064249 00000 н. 0000064343 00000 п. 0000064438 00000 п. 0000064597 00000 п. 0000064691 00000 п. 0000064787 00000 п. 0000064900 00000 п. 0000065030 00000 п. 0000065136 00000 п. 0000065231 00000 п. 0000065379 00000 п. 0000065485 00000 п. 0000065579 00000 п. 0000065742 00000 п. 0000065848 00000 п. 0000065943 00000 п. 0000066094 00000 п. 0000066203 00000 п. 0000066298 00000 п. 0000066447 00000 п. 0000066553 00000 п. 0000066648 00000 н. 0000066802 00000 п. 0000066896 00000 п.