8-900-374-94-44
[email protected]
Slide Image
Меню

Как программировать микросхемы – Что такое чип памяти и как программировать микросхемы

Содержание

Что такое чип памяти и как программировать микросхемы

Главная страница » Что такое чип памяти и как программировать микросхемы

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

Содержимое публикации

О чипах – микросхемах хранения информации

Микросхема памяти — это электронный компонент, внутренняя структура которого способна сохранять (запоминать) внесённые программы, какие-либо данные или одновременно то и другое.

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

Следует отметить: чипы памяти всегда являются неотъемлемым дополнением микропроцессоров – управляющих микросхем. В свою очередь микропроцессор является основой электроники любой современной техники.

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

Таким образом, микропроцессор управляет работой электронной техники, а чип памяти хранит сведения, необходимые микропроцессору.

Программы или данные хранятся в чипе памяти как ряд чисел — нулей и единиц (биты). Один бит может быть представлен логическими нулем (0) либо единицей (1).

В единичном виде обработка битов видится сложной. Поэтому биты объединяются в группы. Шестнадцать бит составляют группу «слов», восемь бит составляют байт  — «часть слова», четыре бита — «кусочек слова».

Программным термином для чипов, что используется чаще других,  является байт. Это набор из восьми бит, который может принимать от 2 до 8 числовых вариаций, что в общей сложности даёт 256 различных значений.

Для представления байта используется шестнадцатеричная система счисления, где предусматривается использование 16 значений из двух групп:

  1.  Цифровых (от 0 до 9).
  2.  Символьных (от А до F).

Поэтому в комбинациях двух знаков шестнадцатеричной системы также укладываются 256 значений (от 00h до FFh). Конечный символ «h» указывает на принадлежность к шестнадцатеричным числам.

Организация микросхем (чипов) памяти

Для 8-битных чипов памяти (наиболее распространенный тип) биты объединяются в байты (8 бит) и сохраняются под определённым «адресом».

По назначенному адресу открывается доступ к байтам. Вывод восьми битов адреса доступа осуществляется через восемь портов данных.

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

Например, 8-мегабитный чип серии 27c801 имеет в общей сложности 1048576 байт (8388608 бит). Каждый байт имеет свой собственный адрес, пронумерованный от 00000h до FFFFFh (десятичное значение 0 — 1048575).

Помимо 8-битных чипов памяти, существуют также 16-битные чипы памяти. Есть микросхемы последовательного доступа, характеризуемые как 1-битные и 4-битные чипы памяти. Правда, последние из отмеченных микросхем теперь уже практически не встречаются.

 

Микросхемы памяти EPROM (серия 27… 27C …)

Термином «EPROM» зашифрована аббревиатурой техническая характеристика микросхем — стираемая программируемая память только читаемая (Erasable Programmable Read Only Memory). Что это значит в деталях?

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

Несмотря на расшифровку куска аббревиатуры – «только для чтения» (Read Only Memory), информация доступна для стирания и перезаписи, но только с помощью программатора. Часть аббревиатуры — «Erasable», сообщает о возможности стирания данных.

Структура чипов серии 27… 27C… поддерживает стирание информации методом воздействия на ячейки хранения интенсивным ультрафиолетовым излучением  (длина волны 254 нм).

Обозначение аббревиатуры «программируемый» (Programmable) указывает на возможность программирования, когда любая цифровая информация может быть заложена в чип.

Для программирования чипов требуется программатор. К примеру, 27 серия успешно прошивается устройствами «Batronix Eprommer» или «Galep-4».

Программатор микросхем Batronix — эффективный и продуктивный инструмент программирования запоминающих устройств. Поддерживает работу с широким набором чипов, включая 27 серию

Тип памяти серии 27… 27C… сохраняет записанные программатором данные до следующего программирования с функцией стирания или без таковой.

Допускается многократное программирование без стирания, при условии изменения битов только от состояния единицы до состояния нуля или имеющих состояние нуль.

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

Конфигурация исполнения серии 27…, 27C..

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

Такой тип микросхем (без окна) относят к чипам EPROM, которые программируются за один раз. Маркируются чипы как OTP (One Time Programmable) — одноразовое программирование.

Запоминающее программируемое устройство из группы однократно программируемых EPROM (One Time Programmable). В настоящее время редко применяемые

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

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

Также следует отметить особенности EPROM серии 27C… Символ «С» в данном случае указывает на принадлежность чипа к семейству CMOS (Complimentary Metal Oxide Semiconductor) — комплементарный метал-оксидный полупроводник.

Этот вид микросхем памяти отличается сниженной производительностью по отношению к семейству NMOS (N-channel Metal Oxide Semiconductor) — N-канальный метал-оксидный полупроводник.

Кроме того, серия 27C требует меньшего напряжения питания (12,5В). Между тем обе конфигурации исполнения совместимы. Поэтому, к примеру, микросхема 2764 вполне заменима на чип 27C64.

Микросхемы памяти EEPROM серии 28C…

Здесь первое отличие заметно в аббревиатуре типа памяти – EEPROM, что означает электрически стираемое программируемое постоянное запоминающее устройство (Electrically Erasable Programmable Read Only Memory).

Построение этой серии практически идентично 27 чипам. Однако 28 серия позволяет стирать отдельные байты или всё пространство памяти электрическим способом, без применения ультрафиолета.

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

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

Чтобы компенсировать этот недостаток, чипы подобные AT28C256, оснащаются функцией блочного программирования. При таком подходе к программированию, одновременно (блоком) загружаются 64, 128 или 256 байт.  Блочный способ сокращает время программирования.

Чипы памяти FLASH EEPROM серии 28F …, 29C …, 29F …

Эти чипы можно стирать электрически — полностью или блоками, а некоторые (подобные AT28C …) могут программироваться блоками.

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

Устройства записи и хранения данных, поддерживающие технологию программирования Flash-memory. Отличаются исполнением корпуса с большим числом контактов (32). Входят в группу EPROM

