Перепрограммирование картриджей. Что такое чип памяти и как программировать микросхемы



Запаивая еще одну микросхему на очередную плату или перерезая дорожку на плате в десятый раз для внесения очередных (но не последних) изменений в новое устройство, вы начинаете подумывать: «А не бросить мне это нудное занятие?!» Ваше новое устройство получается не таким, как вам бы хотелось, но и изменять схему и переделывать всё на плате вам уже надоело.
Перелистывая журналы по электронике, вы всё чаще встречаете слова: процессор, микроконтроллер, прошивка, программирование. Но эти слова для вас не имеют конкретного значения. Вы где-то слышали, а может даже и держали в руках то, о чем вы даже думаете с благоговейным трепетом… микроконтроллеры! То, что уменьшает размеры устройств, наделяя их недостижимыми для вас возможностями…Нет, вам, как электронщику, понятны общие идеи работы этих устройств, но об их практическом применении в своих изделиях не может быть и речи! Вы уже несколько раз пытались освоить микроконтроллеры, даже приобрели пару книг из серии «… для чайников» и скачали из интернета несколько популярных самоучителей. Проходило какое-то время, и всё останавливалось на самом интересном месте: схемы, показанные в книгах, вам были понятны, но вот методы создания программы для вас так и остались загадкой. Набрать несколько символов на английском (или каком-то там) языке в указанной книгой программе для вас не проблема. Но не ясна СУТЬ и МЕТОДЫ использования этих загадочных символов, последовательность которых в книге называли программой. Вы винили себя в тупости и откладывали идею освоения микроконтроллеров в дальний ящик. Да и зачем? Вы и так прекрасно справляетесь: у вас есть много-много микросхем, на которых вы разрабатываете свои устройства… Устройства на больших платах, которые вы долго-долго отлаживаете и переделываете…
Но знакомитесь с парнишкой из соседнего дома: он пишет программы, загружает их в микроконтроллер и то, что вам приходится отлаживать месяцами, он делает за несколько дней. Вы в панике, начинаете искать заброшенные книжки, и вспоминать всё ранее прочитанное… Он может, а вы – нет. Вы поближе знакомитесь с этим парнишкой, и под видом стороннего разговора начинаете расспрашивать его о микроконтроллерах и их возможностях. И он спокойно говорит о том, что контроллеры для него хобби. Вы просите его рассказать вам об их устройстве. Его ответы просты и незатейливы.

Микроконтроллеры. Что такое микроконтроллер?
Микроконтроллер - это маленький специализированный компьютер, по-русски микро-ЭВМ. Причем, эта микро-ЭВМ выполнена в одной микросхеме, на одном кристалле. Отсюда и полное название: «однокристальная микро-ЭВМ». Как и компьютер, микроконтроллер - это электронное устройство, работой которого управляет программа - последовательность команд, заранее загруженная в память. Эти команды выполняет процессор: этакий «мега-мозг», имеющий в своем составе АЛУ - арифметически-логическое устройство. Т.е, процессор «умеет» выполнять математические действия и производить логические операции над данными.

Разрядность процессора. Методы представления информации.
И процессор, и память - цифровые устройства, которые «понимают» сигналы только двух уровней: есть напряжение/ток, и нет напряжения/тока на линии. Эти два состояния принято записывать так: логическая единица - «1», и логический ноль - «0». Команды и данные - это набор единичек и нулей. Одна линия (называют разрядом) при двух её состояниях может передать только два значения. Но при увеличении количества разрядов увеличивается и количество значений: два разряда - уже четыре, а восемь разрядов - уже 256 значений. Разряд принято называть битом: один разряд это один бит. А набор из восьми разрядов - байтом: восемь бит это один байт. Но один байт имеет только 256 значений. Для передачи большего количества информации используется несколько, последовательно расположенных в памяти, байт. Два байта передают уже 65536 значений. Три байта - 16777216 значений! И так далее. Самыми распространенными являются процессоры, которые за одно действие могут обработать восемь разрядов, поэтому такие процессоры и называют восьмиразрядными.

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