Простой пример, когда Flash-память доступна только в корпусах на 32 контакта или более. Поэтому, допустим, чип 28F256 на 32 вывода не совместим с чипом 27C256, имеющим 28 контактных выводов. При этом микросхемы имеют одинаковый объём памяти и другие параметры, подходящие для замены.

Чипы EEPROM с последовательным доступом (24C …, 25C …, 93C …)

Микросхемы памяти с последовательным интерфейсом отличаются тем, что вывод данных и наименование имен в них происходят частями (последовательно).

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

Всего восемь контактных ножек достаточно запоминающему устройству серии 24C и подобным для полноценной работы на запись и хранение данных

Это преимущество успешно используется. Практически все EEPROM последовательного доступа изготавливаются в виде 8-контактных малогабаритных микросхем. Такое исполнение корпуса видится более практичным, удобным.

Запоминающие устройства ОЗУ  серии 52 …, 62 …, 48Z …, DS12 …, XS22 …

Аббревиатура ОЗУ (RAM) расшифровывается как «память произвольного доступа» (Random Access Memory). Также микросхемы серии 52 …, 62 … и подобные часто характеризуются «оперативными запоминающими устройствами».

Их отличительные черты – скоростная запись без необходимости предварительного стирания. Здесь видится некоторое преимущество относительно других изделий.

Но есть и недостаток – чипы ОЗУ отмеченной и других серий утрачивают все записанные и сохранённые данные при отключении питания.

Однако имеется альтернатива – память NVRAM (Non Volatile Random Access Memory) – энергонезависимая память серий 48, DS, XS и подобная, с произвольным доступом.

Этот вид чипов выделяется среди основных преимуществ микросхем RAM высокой скоростью перезаписи и простым программированием. Потеря питания не оказывает влияние на сохранённую информацию.

Устройства записи и хранения информации, которые не боятся отключения питания. Их структура предусматривает эффективную защиту данных

Как же способом достигается энергетическая независимость NVRAM? Оказывается, производителями используются две методики:

  1. Встраиваемый в корпус мини аккумулятор.
  2. Совмещение в одном корпусе NVRAM и EEPROM.

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

Для второго варианта: технология предусматривает копирование данных пространства памяти NVRAM на встроенное пространство EEPROM. Если утрачивается питание, копия информации остаётся нетронутой и после восстановления энергии, автоматически копируется на NVRAM.

Маркировка и взаимозаменяемость компонентов

Выведенная на корпусе маркировка чипа памяти традиционно содержит:

  • аббревиатуру производителя,
  • технологию производства,
  • размер (объём) памяти,
  • максимально разрешенную скорость доступа,
  • диапазон температур,
  • тип формы корпуса.

Также на корпусах нередко отмечаются сведения о производителе. Независимо от производителя, многие микросхемы памяти совместимы.

Маркировка — структура записи на корпусе программируемого устройства, раскрывающая основные сведения, по которым можно подобрать аналог на замену при необходимости

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

Если дело касается взаимной замены, в первую очередь должна поддерживаться технология (EPROM, EEPROM , FLASH и т.д.),

Также микросхемы памяти должны иметь одинаковый размер (объём) и равноценное или меньшее время доступа. Желательно выбирать корпус, подходящий по температурному диапазону.

Следует отметить: размер памяти задается в битах, не в байтах. За цифрой объёма обычно следует обозначение версии (например, «F»).

Далее, через дефис, отмечается максимально разрешенная скорость доступа в наносекундах — время задержки между циклами ввода адреса и вывода данных на порты чипа памяти.

Время задержки обозначается двумя цифрами (например, «70» соответствует 70 нс, а вот «10» соответствует 100 нс). Наконец, завершают маркировку изделия тип корпуса и допустимый диапазон температур.

Пример расшифровки маркировки микросхемы памяти M27C1001-10F1:

  • память типа EPROM,
  • объём хранения данных 1 Мбит (1001),
  • максимальное время доступа 100 нс (10),
  • тип корпуса DIP (F),
  • температурный диапазон 0 — 70ºС (1).
Из практики программирования запоминающих устройств


Написано по материалам: Batronix

zetsila.ru

Советы начинающим программистам микроконтроллеров / Habr

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

1. Многие начинающие электронщики не знают с чего начать, поэтому спрашивают совета. Большинство бывалых радиолюбителей ответят, что начни собирать какую нибудь схему. Естественно в голове любого начинающего сразу мелькает LCD дисплей с jpeg картинками, какой нибудь mp3 плеер или часы, без малейшей мысли о том, что не имея базовых знаний это неподъемная задача.

Я категорически против такого подхода. Обычно это все заканчивается — либо ничем, либо забитые форумы с мольбами помочь. Даже если кому то помогают, то в 90% он больше никогда не всплывет на сайтах по электронике. В остальных 10% он так и продолжает заливать форумы мольбами, его будут сначала пинать, затем поливать грязью. Из этих 10% отсеивается еще 9%. Далее два варианта: либо таки до глупой головы доходит и все же происходит goto к началу, либо в особо запущенных вариантах, его удел копировать чужие конструкции, без единой мысли о том как это работает. Из последних зачастую рождаются ардуинщики.

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

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

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

2. Перед решением задачи, дробите ее до абсурда вплоть до «припаять резистор», это помогает, проверено. Мелкие задачи решать куда проще. Когда большая задача разбита на кучу мелких действий, то все что остается — это выполнить их. Могу привести еще один годный совет, хоть он вам и покажется бредовым — заведите блокнотик и пишите в него все что собираетесь сделать. Вы думаете, итак запомню, но нет. Допустим сегодня у меня хорошее настроение и думаю о том, как собрать плату. Запиши план действий: сходить купить резистор, подготовить провода, сделать крепление дисплея. Потом все забудешь, откроешь блокнотик и смотришь — ага сегодня настроение попилить и построгать, сделаю крепление. Или собираешь ты плату и уже осталось допаять последний компонент, но не тут то было резисторы кончились, вот записал бы перед тем как паять, то вспомнил.

3. Не пользуйтесь кодогенераторами, нестандартными фичами и прочими упрощалками, хотя бы на первых этапах. Могу привести свой личный пример. Во времена активного использования AVR я пользовался кодогеном CAVR. Меня он полностью устраивал, хотя все говорили, что он кака. Звоночки звенели постоянно, были проблемы с библиотеками, с синтаксисом, с портированием, но было тяжело от этого отказаться. Я не разбирался как это работает, просто знал где и как поставить галочки.

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

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

4. Изучайте язык Си. Эх, как же часто я слышу, как начинающие радиолюбители хвалятся, что хорошо знают сишку. Для меня это стало кормом, всегда люблю проконсультироваться у таких собеседников. Обычно сразу выясняется, что язык они совершенно не знают. Могу сказать, что не смотря на кажущуюся простоту, людей которые действительно хорошо бы его знали, встречал не так много. В основном все его знают на столько, на сколько требуется для решения задач.

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

Очень многие начинающие брезгуют изучением языка, поэтому если вы не будете как все, то сразу станете на две ступени выше остальных новичков. Так же не никакой разницы, где изучать язык. На мой взгляд, микроконтроллер для этого не очень подходит. Гораздо проще поставить какую нибудь Visual studio или Qt Creator и порешать задачки в командной строке.

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

5. Изучение ассемблера? Бояться его не нужно, равно как и боготворить. Не нужно думать, что умея написать программу на ассемблере, вы сразу станете гуру микроконтроллеров, почему то это частое заблуждение. В первую очередь это инструмент. Даже если вы не планируете использовать его, то все равно я бы настоятельно рекомендовал написать хотя бы пару программ. Это сильно упростит понимание работы микроконтроллера и внутреннего устройства программ.

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

7. Часто народ просит прислать даташит на русском. Даташит — это то, что должно восприниматься как истина, самая верная информация. Даже там не исключены ошибки. Если к этому добавятся ошибки переводчика, он ведь тоже человек, может даже не нарочно, просто опечататься. Либо у него свое видение, может что-то упустить, на его взгляд не важное, но возможно крайне важное для вас. Особенно смешной становится ситуация, когда нужно найти документацию на не сильно популярные компоненты.

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

Мною был проведен эксперимент: в наличии был студент, даташит и гугл переводчик. Эксперимент №1: студенту вручен даташит и дано задание самостоятельно найти нужные значения, результат — «да как я смогу», «да я не знаю английский», «я ничего не нашел/я не понял» типичные фразы, говорящие о том, что он даже не пытался. Эксперимент №2: тому же студенту, вручен все тот же даташит и тоже задание, с той разницей, что я сел рядом. Результат — через 5 минут он сам нашел все нужные значения, абсолютно без моего участия, без знания английского.

8. Изобретайте велосипед. Например, изучаете какую то новую штуку, допустим транзистор, дядька Хоровиц со страниц своей книги авторитетно заявляет, что транзистор усиливает, всегда говорите — НЕ ВЕРЮ. Берем в руки транзистор включаем его в схему и убеждаемся что это действительно так. Есть целый пласт проблем и тонкостей, которые не описываются в книгах. Прочувствовать их можно только, когда возьмешь в руки и попробуешь собрать. При этом получаем кучу попутных знаний, узнаем тонкости. Кроме того, любая теория без практики забудется намного быстрее.

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

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

9. А как бы я сделал это, если бы находился на месте разработчиков? Могу ли я сделать лучше? Каждый раз задавайте себе эти вопросы, это очень хорошо помогает продвигаться в обучении. Например, изучите интерфейсы 1wire, i2c, spi, uart, а потом подумайте чем они отличаются, можно ли было сделать лучше, это поможет осознать почему все именно так, а не иначе. Так же вы будете осознавать, когда и какой лучше применить.

10. Не ограничивайтесь в технологиях. Важно что этот совет имеет очень тонкую грань. Был этап в жизни, когда из каждой подворотни доносилось «надо бы знать ПЛИС», «а вот на ПЛИС то можно сделать». Формально у меня не было целей изучать ПЛИСины, но и пройти мимо было никак нельзя. Этому вопросу было выделено немного времени на ознакомление. Время не прошло зря, у меня был целый ряд вопросов, касаемых внутреннего устройства микроконтроллеров, именно после общения с плисинами я получил ответы на них. Подобных примеров много, все знания, которые я приобретал в том или ином виде, рано или поздно пригодились. У меня нет ни единого бесполезного примера.

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

11. Если спросить начинающего радиолюбителя, что ему больше нравится программирование или схемотехника, то с вероятностью 99% ответ будет программирование. При этом большую часть времени эти программисты тратят на изготовление плат ЛУТом/фоторезистом. Причины в общем то понятны, но довольно часто это переходит в некий маразм, который состоит в изготовлении плат ради изготовления плат.

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

12. Следующий совет, особенно болезненный, мне очень не хочется его обсуждать, но надо. Часто мне пишут, мол ххх руб за ууу дорого, где бы подешевле достать. Вроде бы обычный вопрос, но обычно я сразу напрягаюсь от него, так как зачастую он переходит в бесконечные жалобы на отсутствие денег. У меня всегда возникает вопрос: почему бы не оторвать пятую точку и не пойти работать? Хоть в тот же макдак, хоть на стройку, потерпеть месяц, зато потом можно приобрести парочку плат, которых хватит на ближайший год. Да я знаю, что маленьких городах и селах сложно найти работу, переезжайте в большой город. Работайте на удаленке, в общем нужно крутиться. Просто жаловаться нет смысла, выход из ситуации есть, кто ищет его тот находит.

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

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

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

15. Тонкий вопрос: профильное высшее образование, нужно ли оно? Мне известны не единичные случаи, когда люди работали абсолютно без образования и по опыту и знаниям они могли дать прикурить любому дипломированному специалисту. Собственно, у меня нет профильного образования, испытываю ли я от этого дискомфорт? В определенной степени да.

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

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

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

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

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