Память и её типы.
Данные могут быть считаны из памяти. Память - место, где какое-то время могут храниться программа и/или данные. Они могут храниться кратковременно - до отключения питания, или долговременно - независимо от наличия напряжения питания. Память первого типа используется для хранения промежуточных данных, используемых при выполнении различных операций. Поэтому её так и называют - «оперативная память». Память второго типа чаще используется для хранения программы. Типов долговременной памяти несколько: однократно программируемая память, память с электрическим стиранием и память, стираемая ультрафиолетовым или рентгеновским излучением. Физическое устройство и принцип работы памяти может быть разным, но суть одна: хранить данные. Для описания хранилища данных используют понятие «ячейка». Следовательно, чем больше ячеек, тем больше данных может быть сохранено. У каждой из ячеек имеется индивидуальный адрес. Процессор обращается к значению ячейки памяти именно по её адресу.

Порты. Режимы работы портов.
Данные так же могут быть получены из внешних устройств через линии связи - выводы микроконтроллера. Эти линии связи называют портами, а по-научному: устройства ввода и вывода данных. Выводы порта могут быть входами, с использованием которых процессор получает информацию извне от разных датчиков, или быть выходами, подавая сигналы на которые можно управлять внешними устройствами. В современных микроконтроллерах выводы практически всех портов двунаправленные, т.е., могут быть и входами, и выходами. Универсальные порты необходимо настраивать - установить режим работы на ввод или вывод. Для этого имеется специальная ячейка в памяти - регистр управления режимами работы порта. Например, для того, чтобы сделать входом необходимый вывод (разряд) порта, в разряд регистра управления записывают 1 или 0, в зависимости от модели микроконтроллера.

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

Семейства микроконтроллеров.
Наличие всех перечисленных устройств в составе микроконтроллера необязательно. Чаще всего производитель выпускает несколько моделей изделий, имеющих в своем составе различные периферийные устройства. Микроконтроллеры с одним типом процессора (и набором исполняемых машинных кодов), но различными периферийными устройствами, относят к одному семейству. Так и говорят: микроконтроллеры семейства ATtiny.

Многофункциональность выводов микроконтроллера.
Может возникнуть вопрос: как все эти устройства «общаются» с внешним миром, если у большинства микросхем в корпусе DIP не более 40 выводов? Для решения проблемы нехватки выводов используют метод объединения функций нескольких устройств с использованием одного вывода. Например, выводы одного из портов (8 разрядов – 8 выводов) также используется и для работы аналогово-цифрового преобразователя, а выводы другого порта - как входы аналоговых компараторов, последовательного порта или для подключения других встроенных узлов. Для управления режимами работы выводов используется специальный регистр управления режимами работы порта (о нем рассказывалось ранее, при объяснении принципов работы портов). В большинстве микроконтроллеров выводы имеют несколько функций. Если обратиться к технической документации на контроллер, то при описании функции вывода будет сделано замечание об основной и об альтернативной функции данного вывода. Например: PD0/RX - нулевой разряд порта D одновременно является и входом последовательного порта, PB1/Ain0 - первый разряд порта В одновременно является входом аналогового компаратора.

Алгоритмы. Программы.
Команды для процессора даются в определенном порядке, в соответствии с ранее разработанным алгоритмом. Алгоритм - это последовательность выполнения процессором. Причем команды должна быть понятна процессору, и при этом иметь однозначное толкование, без какой-либо самостоятельности при её выполнении. Алгоритм можно записывать словесно. Например: начало программы; сделать нулевой разряд порта входом; сделать седьмой разряд порта выходом; считать значение нулевого разряда порта; если он равен логической единице, то выполнить следующие действия: загрузить в седьмой разряд порта логическую единицу; вернуться к началу программы. Так мы описали алгоритм работы схемы, состоящей из выключателя, лампочки (или другой нагрузки) и источника питания. Результат выполнения будет таков: при нажатии кнопки на вход порта поступает напряжение, процессор выполняет программу - подает на выход порта напряжение. И пока контакты буду замкнуты, на выходе порта будет напряжение.
Но такое написание весьма сложно воспринимать. Поэтому были разработаны методы графического описания алгоритма. Вот пример графической записи вышеописанного алгоритма.
Рис. Алгоритм-1. Графический метод описания алгоритма