16. Поздно ли начинать программировать в 20, 30, 40, 50 лет? Практика других людей показывает, что возраст вообще не помеха. Многие почему то не учитывают то, что есть целый пласт работы, которую молодые в силу своих амбиций не хотят делать. Поэтому работодатели предпочитают брать тех, кто будет ее тащить. Это ваш шанс зацепиться, а дальше все зависит только от вас.

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

habr.com

Программирование микроконтроллеров начинающим

Программирование микроконтроллеров

Термин программирование микроконтроллеров обозначает процесс записи (программирования) информации в постоянное запоминающее устройство (ПЗУ) микроконтроллера. Помимо программирования микроконтроллеров, в практике встречается программирование микросхем  памяти и программирование логических матриц.  Как правило, программирование микроконтроллеров и микросхем памяти производится при помощи специальных устройств – программаторов. Хороший программатор позволяет не только программировать (записывать), но и считывать информацию, а в ряде случаев, производить и другие действия (стирание, защита от чтения, защита от программирования и т.п.).

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

1.   По функциональному назначению

1.1.   Микросхемы памяти;

1.2.   Микроконтроллеры с внутренним ПЗУ;

1.3.   Микросхемы программируемой логики (программируемые матрицы).

2.   По возможности программирования

2.1.   Однократно программируемые — устройства допускающие единственный цикл программирования;

2.2.   Многократно программируемые (перепрограммируемые) — устройства допускающие множество циклов программирования (перепрограммирования). 

3.   По допустимым способам программирования

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

3.2.   Микрocхeмы, поддерживающие режим внутрисхемного программирования (“ISP mode”), и программируемые непосредственно в плате пользователя.

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

3.3.   Микросхемы, поддерживающие режим внутреннего самопрограммирования. Подобные микрocхeмы допускают выполнение необходимой операции (запись, стирание, чтение, верификация и т.п.) непосредственно в устройстве пользователя, без использования какого либо программатора. При этом устройство пользователя должно быть разработано с учетом специфических требований данного режима.

Программирование микроконтроллера подразумевает заполнение внутренней памяти микроконтроллера нужной информацией. В зависимости от типа программируемого микроконтроллера, внутренняя память микроконтроллера обладает своей структурой и организацией. В общем случае, внутренняя память микроконтроллера это: память данных, память программ, регистры специального назначения (fuse — биты) — содержимое которых определяет режимы работы микроконтроллера и/или его периферии. Таким образом: программирование микроконтроллера — это заполнение каждой области памяти своей специфической информацией.

Каждый программируемый микроконтроллер обладает своим индивидуальным набором допустимых режимов:
программирование (запись), чтение, стирание, защита от чтения, защита от программирования и т.п.

Некоторые программируемые микроконтроллеры не имеют отдельного режима «стирание». Для них стирание прежней информации в памяти происходит в теневом режиме, при каждом новом цикле программирования микроконтроллера; 

Некоторые программируемые микроконтроллеры поддерживают различные режимы ограничения доступа. Выбор режима ограничения доступа производится при программировании микроконтроллера. В зависимости от выбранного режима, либо все ПЗУ микроконтроллера, либо его определенные части могут быть:

  1. — защищены от возможности записи/дозаписи;
  2. — защищены от возможности считывания содержимого извне. При попытке считать информацию, защищенный микроконтроллер будет выдавать либо «мусор», либо «все 0», либо «все 1».

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

  1. PROM (Programmable Read-Only Memory) — программируемая пользователем энергонезависимая память (ПЗУ).
  2. EPROM (Erasable Programmable Read-Only Memory) — перепрограммируемое ПЗУ. Стирание содержимого производится при помощи ультрафиолетовых лучей, после облучения подобное ПЗУ готово к новому циклу записи информации (программированию). Устаревший тип памяти.
  3. EEPROM (Electrically Erasable Programmable Read-Only Memory
    ) — электрически стираемое перепрограммируемое ПЗУ. Память такого типа может стираться и заполняться данными многократно, от несколько десятков тысяч раз до миллиона.
  4. FLASH (Flash Memory) — одна из технологических разновидностей энергонезависимой перезаписываемой памяти.
  5. NVRAM (Non-volatile memory) — «неразрушающаяся» память, представляющая собой ОЗУ со встроенным источником электропитания. По своей функциональности для пользователя – аналогична традиционному ПЗУ.
  6. PLD (Programmable Logic Device) — Программируемая логическая интегральная схема. (ПЛИС).
  7. MCU (Microcontroller Unit) – микроконтроллер.

Мы предлагаем следующие модели программаторов нашего производства

ChipProg-481 Универсальный USB программатор, оптимизированный для скоростного программирования NAND Flash, микроконтроллеров, FLASH, E(E)PROM, NVRAM, ПЛИС, PLD. Описание программатора
ChipProg-40 Бюджетный, универсальный программатор с USB интерфейсом. Программирование микроконтроллеров, FLASH, EPROM, EEPROM, NVRAM. Описание программатора ChipProg-ISP Внутрисхемный ISP программатор. Программирование микроконтроллеров и микросхем памяти в устройстве пользователя. Описание программатора ChipProg-G41 Промышленный программатор копировщик. Самое быстрое программирование, тиражирование микроконтроллеров, FLASH, NAND, E(E)PROM, NVRAM, ПЛИС, PLD. Описание программатора ChipProg-G4 Промышленный программатор копировщик. Программирование, тиражирование микроконтроллеров, FLASH, NAND, E(E)PROM, NVRAM, ПЛИС, PLD. Описание программатора

www.phyton.ru

Как я создавал Программатор PIC, AVR и микросхем памяти

Автор: Садовой А.В.

Материал взят с журнала РАДИО 2007, №10

Ну вот и настало то время, когда и мне пришлось взяться за изучение МК. К этому подвинула статья Автоматическое ЗУ на Atmega16A Тут и без всякого раздумья стало понятно, что нужно срочно собирать программатор. Листая журнал РАДИО, нашел приемлемую схему для себя. Ниже приводится описание с журнала.

   Предлагаемый программатор работает под управлением программы PonyProg [1], распространяемой бесплатно. Если ограничиться программированием МК PIC и микросхем памяти, можно воспользоваться также программами IC-Prog и WinPic800, распространяемыми на тех же условиях.
   Программирование 18-выводных МК PIC и 20-выводных AVR производится без каких-либо коммутаций. Достаточно установить МК в предназначенную для него панель и выбрать его тип в меню используемой программы. От установки панелей для всех МК этих семейств автор сознательно отказался, так как в любительской практике они используются редко. При необходимости нужные панели можно установить дополнительно или подключать требующиеся для программирования выводы МК к предусмотренному в программаторе разъему. Этот же разъем используется при внутрисхемном программировании.

   Кроме МК, устройство позволяет программировать микросхемы памяти с последовательным интерфейсом, имеющиеся в меню используемых программ. Для подобных программ с интерфейсом I2C в программаторе предусмотрена панель.
   До начала процесса программирования и по его завершении напряжение питания программируемой микросхемы отключено, что дает возможность безопасно установить микросхему в панель, а затем извлечь ее.
   Прежде чем рассматривать работу программатора подробно, вспомним некоторые особенности программирования МК семейств PIC и AVR. Номера упоминаемых далее выводов МК различных можно найти в технической документации.
   Чтобы перевести в режим программирования МК семейств PIC, требуется подать на его вывод MCLR напряжение +12…14 В. Обмен информацией с устройством, управляющим программированием, происходит через двунаправленный вывод DATA. Синхронизирующие импульсы обмен импульсы поступают на вывод CLOCK.
   МК семейства AVR повышенного напряжения не требуют. Они переходят в режим программирования при низком логическом уровне на выводе RESET. При этом необходимо, чтобы к соответствующим выводам МК был подключен кварцевый резонатор. Информация принимается через вывод MOSI, а передается через вывод MISO. Вход синхронизирующих импульсов – вывод SCK.
   Схема программатора изображена на рис. 1. Ее наиболее существенное отличие от прототипа [1] заключается в использовании для связи с COM-портом компьютера микросхемы МАХ232СРЕ (DA2) – специализированного преобразователя уровней RS232 – ТТЛ. Это позволило выполнить все требования по уровням передаваемых сигналов и нагрузочной способности линий порта и значительно улучшило надежность работы устройства.

   Чтобы излишне не нагружать COM-порт, предусмотрено питание программатора и программируемой микросхемы только от внешнего источника. Его постоянное напряжение (15 В) или переменное (10…12 В) напряжение поступает в программатор через диодный мост VD1, служащий выпрямителем переменного напряжения или приводящий постоянное к правильной полярности.
   Интегральный стабилизатор DA1 питает напряжением 5 В преобразователь уровней DA2. Светодиод HL1 сигнализирует о включении питания. Стабилизатор DA3 на 12 В – управляемый. Он включен при высоком логическом уровне напряжения на управляющем входе 4 и выключен при низком уровне. Это свойство использовано для управления напряжением, переводящим МК семейства PIC в режим программирования, и напряжением питания программируемой микросхемы, которое получают из 12 В с помощью интегрального стабилизатора DA4. О включенном питании программируемой микросхемы сигнализирует светодиод HL2.

   Очень важен правильный выбор емкости конденсатора С7 на выходе стабилизатора DA3. При слишком большом значении напряжение, переводящее МК семейства PIC в режим программирования, после включения стабилизатора будет нарастать недостаточно быстро, что приведет к сбою. Устанавливать конденсатор С7 слишком маленькой емкости или вовсе отказаться от него нельзя – это приведет к самовозбуждению стабилизатора и сделает программирование невозможным.
   Диод VD2 ограничивает до безопасного значения отрицательное напряжение, которое может поступить на управляющий вход стабилизатора DA3 с контакта 3 разъема XS1 (линии TXD COM-порта). Узел на транзисторе VT2 формирует сигнала RESET для МК семейства AVR.
   Узел на транзисторах VT1 и VT3 разделяет имеющуюся в МК семейства PIC двунаправленную линию DATA на две однонаправленных для компьютера. Под названиями MOSI и MISO эти же однонаправленные линии используются при программировании МК семейства AVR.
   Для аналогичного преобразования в [1] был применен логический инвертор на одном транзисторе. Однако его практическое использование выявило довольно большое число сбоев, причина которых, по мнению автора, — недостаточная задержка информационного сигнала на линии DATA относительно синхронизирующего на линии CLOCK. Добавление второго инвертора увеличило задержку и устранило сбои, однако «лишнюю» инверсию приходится компенсировать соответствующей настройкой управляющей программы, о чем будет сказано далее.
   Используя для управления программированием программу PonyProg, следует выбрать в соответствующем ее окне программатор «SI Prog I/O» и задать инверсию сигналов в соответствии с табл. 1. Программа WinPic при работе в ОС windows XP позволяет программировать только МК семейства PIC и микросхем памяти. Однако в ОС Windows 98 МК этой программой не программируются. С программой IC-Prog ситуация обратная. При настройке обеих программ должен быть выбран программатор “JDM Programmer”. Инверсию сигналов задают в соответствии с табл. 2. (для WinPic) и табл. 3. (для IC-Prog).

   Наличие нескольких во многом равноценных управляющих программ дает возможность пользоваться программатором даже при возникновении проблем в работе с одной из них. Например, МК, отсутствующий в списке доступных одной программе, может быть найден в списке другой.
   Так случилось при попытке запрограммировать МК PIC16F628A. В списке программы PonyProg имеется лишь PIC16F628 на экране монитора появляется сообщение «Неизвестный тип микроконтроллера». Даже если проигнорировать это сообщение, попытки не только запрограммировать, но и просто прочитать содержимое памяти МК положительного результата не дают. Однако в списках программ WinPic800 и IC-Prog нужный МК есть, его программирование с помощью этих программ выполняется без замечаний.

ЛИТЕРАТУРА

1. Lanconelly C. PonyProg – serial device programmer 
2. Gijzen B. IC-Prog Prototype Programmer 
3. Font S. Software for PIC programming Windows 95/98/NT/2000/ME/XP compatible 