Команды ветвления: условный и безусловный переходы.
К особым командам процессора относятся команды условного и безусловного перехода. Для того чтобы понять это, необходимо объяснить такое понятие как «указатель адреса выполняемой команды». У процессора имеется специальный регистр, в котором хранится адрес выполняемой в текущий момент команды. При подаче питания этот регистр обнуляется - в него записывается ноль. Далее процессор начинает выполнять команды, хранящиеся в памяти, начиная с нулевого адреса - ведь в регистре указателя адреса выполняемой команды указан ноль. Выполнив команду, этот указатель инкриминируется, т.е., его значение увеличивается. Процессор считывает следующую команду из памяти по адресу, указанную в указателе. Т.е, команды выполняются последовательно. Нарушить последовательность выполнения программы можно, используя команды условного и безусловного переходов. Для этого в одной из ячеек памяти хранится команда, указывающая процессору изменить значение регистра указателя адреса выполняемой команды. Команда безусловного перехода указывает процессору изменить порядок последовательно выполнения программы и начать выполнять команды, хранящиеся в памяти, начиная с ранее указанного адреса.
Команда условного перехода сложнее: при ее выполнении проверяется выполнения какого-либо условия. Например, необходимо сравнить значение двух ячеек памяти. Если значение первой ячейки больше, то продолжить выполнение программы по адресу А, иначе (т.е., значение первой ячейки меньше) - перейти по адресу С.

Прерывания и их типы. Приоритеты прерываний.
Имеется еще один способ «заставить» процессор прекратить последовательное исполнение программы и перейти к выполнению программы по определенному адресу - вызвать «прерывание». Понятие прерывание появилось вместе с первыми процессорами. Всё дело в том, что процессор управляет менее скоростными, чем он, устройствами. Например, процессор должен обрабатывать данные до появления определенного сигнала. Приведем простой пример: процессор выполняет программу подсчета количества импульсов, поступивших на один из его портов. При нажатии кнопки процессор должен прервать выполнение этой программы и выполнить другую программу: включить какое-либо устройство (т.е., подать на один из разрядов порта логическую единицу - «1»). Как решить эту задачу? Можно в самой программе постоянно опрашивать необходимый разряд порта, к которому подключена кнопка. Но при этом часть ресурсов (скорости) процессора будет практически впустую тратиться на опрос порта. Второй способ - это использование прерываний. У процессора (следовательно, и у микроконтроллера) имеется специальный вывод. Обычно его обозначают как «Int» (англ. «Interrupt» - прерывание). При подаче сигнала на вывод «Int» происходят следующие действия:
- остановка выполнения основной программы,
- в оперативной памяти сохраняется значение регистра указателя адреса выполняемой команды (место прерывания выполнения программы),
- после чего в этот же регистр загружается новый адрес (зависит от желания производителя процессора),
- в ячейке памяти с указанным адресом расположена команда безусловного перехода: «перейти по адресу хх»,
- в памяти, начиная с ячейки с адресом хх, расположена еще одна программа, назовем ее служебной программой.

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

Управляем процессором. Языки программирования. Трансляторы.
Машинные коды. Ассемблер.
Команды для процессора - последовательности единиц и нулей. Часто команды процессора называют машинными кодами, подчеркивая, что данные команды изначально рассчитаны на конкретного исполнителя - машину, но не человека. Запоминать команды из цифр (машинные коды) весьма сложно. Поэтому для упрощения работы был придуман способ замены цифровых последовательностей на более понятные человеку символьные сокращения. Например, для команды «загрузить данные» придумали понятное сокращение «ld» (англ. «load» - загрузить), для команды «сравнить» - «cp» (англ. «compare» - сравнение) и так далее. Данный метод символьной записи команд процессора называют «ассемблер». Если при работе с машинными кодами программист непосредственно вводит команды управления процессором в память устройства, то при работе с ассемблером между программой и процессором имеется своеобразный посредник, который преобразует символьные обозначения в машинные коды. Программу, являющуюся посредником, называют транслятором, т.е., переводчиком. Но тут есть маленький нюанс: ассемблером называют не только метод символьного обозначения цифровых команд (машинных кодов), но и программу-транслятор, которая помогает программисту перевести символьные обозначения команд непосредственно в машинные команды. Поэтому часто используется следующий прием: когда говорят о языке - пишут Ассемблер, когда о программе - просто ассемблер.
У Ассемблера есть огромное достоинство: программы, написанные на Ассемблере, очень быстро выполняются процессором. Дело в том, что Ассемблер - это практически машинная команда. Но у ассемблера есть и минусы: основной минус – сложность написания программ, второй - даже относительно несложные программы имеют большой обьем исходного текста, что затрудняет анализ программы.