Все ясно и понятно как «божий день», остается за малым, а может быть не малым, воплотить все дела паяльником. Далее привожу фото-обзор как я создавал программатор:

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

При сборке предыдущей статьи Светодинамическое устройство «LED-подарок девушке» как то подумал «а что если покрасить плату в черный цвет?» смотрится креативненько))) плату покрасил и в этот раз.

 

Вот и собрал. В отличии от оргинала, не стал впаивать панельки под МК, а впаял разъем в виде «штырьков» без понятия как они называются правильно))) Разъем для подключения адаптера с переменкой 15 В использовал от модема TP-Link и выключатель питания от него же. Диодный мост взял КЦ407.

 

Подписал разъем

 

Настало время проверить. Установил прогу PonyProg, запустил ее, появилось окно в котором требуется «…произвести калибровку». Жмем «Yes» 

 

«Калибровка завершена»

 

«Настройка платы программатора» находится в верхнем меню «Установка». Жмем «Проверка» если все нормально, то появится окошко «Тест Ок»

Теперь можно записывать или считывать прошивку с МК или микросхем памяти. Как раз на работу принесли усилок фирмы BBK вот понадобилось проверить микруху памяти 24С02. Подключил микруху к соответствующим выводам на разъеме, подключил программатор к COM-порту компа, включил питание, считал/записал прошивку вот и все. Так же проверил микруху 24С04 все работает. МК PIC и AVR еще не проверял, но т.к. нужно потихоньку собирать ЗУ на Atmega16A скоро будем «шить» )))

shemu.ru

Программирование микроконтроллеров для начинающих: легко и доступно

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

Какие микроконтроллеры существуют?

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

Как микроконтроллеры программируются?

Программирование микроконтроллеров осуществляется, как правило, с помощью специальных приспособлений, которые называются программаторами. Программаторы могут быть или покупными или самодельными. Но при прошивке микроконтроллера с помощью самодельного программатора шанс того, что он превратится в «кирпич», довольно высокий. Есть ещё один вариант, который можно рассмотреть на примере платы «Ардуино». Плата работает на МК фирмы Atmel, и в ней осуществляется программирование микроконтроллеров AVR. В плате уже есть заранее прошитый бутлоадер и порт USB, которые позволяют безопасно прошить используемый микроконтроллер, не давая пользователю доступа к данным, что могут этот самый МК вывести из строя. Программирование микроконтроллеров для начинающих не так сложно, как может показаться, и при определённой сноровке и сообразительности избавит вас от необходимости ехать за новым механизмом.

Аппаратные различия разных микроконтроллеров

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

Языки программирования микроконтроллеров

В качестве языков программирования микроконтроллеров используется два: С/С++ и ассемблер. Каждый из них имеет свои преимущества и недостатки. Так, если говорить про ассемблер, то он даёт возможность сделать всё очень тонко и качественно, особенно важно это, когда не хватает оперативной памяти или оперативных мощностей (что, впрочем, довольно редко происходит). Но его изучение и написание программ на нём требует довольно много усилий, пунктуальности и времени. Поэтому для разработок на основе микроконтроллеров часто используют языки программирования С и С++. Они являются более понятными, по своему виду и структуре они близки человеческой речи, хотя и не представляют из себя её в полноценном понимании. Также они имеют очень хорошо проработанный функционал, который может запросто взаимодействовать с аппаратной частью, представляя, что это всего лишь элемент программы. При всех своих явных преимуществах на С и С++ создают более объемные программы, нежели на ассемблере.

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

Напутствие

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

fb.ru

Как я создавал Программатор PIC, AVR и микросхем памяти

Автор: Садовой А.В.

Материал взят с журнала РАДИО 2007, №10

Ну вот и настало то время, когда и мне пришлось взяться за изучение МК. К этому подвинула статья Автоматическое ЗУ на Atmega16A Тут и без всякого раздумья стало понятно, что нужно срочно собирать программатор. Листая журнал РАДИО, нашел приемлемую схему для себя. Ниже приводится описание с журнала.

   Предлагаемый программатор работает под управлением программы PonyProg [1], распространяемой бесплатно. Если ограничиться программированием МК PIC и микросхем памяти, можно воспользоваться также программами IC-Prog и WinPic800, распространяемыми на тех же условиях.
   Программирование 18-выводных МК PIC и 20-выводных AVR производится без каких-либо коммутаций. Достаточно установить МК в предназначенную для него панель и выбрать его тип в меню используемой программы. От установки панелей для всех МК этих семейств автор сознательно отказался, так как в любительской практике они используются редко. При необходимости нужные панели можно установить дополнительно или подключать требующиеся для программирования выводы МК к предусмотренному в программаторе разъему. Этот же разъем используется при внутрисхемном программировании.
   Кроме МК, устройство позволяет программировать микросхемы памяти с последовательным интерфейсом, имеющиеся в меню используемых программ. Для подобных программ с интерфейсом I2C в программаторе предусмотрена панель.
   До начала процесса программирования и по его завершении напряжение питания программируемой микросхемы отключено, что дает возможность безопасно установить микросхему в панель, а затем извлечь ее.
   Прежде чем рассматривать работу программатора подробно, вспомним некоторые особенности программирования МК семейств PIC и AVR. Номера упоминаемых далее выводов МК различных можно найти в технической документации.
   Чтобы перевести в режим программирования МК семейств PIC, требуется подать на его вывод MCLR напряжение +12…14 В. Обмен информацией с устройством, управляющим программированием, происходит через двунаправленный вывод DATA. Синхронизирующие импульсы обмен импульсы поступают на вывод CLOCK.
   МК семейства AVR повышенного напряжения не требуют. Они переходят в режим программирования при низком логическом уровне на выводе RESET. При этом необходимо, чтобы к соответствующим выводам МК был подключен кварцевый резонатор. Информация принимается через вывод MOSI, а передается через вывод MISO. Вход синхронизирующих импульсов – вывод SCK.
   Схема программатора изображена на рис. 1. Ее наиболее существенное отличие от прототипа [1] заключается в использовании для связи с COM-портом компьютера микросхемы МАХ232СРЕ (DA2) – специализированного преобразователя уровней RS232 – ТТЛ. Это позволило выполнить все требования по уровням передаваемых сигналов и нагрузочной способности линий порта и значительно улучшило надежность работы устройства.

   Чтобы излишне не нагружать COM-порт, предусмотрено питание программатора и программируемой микросхемы только от внешнего источника. Его постоянное напряжение (15 В) или переменное (10…12 В) напряжение поступает в программатор через диодный мост VD1, служащий выпрямителем переменного напряжения или приводящий постоянное к правильной полярности.
   Интегральный стабилизатор DA1 питает напряжением 5 В преобразователь уровней DA2. Светодиод HL1 сигнализирует о включении питания. Стабилизатор DA3 на 12 В – управляемый. Он включен при высоком логическом уровне напряжения на управляющем входе 4 и выключен при низком уровне. Это свойство использовано для управления напряжением, переводящим МК семейства PIC в режим программирования, и напряжением питания программируемой микросхемы, которое получают из 12 В с помощью интегрального стабилизатора DA4. О включенном питании программируемой микросхемы сигнализирует светодиод HL2.
   Очень важен правильный выбор емкости конденсатора С7 на выходе стабилизатора DA3. При слишком большом значении напряжение, переводящее МК семейства PIC в режим программирования, после включения стабилизатора будет нарастать недостаточно быстро, что приведет к сбою. Устанавливать конденсатор С7 слишком маленькой емкости или вовсе отказаться от него нельзя – это приведет к самовозбуждению стабилизатора и сделает программирование невозможным.
   Диод VD2 ограничивает до безопасного значения отрицательное напряжение, которое может поступить на управляющий вход стабилизатора DA3 с контакта 3 разъема XS1 (линии TXD COM-порта). Узел на транзисторе VT2 формирует сигнала RESET для МК семейства AVR.
   Узел на транзисторах VT1 и VT3 разделяет имеющуюся в МК семейства PIC двунаправленную линию DATA на две однонаправленных для компьютера. Под названиями MOSI и MISO эти же однонаправленные линии используются при программировании МК семейства AVR.
   Для аналогичного преобразования в [1] был применен логический инвертор на одном транзисторе. Однако его практическое использование выявило довольно большое число сбоев, причина которых, по мнению автора, — недостаточная задержка информационного сигнала на линии DATA относительно синхронизирующего на линии CLOCK. Добавление второго инвертора увеличило задержку и устранило сбои, однако «лишнюю» инверсию приходится компенсировать соответствующей настройкой управляющей программы, о чем будет сказано далее.
   Используя для управления программированием программу PonyProg, следует выбрать в соответствующем ее окне программатор «SI Prog I/O» и задать инверсию сигналов в соответствии с табл. 1. Программа WinPic при работе в ОС windows XP позволяет программировать только МК семейства PIC и микросхем памяти. Однако в ОС Windows 98 МК этой программой не программируются. С программой IC-Prog ситуация обратная. При настройке обеих программ должен быть выбран программатор “JDM Programmer”. Инверсию сигналов задают в соответствии с табл. 2. (для WinPic) и табл. 3. (для IC-Prog).

   Наличие нескольких во многом равноценных управляющих программ дает возможность пользоваться программатором даже при возникновении проблем в работе с одной из них. Например, МК, отсутствующий в списке доступных одной программе, может быть найден в списке другой.
   Так случилось при попытке запрограммировать МК PIC16F628A. В списке программы PonyProg имеется лишь PIC16F628 на экране монитора появляется сообщение «Неизвестный тип микроконтроллера». Даже если проигнорировать это сообщение, попытки не только запрограммировать, но и просто прочитать содержимое памяти МК положительного результата не дают. Однако в списках программ WinPic800 и IC-Prog нужный МК есть, его программирование с помощью этих программ выполняется без замечаний.

ЛИТЕРАТУРА

1. Lanconelly C. PonyProg – serial device programmer 
2. Gijzen B. IC-Prog Prototype Programmer 
3. Font S. Software for PIC programming Windows 95/98/NT/2000/ME/XP compatible 

Все ясно и понятно как «божий день», остается за малым, а может быть не малым, воплотить все дела паяльником. Далее привожу фото-обзор как я создавал программатор:

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

При сборке предыдущей статьи Светодинамическое устройство «LED-подарок девушке» как то подумал «а что если покрасить плату в черный цвет?» смотрится креативненько))) плату покрасил и в этот раз.

 

Вот и собрал. В отличии от оргинала, не стал впаивать панельки под МК, а впаял разъем в виде «штырьков» без понятия как они называются правильно))) Разъем для подключения адаптера с переменкой 15 В использовал от модема TP-Link и выключатель питания от него же. Диодный мост взял КЦ407.

 

Подписал разъем

 

Настало время проверить. Установил прогу PonyProg, запустил ее, появилось окно в котором требуется «…произвести калибровку». Жмем «Yes» 

 

«Калибровка завершена»

 

«Настройка платы программатора» находится в верхнем меню «Установка». Жмем «Проверка» если все нормально, то появится окошко «Тест Ок»

Теперь можно записывать или считывать прошивку с МК или микросхем памяти. Как раз на работу принесли усилок фирмы BBK вот понадобилось проверить микруху памяти 24С02. Подключил микруху к соответствующим выводам на разъеме, подключил программатор к COM-порту компа, включил питание, считал/записал прошивку вот и все. Так же проверил микруху 24С04 все работает. МК PIC и AVR еще не проверял, но т.к. нужно потихоньку собирать ЗУ на Atmega16A скоро будем «шить» )))

shemu.ru

Простой внутрисхемный программатор LPC микроконтроллеров. Особенности внутрисхемного программирования. Часть вторая

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