Модульность программ. Часто повторяющиеся задачи.
Каждый программист за время своей работы накапливал определенное количество программ. Но многие программы содержат одинаковые действия. Например, во многих программах производится опрос клавиатуры и анализ нажатой кнопки. Значит, эту часть кода программы можно переносить из одной программы в другую. Из таких кусочков (модулей) постепенно сформировались библиотеки программ. Программисты стали «лепить» программу из модулей: т.е., вставляли необходимый модуль в необходимое место программы. Такой подход ускорял процесс написания программы и увеличивал надежность работы программы в целом за счет использования уже отлаженных модулей. Но с первых дней возникла проблема совместного использования модулей: ведь каждый программист писал модули по собственному «стандарту» - как ему было удобнее в тот или иной момент. Поэтому постепенно выработался стандарт (точнее, несколько стартов) написания этих модулей. В них была описана структура модулей для их более удобного «склеивания» в одну программу.

Языки программирования и их функциональное разделение.
Постепенно эти разрозненные стандарты использования модулей сформировали то, что позднее будет названо «языками программирования». Как и человеческие языки, язык программирования имеет несколько подуровней, которые определяют как написание отдельных слов (модулей) и методы их записи, так и правила их использования. Со временем языки программирования преобразовывались и видоизменялись. Постепенно все языки программирования разделились на несколько групп, в зависимости от «профессиональной ориентации»:
- прикладные языки программирования (FORTRAN для математиков, FoxPro для финансовых работников);
- универсальные (Pascal и Basic);
- системные (Ассемблер и Си).

Системные слова языки стали называть низкоуровневыми, т.е., программист работает на нижнем, наиболее приближенном к процессору, уровне. А языки, при работе с которыми программист не сталкивается с непосредственным управлением работой процессора, стали называть Языками Высокого Уровня (часто обозначают как ЯВУ). Не путайте это сокращение с названием языка «Ява» - «Java».

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

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

Интегрированная среда разработки программ.
В последнее время появился новый подход: «Интегрированная Среда Разработки» (англ. «IDE»). Под интеграцией понимается выполнение в одной программе всего процесса создания программы: написав текст программы, программист щелчком мыши запускает трансляцию текста программы в машинные коды, после чего полученный исполняемый файл автоматически загружается в память процессорного устройства. Т.е., все делается в одной программе. Такой подход ускоряет работу программиста.

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

2. Выбор МК : если все микроконтроллеры хороши, то на основе какого изделия и какого производителя строить процесс дальнейшего обучения и практического применения микроконтроллеров?
Для того чтобы выбрать микроконтроллер для ОБУЧЕНИЯ нам необходимо выполнить следующие условия:
А) выбранный для обучения микроконтроллер должен быть доступным и недорогим.
Б) он должен быть современным изделием, но не самым новым.

Теперь подробнее о каждом пункте.
С пунктом А всё понятно: какой смысл изучать изделие, которое трудно приобрести или его цена заоблачная для новичка.
Пункт Б требует пояснения. Дело в том, что новые изделия всегда имеют какие-либо недоработки. Они обнаруживаются только через какие-то время, пока кто-то случайно не наткнётся на данную проблему в ходе работы с данным изделием. Но новинки не сразу попадают в новые конструкции: требуется время на написание программ для новых моделей. Тут присутствует человеческий фактор: у разработчиков уже имеются готовые решения на предыдущих моделях микроконтроллеров, и переходить на новые - сложно.
Также все новые микроконтроллеры имеют только фирменное описание. А оно написано на английском языке и с использованием многочисленных профессиональных терминов: ведь на профессионалов и рассчитано! А мы - ученики… Через какие-то время появляются примеры конструкций, более подробные описания с многочисленными комментариями и советами. Потом кто-то начнет переводить документацию на русский язык (не всё, но хотя бы самое сложное или наиболее часто используемое).
К новому микроконтроллеру может не быть и инструментария: компиляторы, отладчики и программаторы «не понимают» это изделие. Опять ожидание, пока авторы этих программ не обновят свои творения...

3. Необходимо выбрать язык программирования , на котором мы планируем писать программы для МК.
Выбор языка программирования - весьма щепетильное занятие. Для обучения программированию микроконтроллеров хотелось бы использовать язык программирования с простым синтаксисом: программист должен заниматься программой, но не ее оформлением!
Тут надо заранее сделать пояснение: в настоящее время среди разработчиков программ и устройств на микроконтроллерах популярны три «семейства» языков: Си (Пишут как «С»), Паскаль (Pascal) и Бейсик (BASIC). Паскаль изначально разрабатывался как инструмент изучения программированию. Бейсик самой структурой похож на Паскаль, но запись команд упрощена и требований к оформлению программы значительно меньше. Си – принято считать языком для профессионалов. Си – это как китайская философия: важен не только символ (команда), но и его начертание и цвет. Шутки шутками, но моё мнение таково: Си – это кошмар. Его использование оправдывается лишь в некоторых, весьма узко профильных, задачах. Но наша задача – попробовать свои силы, и минимально их тратить на задачи, не имеющих прямой связи с основной целью.

4. Нам необходима среда разработки программ для микроконтроллеров . Её выбор напрямую зависит от типа используемого МК и языка программирования.
Среда разработки программ очень важна для успешного освоения программирования микроконтроллеров. Писать программы в текстовом редакторе вроде «Блокнота» можно, но неудобно (проверено!). Да и в командной строке вызывать компилятор - дело неблагодарное в наш, графическо-оконный, век.
Выбор среды разработки напрямую зависит от микроконтроллера, на котором мы будет строить практическую часть обучения. Ко всему прочему нам надо иметь бесплатный инструментарий. Но, как показало тестирование таких программ, бесплатное ПО чаще всего имеет посредственное качество как с точки зрения и пользования, так и с точки зрения изучения программирования МК: наличие ошибок или недоработок в самих трансляторах создают дополнительные сложности и лишают уверенности в собственных силах.
Сойдет и демонстрационная версия, которая имела бы минимум ограничений и работала хотя бы пол года - именно такой срок необходим для получения навыков работы с микроконтроллерами в домашних условиях.

5. Программатор, с использованием которого будем загружать написанные программы в память МК . Выбор программатора также зависит от типа используемого МК. Есть, конечно, «универсальные» программаторы, позволяющие работать с разными микроконтроллерами и микросхемами памяти, но они дорогие. Да и не нужны в большинстве случаев. Поэтому проще изготовить что-то узкоспециализированное для данного семейства МК.
Но дело не столько в сложности схем программатора, а в методе подключения этого программатора к ПК. Тут необходимо пояснить: программатор - это электронный адаптер, преобразующий сигналы компьютерных интерфейсов (порты СОМ, LPT и USB) в сигналы, подаваемые на выводы МК для загрузки программы в его память. Электронным адаптером управляет программа ПК, которая и «заставляет» адаптер выдавать необходимые последовательности сигналов на выводы МК.
Если адаптер программатора, подключаемый к ПК через порты COM и LPT, возможно изготовить в домашних условиях - «на коленке», то изготовления такого адаптера, но подключаемого к USB порту, уже несколько проблематично: сердцем такого адаптера часто является… микроконтроллер. Тут возникает парадокс: для того чтобы запрограммировать МК нам необходимо запрограммировать МК.
Напрашивается логичный вопрос: а для чего изготавливать сложный адаптер, подключаемый к USB, когда можно сделать простой и подключить его к LPT или COM порту. Все дело в том, что многие (практически все) современные ПК не имеют в своем составе этих портов. Поэтому придется изготавливать более сложный адаптер для программирования МК.

Март 2010

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

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

Ответ на вопрос номер 2
Микроконтроллер производства компании ATMEL ATMEGA48. Хорошо описан, выпускается уже несколько лет, не планируется к снятию с производства еще как минимум 3 года, имеет оптимальные технические параметры.

Ответы на вопросы 3 и 4
Среда программирования - BASCOM (производитель MCS Electronics, автор Марк Альбертс). Язык программирования по стилю и требованиям к оформлению текста программы схож с Паскалем, но синтаксис команд взят из BASIC.
Причины выбора:
- полнофункциональная демонстрационная версия компилятора (единственное ограничение: генерируемый компилятором код ограничен объемом 4 КБайт)
- желание автора программы сотрудничать (я сделал перевод сообщений интерфейса и справочной системы на русский язык, он добавил русский язык в эту программу)
- наличие русскоязычного форума пользователей данного компилятора

Ответ на вопрос номер 5
Совместить простоту схемы и USB не получилось. Было решено описать две модели программаторов: одна подключается к LPT порту компьютера, вторая к COM порту. При отсутствии этих портов вторая версия программатора может быть подключена к компьютеру с использованием преобразователя USB-COM. Так получаем связку USB-COM-программатор-микроконтроллер.
Первая модель программатора известна как STK-200/300, содержит микросхему буфера с третьим состоянием и несколько резисторов. Вторая модель - известный программатор USBasp.

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

Первым и, наверное, последним отечественным автомобилем с впрысковым двигателем и обычным ключом зажигания был Святогор с двигателем от Рено F3R. Там было всё как на карбюраторной машине. Замок зажигания выдавал питание на «мозги» двигателя, а те обеспечивали работу свечей зажигания и подачу топлива.

Вазовские автомобили с появлением системы впрыска топлива сразу обрели блок АПС (автомобильная противоугонная система), который общался с чипом в ключе зажигания и только после опознания своего ключа давал ЭБУ (электронному блоку управления) разрешение на пуск двигателя. Сейчас блок сильно уменьшился в размерах и располагается под кожухом рулевой колонки. Корпус замка зажигания автомобиля окружен рамкой, которая связана напрямую с блоком иммобилайзера. При включении зажигания блок подает импульсы в эту рамку и переходит в режим считывания, то есть начинает принимать отклик от чип-ключа. От импульса чип-ключ получает энергию и начинает передавать вшитый в него на рамку иммобилайзера. Рамка иммобилайзера принимает код и, если код совпадает, дает возможность запустить двигатель. После этого все идет своим чередом, и упомянутый пусковой контур больше не нужен.

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

Ключи с чипами бывают четырех основных типов.

  • Ключ с чипом, позволяющим только запустить двигатель поворотом лезвия в обычном замке зажигания. Чип представляет собой небольшой цилиндрик или пластмассовый параллелепипед, содержащий индуктивную катушку, и микросхему, в которой запрограммирован индивидуальный код данного ключа. Чип в таком исполнении герметичен, что позволяет не только пользоваться им под дождем, но даже идти с ним купаться.
  • Ключ с чипом и радиопередатчиком, позволяющим открывать и закрывать автомобиль кнопками на брелоке на расстоянии не более 30–50 м, пускающий двигатель с помощью механического замыкания контактов в замке зажигания. У некоторых автомобилей такими кнопками на ключе активируется штатная сигнализация автомобиля, включающая сирену, а также датчики наклона и движения. Но герметичность таких ключей ограничивается брызгозащитным исполнением: погружать в жидкость их нельзя.
  • Ключ, у которого в нормальном режиме не используется механическое лезвие. Открывают и закрывают автомобиль кнопками на ключе. Для пуска автомобиля ключ вставляют в специальный слот на панели приборов, после чего нажимают кнопку . Исполнение ключа - брызгозащитное.
  • Ключ для так называемого бесключевого доступа. Двери автомобиля открываются нажатием небольшой кнопочки на ручке, а пуск двигателя осуществляется кнопкой «старт-стоп». При этом ключ должен находиться в кармане владельца. Слот в салоне автомобиля предусмотрен, но ключ может оставаться в кармане на протяжении всей поездки. При этом в распоряжении хозяина остаются все кнопки управления на ключе. При желании можно открывать и закрывать автомобиль, нажав соответствующую кнопку на ключе.

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

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

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

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

[ Скрыть ]

В каких случаях требуется перепрограммирование ключа

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

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

К кому обратиться, чтобы прописать чип-ключ иммобилайзера

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

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

Как прописать новый ключ самостоятельно

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

Алгоритм действий

Прописываем ключ в следующем порядке:

  1. Для начала необходимо закрыть все двери автомобиля, затем включить зажигание чип-ключом и сделать выдержку не менее 10 секунд.
  2. Отключить зажигание. Если на приборной доске мигают значки с периодичностью 5 секунд, то программирование проходит правильно.
  3. При выключенном зажигании в течение 5 секунд вытащить чип и поставить новый ключ для дальнейшего программирования. В этот момент зуммер сигнала должен прозвучать три раза.
  4. Подождать 6 секунд пока зуммер не подаст еще 2 сигнала, после которых необходимо выключить замок зажигания и вытянуть новый ключ.
  5. Вставить чип-ключ и дождаться сначала три сигнала, а через 6 секунд еще два.
  6. Вынуть чип ключ и подождать 10 секунд, после чего вставить новый ключ и произвести запуск двигателя.
  7. Сделать пробный выезд автомобиля.

На видео показано перепрограммирование ключа иммобилайзера автомобиля отечественного производства, снято каналом Дверной Доктор.

Особенности программирования и привязки ключа к иммобилайзеру

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

Для программирования нужно выполнить действия:

  1. Закрыть все двери в авто.
  2. Нажать и удерживать большую кнопку до момента, пока диод не перестанет моргать. Если отпустить клавишу, индикатор должен равномерно гореть.
  3. Снова нажать кнопку. Диод должен погаснуть.
  4. Водитель должен открыть двери и поместить ключ в замок зажигания.
  5. Нажать кнопку на брелке в соответсвии с инструкцией к конкретной марки системы.
  6. Активировать зажигание, подождать не менее 10 секунд и отключить его.
  7. Через 5 секунд брелок должен прийти в рабочее состояние и сохранить в память все положения.

Обычное дело первый картридж (заводской) пропечатал 1000 копий и появилось сообщение «Нет тонера». После заправки картриджа, новой порцией, тонера, это сообщение по прежнему не исчезало, принтер при этом отлично печатал и настойчиво выводит сообщение «Нет тонера», плюс в моей модели из-за этого не работает факс (для информации, в сервисном меню опция NEW CARTRIDGE не изменила ничего). Значит нужно перепрошить чип картриджа принтера.

Впрочем эта методика, подходит многим принтерам Xerox и Samsung, я имел возможность опробовать это в действии на МФУ XEROX PE220

Для программирование необходима программа PonyProg2000 и адаптер:

Сопротивление не критично 1кОм-10кОм

Мой чип XEROX PE220 выглядит так:

Программирование:

1. Подключить плату чипа к программатору (разъему РС9)

2. Вставить программатор в СОМ1(СОМ2) выключенного компьютера

3. Включить компьютер, запустить PonyProg2000

4. Настроить PonyProg2000:

Меню "Установки - Настройка оборудования..."

5. Обязательно выполните проверку и калибровку - должно быть "Тест Ок!"

6. Установите тип микросхемы:

теперь посмотрим по чипу (побайтно):

00-06 и 58-5E - идентификатор производителя, лучше не трогать.

20 - к-во тыщ, на которые рассчитан картридж (похоже что увеличение этого значения максимально до 8К, но МФУ-шка может перестать копировать при достижении счетчиком 5К). Стандартное значение 03. У стартового картриджа ресурс 1К.

35-3F - изменить любой байт (значения 30-39)

40-47 - всегда Installed(устанавливается сам).

78 - индикация - 00 - нет сообщений, 01 - мало тонера, 02 - нет тонера.

Если совсем коротко - при прошивке нужно изменить серийный и забить нулями ячейки 40-57, 60-63, 80-83, 78.

Вот примерно так...

В архиве две прошивки 01, это слита с нового чипа картриджа.

02s, это рабочая с принтера, прошедшая весь процесс описаный в статье

8. Записываем прошивку в чип. Закрываем программу, выключаем комп. Извлекаем (отпаиваем) плату чипа из (от) программатора (разъема) и устанавливаем ее в заправленный картридж.

Вот и все! Сделав это один раз, понимаешь, все это очень просто.

Проверено в эксплуатации.

Теперь важные замечания:

1) это не мои разработки, я только обобщил материал. Все вышеизложенное является ИМХО и личным опытом.

2) - вы действуете на свой страх и риск.

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

Еще для справки - Вход в сервисный режим:

Через сервисное меню: для входа в сервисное меню 4216/PE16 набираем на клавиатуре: - [#] - - , После входа в сервисное меню появится надпись TECH; с помощью клавиш [Стрелка влево] - [Стрелка вправо] находим запись "New cartridge", выбираем "Yes". После того как Вы проделаете нужные операции (МЕНЮ-># 1934) и Вы в основном меню выключаем и включаем МФУ. Только нажимать надо быстро.

Для выхода из сервисного режима можно дважды нажать кнопку [Сброс] или просто выключить и включить аппарат.

4)предупреждение для неискушенных пользователей: НИКОГДА не используйте никаких других диагностических кодов и процедур, потому что это может привести к непредсказуемым последствиям.

Вы не можете скачивать файлы с нашего сервера файлы eproom картриджа

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

Суть работы запрограммированного ключа зажигания

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

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

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

  • синхронизация ключа и иммобилайзера - полностью автоматизированный процесс, то есть ввод кода происходит сам собой и не требует участия водителя;
  • данная противоугонная система состоит из: приёмщика и ответчика сигналов, который встроен в сам ключ, специальной антенны, светодиода-сигнализатора и непосредственно иммобилайзера;
  • система имеет автономный принцип работы, то есть даже при отключении клемм АКБ она долгое время может защищать ваш автомобиль от злоумышленников.

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

Необходимость программирования

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

Основными причинами выхода из строя иммобилайзера являются:

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

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

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

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

Процесс программирования

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

Для полноты картины ниже рассмотрим процесс программирования ключа, который был поломан или потерян:

  1. В первую очередь проводятся мероприятия по выбору лезвия и выточке нового ключа, строго с соблюдением всех ремонтных норм.
  2. Следующим шагом проводится программирование чипа для так называемого чёрного ключа (далее — ЧК). Для осуществления данной процедуры владельцу автомобиля необходимо предоставить специальный «красный ключ» (далее — КК), который в обязательном порядке прилагается к любому автомобилю, оснащённому иммобилайзером. Данный ключ необходим для проведения всех ремонтных мероприятий по чип-тюнингу этого узла машины. КК предназначен только для разовых использований, для «повседневки» используется именно запрограммированный ЧК (дополнительный для иммобилайзера, но основной для владельца), который запомнен в системе (подробнее ниже).
  3. Ремонтные мероприятия по программированию ключа заканчиваются на прописке чипа для кнопок приборов, связанных с системой.

Внимание! В целях безопасности разрешается программирование и последующее наличие двух или трёх ключей (включая КК) для конкретного иммобилайзера и, соответственно, автомобиля.

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

Процесс запоминания ключей иммобилайзером

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


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

После тог, как, по вашему мнению, иммобилайзер запомнил 1 или 2 ЧК, можно провести проверку. Для этого необходимо опять вставить в замок зажигания КК и внимательно последить за индикатором, который должен на 1—3 секунды загореться, а потом мигнут столько раз, сколько ключей иммобилайзер запомнил ранее. Если мигания отсутствуют - мероприятие необходимо провести заново.

Стоит понимать, что стереть запомненный ключ из памяти невозможно. Стирание из памяти кодов, запомненных ЧК проводится только при запоминании новых экземпляров.

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