Рис. 1. Внешний вид программатора.
В старые, добрые времена, когда микроконтроллеры с перепрограммируемой памятью программ на основе FLASH только начинали появляться, их программирование осуществлялось по параллельном интерфейсу. При этом для программирования могло использоваться более 20 выводов и зачастую требовалось использовать повышенное напряжение — 12 вольт и более. Микроконтроллеры тогда выпускались в выводных ДИП корпусах. Программировали их в основном вставив в высококачественные панельки программатора, а уже затем впаивали в устройство. Однако со временем начался переход на программирование по последовательному каналу, при этом для программирования стало использоваться уже всего 4-5 сигнальных ножек. Кроме этого микросхемы стали изготавливать в совершенно экзотических корпусах. Надёжные панельки под такие корпуса иной раз могли стоить чуть ли не больше самого программатора! Появилась возможность и необходимость перепрограммировать микроконтроллеры не выпаивая из схемы – внутрисхемное программирование. Это очень удобно для отладки программы. Кроме этого появилась возможность производить монтаж платы целиком, а программирование осуществлять уже при настройке и выпуске прибора. Особенно это удобно при работе с контрактными производителями – есть гарантия, что не произойдёт утечка программного кода.
Сегодня большая часть устройств на микроконтроллерах использует внутрисхемное программирование. Для иллюстрации рассмотрим микроконтроллеры семейства LPC2xxx.
Эти микроконтроллеры имеют встроенный бутлоадер, который позволяет прошивать FLASH память путём внутрисхемного программирования. Для передачи данных используется последовательный порт 0 – выводы RXD0 и TXD0. Алгоритм входа в режим программирования очень простой, для этого используются всего две дополнительные сигнальные ножки – P0.14 и Reset.
Порт P0.14 устанавливается в низкий логический уровень, проще говоря замыкается на землю, при этом на выводе Reset должен присутствовать высокий логический уровень. Стоит однако заметить, что возможны и исключения, если до этого была запущена программа пользователя, в которой например задействован сторожевой таймер. Поэтому самый надёжный алгоритм ввода микроконтроллера в режим программирования следующий.
До включения питания замкнуть выводы P0.14 и Reset на землю. Подать питание, подождать пока оно установится в номинальное значение. Перевести Reset в высокий логический уровень, подождать как минимум несколько миллисекунд и подать высокий уровень на P0.14.
Для успешного применения данной возможности необходимо соблюдать несколько не сложных правил, которые проще продемонстрировать на примере схемы подключения программатора к устройству на основе микроконтроллера из серии LPC 214x. Для программирования будем использовать программатор, описанный в прошлой статье.

Рис. 2. Схема подключения программатора.
Начнём обзор схемы. Порт P0.14 подтянут к питанию с помощью резистора R4, чтобы при включении устройства в штатном режиме, на нём появлялся высокий уровень и соответственно, запускалась программа пользователя. В цепи LPC_RESET стоит подтягивающий регистр на питание и конденсатор на землю. Для нормальной работы их номиналы необходимо подбирать в зависимости от используемого источника питания. Дело в том, что при подключении устройства к питанию напряжение на нём достигает номинального не мгновенно, а постепенно, по мере того как заряжаются фильтрующие ёмкости. Для нормальной работы устройства необходимо чтобы запуск микроконтроллера начинался только по достижению определённого уровня питания, в современных микроконтроллерах для этого предусмотрены специальные цепи, однако на них надейся, а сам не плошай — как показывает практика при медленном увеличении питающего напряжения эти схемы могут срабатывать некорректно. В момент подачи напряжения питания конденсатор C2 начинает заряжаться и напряжение на нём некоторое время удерживается в низком уровне. Номиналы цепи R5,C2 желательно подобрать таким образом, чтобы высокий уровень на входе RESET появлялся не раньше, чем напряжение питания микроконтроллера достигнет напряжения 2,6 вольт.
Процесс программирования происходит при низком уровне на входе RESET, при это все порты ввода-вывода микроконтроллера переводятся в высокоомное состояние. Если порты вашего микроконтроллера используются для управления какими – либо узлами, например силовыми ключами или управляемыми стабилизаторами напряжения необходимо обеспечить их подтяжку к нужному логическому уровню во время программирования, иначе могут произойти большие неприятности, вплоть до выхода самой платы и управляемых ею устройств из строя.
В нашем примере нулевой COM порт используется не только для программирования, но и для обмена данными по интерфейсу RS485. Для этого служит узел на микросхеме D2. Обычно микросхема D2 постоянно включена в режим приёма, при этом она формирует сигнал на входе RXD микроконтроллера. В режиме программирования этот сигнал будет мешать программатору, для того чтобы этого не произошло, в схеме предусмотрены сопротивления R1 и R3. R1 переводит приёмник D2 в неактивное состояние – выход R0 переходит в высокоомное состояние и не мешает передавать данные программатору, а R3 отключает передатчик, чтобы некорректные данные не поступали через драйвер RS-485 интерфейса.
В случае, если вы собираетесь использовать для программирования достаточно длинные провода, либо имеется вероятность, что перепрограммированием устройства могут заняться пользователи, не имеющие достаточной квалификации следует побеспокоиться о защите программируемого микроконтроллера от статики и бросков напряжения. У меня, например, был случай, когда в устройстве пришлось заменять микроконтроллер 4 раза из-за криворуких “программистов”! Простейшая защита может состоять из диодов или стабилитронов, ограничивающих напряжение и включенных последовательно резисторов с небольшим сопротивлением. Например, как показано на рисунке 3.

Рис. 3. Схема подключения программатора с защитными цепями.
Осталось добавить, что для программирования микроконтроллеров семейства LPC2xxx на основе ядра ARM7TDMI вывод 3 программатора подсоединяют к порту P0.14. Для программирования микроконтроллеров семейства LPCxxx на основе ядра ARM7 Cortex вывод 3 программатора подсоединяют к порту P2.10.
Тема программирования микроконтроллеров и других приборов, не смотря на кажущуюся простоту, очень многогранна и полна нюансов. Однако для нашего случая
осталось рассказать о программном обеспечении и об особенностях программирования серии LPC900.
P.S.Данная статья рассчитана в основном на начинающих ембеддеров, поэтому извиняюсь за то, что возможно излишне подробно объясняю некоторые очевидные для профи вещи.

habr.com

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *