1.5 Характеристика микросхемы 24c04, используемой в чипе картриджа
Микросхемы 24Cxx или Xerox90/01 представляют собой память EEPROM (electricaly erasable programable read only memory - электрически стираемая программируемая читаемая только память) которая использует I2C-протокол (или IIC bus - Inter Integrated Circuits bus).
Мы не будем останавливаться на общих правилах самого протокола, рассмотрим только его некоторые тонкости и особенности, не отраженные в описаниях производителей.
Вся изложенная ниже информация была получена тестированием чипов серии 24xx производителей Microchip, Atmel, Xicor, STMicroelectronics, а также чипов 8-DIP, на корпусе которых написано Xerox90 (...) или Xerox01(...) /записи во второй и третьей строках чипов Xerox по мнению автора не имеют отношения к их свойствам/. Максимально точное описание своей продукции дает Atmel, и больше всего несоответствий datasheet и чипа обнаружено у Microchip.
Зачастую несоответствием параметров чипов с их описанием можно пренебречь (таковы наиболее общие условия использования микросхем).
Чипы выполнены в 8-DIP, SOIC, TSSOP корпусах. Расположение и назначение выводов обозначено на рисунке 3.
Рисунок 3 – Расположение и назначение выводов микросхемы
Вывод 4 - GND (общий, земля). Вывод 8 - Vcc (положительное по отношению к GND напряжение питания чипа). Минимальное значение Vcc, при котором некоторые микросхемы начинали работать +1.3V. Все микросхемы заработали от +2.7V. Типичное напряжение питания при использовании в аппаратуре (магнитофоны, мониторы, принтеры, копировально-множительная техника и т.д.) +5V (-10%,+5%). Кратковременно (до 10 секунд) выдерживают переполюсовку напряжения питания и превышение его до +17V. При этом сильно греются (около 15-20W тепловой энергии). Горят от перегрева. Полевой ключ на выводе SDA слабо-чувствителен к электростатике. Остальные выводы на бытовые статические разряды не реагируют.
В целом, внешними электрофизическими факторами привести в негодность такие микросхемы трудно. Что касается программных факторов, то чипы 24Cxx устойчивы и надежны в работе, а микросхемы Xerox90 и Xerox01 при неумелом обращении очень легко выходят из строя.
Выводы 1, 2, 3 – адресные выводы A0, A1, A2. Для большинства микросхем они определяют адрес чипа на шине I2C. Для 24C01, 24C02, Xerox90, Xerox01 значащими являются все три вывода (до 8 корпусов на шине). Для 24C04 имеют значение только A1, A2 (выводы 2 и 3, до 4 корпусов); для 24C08 - только A2 (вывод 3, может быть две микросхемы на шине); в 24C16 эти выводы не используются. Кроме того, в линейке 24Cxx есть микросхемы, которые не поддерживают такую адресацию, хотя по описанию производителя должны это делать.
Поведение таких чипов объясню на примере 24С04 - чип в 512 байт. Независимо от потенциала на выводах 1,2,3 отвечает на обращение к I2C-EEPROM и при чтении ведет себя так, будто это чип 24С16, четыре области по 512 байт которого содержат одинаковую информацию. При записи по некоторому адресу в этом псевдо-24С16 число данных помещается во все четыре адреса, смежные через 512 байт. То есть, реальной памяти есть 512 байт, а добавить еще три чипа на шину с другими адресами нельзя. Хотя, к примеру, Microchip регламентирует, что выводы 1, 2, 3 чипа 24LC04B не подключены.
Вывод 7 - сигнал WP (защита от записи). Процедура чтения данных из произвольного чипа работает одинаково и независима от логического уровня на этом выводе. Что касается процедуры записи в микросхему, то при низком логическом уровне на выводе WP доступна для записи вся область чипа. Чип всегда выдает сигнал подтверждения (acknowledge), данные записываются по сигналу STOP протокола I2C.
Запись является внутренне-синхронизованной. Во время цикла записи чип не отвечает на обращение к нему. Наименьшая длительность записи 1.6мс у чипов Atmel, наибольшая - 4.3мс у Xicor. Запись одного байта в побайтном режиме и N байт в режиме PageMode (страничная запись) происходит за одинаковый промежуток времени. Если количество байт N превосходит длину страницы, то сохраняются последние K байт, где K - длина страницы. В процессе тестов было получено, что K=1 для 24C01; K=4 или K=8 или K=16 для 24C02;K=8 или K=16 для 24C04; K=16 для 24C08 и 24C16 . Величины длины страницы для чипов 24C02 и 24C04 невозможно определить по внешним признакам (есть две микросхемы 24C02 одного производителя с длиной страницы 4 и 8 байт). Информация о страничной записи в чипы Xerox90 и Xerox01 есть в их описании.
При высоком логическом уровне WP микросхемы 24C01, 24C02 защищены от записи. Для чипов 24C04 возможны два варианта: защищен весь чип, или защищена только верхняя половина памяти. Для 24C08 и 24C16 возможным есть защита всей области памяти, либо верхней ее половины, либо им вообще безразлично, что есть на выводе WP.
Кроме того, все микросхемы имеют различную реакцию на попытку записи в защищенную выводом 7 область. Одни микросхемы не подтверждают обращение на запись (не выдают сигнал acknowledge), тем самым показывая невозможность записи. Другие микросхемы дают подтверждение, но запись не происходит. При этом часть этих чипов готова к обмену сразу после сигнала STOP в конце «записи», а часть микросхем будет недоступна на время, равное времени, требуемому для записи (хотя при этом данные в чипе не изменятся).
Вывод 6 - SCL (serial clock) - тактовый сигнал, синхронизирующий обмен по шине I2C. Не могу сказать, есть ли какое-то ограничение на минимальную частоту обмена по шине. Во всяком случае автор проверил работу чипа на частоте 0.1Hz и получил положительные результаты, правда чтение одного байта при этом занимает около шести минут. Относительно максимальной частоты, то микросхемы памяти с I2C-протоколом можно поделить на две категории: с частотой обмена 100kHz – Standard Mode (реально работают до 180-200kHz, возможная форма импульса - меандр) и с частотой обмена 400kHz -Fast Mode (реально работают на частоте не менее 480 kHz, не исключено, что может быть и выше. Есть аппаратные сложности для проверки более высоких частот. Начиная от 300 kHz требуют иной скважности импульса. На 400 kHz соотношение периода импульсов clock к их длительности должно равняться трем).
Вывод 5 - SDA (serial clock)- последовательные данные. Это двунаправленный вывод, по которому чип принимает команды и данные для записи, и выдает информацию при чтении.
Есть два способа внутренней организации буфера этого вывода. Их можно увидеть на рисунке 4
Рисунок 4 – Способы внутренней организации буфера вывода SDA
В первом случае линия выходных данных через открытый сток полевого транзистора включена параллельно входной линии. Чип корректно реагирует на сигнал START I2C-протокола, сбрасывая внутренний контроллер в независимости от команд и процедур, выполняемых им в текущий момент.
Во втором случае вывод SDA использует двунаправленный буфер, управляемый внутренним контроллером чипа. Микросхема не «видит» сигнала START в процессе выдачи битов данных на линию (когда буфер включен в режим Out). Если неизвестно состояние такого чипа в данный момент, то необходимо послать в него девять тактовых импульсов с высоким (если сам чип позволит) логическим уровнем на линии SDA, потом сигнал START. После этого состояние чипа будет определено.
В первом случае нет необходимости делать это.
В 1989 году по заказу компании Fuji-Xerox, изготовили микросхему памяти в 256 байт. Чип был назван Xerox90 и в основе работы использовал классический I2C-протокол. Он обладает некоторыми оригинальными свойствами как в способе обращения к нему, так и в структуре памяти. При неверном обращении его легко можно заблокировать (или как стало популярным говорить «убить»). Заблокированный (или убитый, мертвый) чип по сути есть чип, все байты памяти которого при классическом I2C чтении имеют неизменяемое нулевое значение. В связи с высокой трудоемкостью восстановления или разблокирования такого чипа его дальнейшее использование нецелесообразно. В 1994 году чип был доработан, но название Xerox90 сохранилось. Изменения от первоначального варианта в большей степени коснулись структуры памяти и способа ее полного перепрограммирования. Последняя известная его доработка произошла в 2000 году. Микросхема незначительно изменила структуру работы по классическому протоколу и способу перепрограммирования. Она получила новое название Xerox01. Вероятно, существовали или есть и другие производители таких чипов, так как численность таких микросхем с несущественными отклонениями от основной идеи защиты памяти достигает трех десятков. Однако все эти микросхемы очень легко привести в «мертвое» состояние. И все они имеют сходную структуру полного перепрограммирования.
Демонстрационная версия программы, представленная на сайте, позволяет Вам прочитать чип Xerox и получить такую же информацию, какую Вы получили бы используя любой другой программатор I2C и убили бы чип. Демо-версия не убивает чип Xerox при установке опции «Устройства» программы в позицию «Xerox» и предупреждает о возможных последствиях при иных установках.
Что касается чипов от HP Business InkJet, они имеют сходный с I2C протокол. Отличия в структуре команд чтения. Оно вместе с адресацией данных в чипе проходит в одну последовательность от Start до Stop. Все чипы одного аппарата (а их там 8 штук) имеют различный адрес устройства, зависящий от установки чипа. В виду отсутствия видимого интереса пользователей к этому чипу, его поддержка не включена ни в демонстрационную версию, ни в полный вариант программы для I2C. Однако если будет такая необходимость, то соответствующие доработки будут произведены.
По типу микросхем программаторы различают:
· Программирующие микросхемы ПЗУ (ПЗУ с ультрафиолетовым стиранием, ППЗУ, флэш-память).
· Программирующие внутреннюю память микроконтроллеров.
· Программирующие ПЛИС (Программируемые логические интегральные схемы).
Универсальные программаторы могут поддерживать все вышеперечисленные типы.
По сложности:
· Если нужно единожды запрограммировать микроконтроллерное устройство, радиолюбители обходятся простейшим программатором, подключаемым к COM- или LPT-порту. Например, самый простой программатор для микросхем AVR – это кабель из шести проводов и четырёх резисторов (так называемый программатор PonyProg).
· Те любители, которые занимаются разработкой прошивок или производят свои схемы в больших количествах, используют программаторы посложнее – такие устройства часто содержат свой микроконтроллер. Подобные программаторы удобны тем, что после работы переводят свои выходы в Z-состояние, и запрограммированное устройство можно испытывать, не отключая программатора. Такие программаторы, как правило, работают с одним-двумя семействами микросхем.
· Самодеятельным конструкторам программаторов известна «проблема курицы и яйца» – если программатор содержит запрограммированный микроконтроллер, то как его запрограммировать? Обычно или отдают микросхему профессионалам, или строят простейший программатор и идут к другу, у которого на компьютере есть соответствующий порт (всё больше современных компьютеров вообще не имеют COM- и LPT-портов).
· В конструкторских бюро и лабораториях применяются универсальные программаторы. Поскольку в таких устройствах каждый из выводов разъёма (а этих выводов может быть до сотни) может подавать на микросхему напряжения от 0 до 27 В с точностью в 0,1 вольт и частотами до 40 МГц, универсальные программаторы бывают очень дороги – до нескольких тысяч долларов. Зато при появлении новой микросхемы достаточно добавить её поддержку на программном уровне.
По подключению микросхемы:
· Параллельный.
· Внутрисхемный.
Параллельные программаторы содержат разъём, в который и вставляется программируемая микросхема. Внутрисхемные пригодны только для тех микросхем, в которых поддерживается внутрисхемное программирование, но позволяют прошивать микросхему, не вынимая её из устройства.
При покупке параллельного программатора стоит обратить внимание на качество разъёма, в который устанавливается микросхема. Обычный одноразовый разъём долго не прослужит; программатор должен иметь цанговые разъёмы – а ещё лучше ZIF. В дорогих программаторах есть несколько разъёмов – под разные виды корпусов.
Первые программаторы были автономными – для набора прошивки имелась клавиатура или коммутационная панель. С распространением ПК такие программаторы были полностью вытеснены подключаемыми к компьютеру – специальная программа (которая также называется программатором) передаёт прошивку с компьютера, а программатору остаётся только записать её в память микросхемы.
Для подключения программаторов могут применяться:
– Последовательный порт.
– Параллельный порт.
– Специализированная интерфейсная плата (ISA или PCI).
– USB.
Стоит заметить, что в самых простых параллельных и последовательных программаторах управляющему ПО приходится напрямую управлять логическим уровнем на выводах порта. Такое прямое управление в Windows NT запрещено, это обходится установкой специализированного драйвера; через адаптеры USB>COM bitbang-программаторы работают крайне медленно (единицы-десятки байт в секунду). Микроконтроллерные программаторы полностью поддерживают протокол COM- или LPT-порта и поэтому свободны от этих недостатков.
Специализированные платы изредка применялись до появления USB, так как позволяли достичь максимальных скоростей обмена данными. Впрочем, одновременно они делали программатор стационарным.
Современные программаторы подключаются через USB (лишь простые дешёвые конструкции используют COM- или LPT-порты).
По дополнительным функциям:
– Наличие программного обеспечения под распространённые платформы (обычно под Windows и Linux; остальные ОС среди разработчиков непопулярны).
– Проверка правильности подключения ещё до попытки стереть микросхему.
– Проверка исправности программатора.
– JTAG-адаптеры, пригодные одновременно как для программирования, так и для отлаживания прошивок.
– Полевые программаторы имеют компактные размеры и содержат внутреннюю память для хранения прошивки.[1] Такие программаторы предназначены для обслуживания техники прямо в местах её установки (подчас труднодоступных).
– Встроенный HEX-редактор, позволяющий откорректировать записанную в микросхеме информацию.
– Возможность самостоятельного обновления прошивки самого программатора.
– Возможность одним нажатием кнопки выполнить некоторую последовательность действий – например, стереть, проконтролировать стёртость, записать, проверить правильность записи и установить конфигурационные биты (так называемое автоматическое программирование).
В программаторах для массового программирования может применяться скриптовый язык, на котором можно реализовать, например, автоинкремент серийных номеров – таким образом, каждая микросхема будет иметь уникальный номер.
2.2 Выбор программатораПрочитав название статьи каких-нибудь 10-15 лет назад, мы бы очень удивились: нам бы ваши проблемы. Работая на «ящиках», мы и понятия не имели, что в этом вопросе бывает какая-то неопределенность. Перечень разрешенных к применению микросхем был настолько «широк», что приходилось выбирать практически из одной позиции, да и вопрос с программаторами обстоял элементарно просто: тебе нужен программатор – сделай его сам. Каждая лаборатория с гордостью делала свой, самый лучший и надежный программатор. Каких устройств там только не было: начиная от простых, но очень надежных изделий на тумблерах, до очень сложных, занимавших половину рабочего стола и иногда работавших мощных программаторов. Их разработчики с любовью программировали каждый бит тех сложных устройств (благо устройства эти не были обременены большим количеством информации). Обычно пользоваться таким программатором мог только человек, давший ему жизнь, а весь процесс программирования со стороны воспринимался, как шаманский танец с бубном. Теперь мы, к великому сожалению, лишены всей прелести тех лет.
С падением железного занавеса выяснилось, что перечень программируемых интегральных схем в мире просто гигантский – это микросхемы памяти как с параллельным, так и с последовательным доступом информации (EPROM, EEPROM, FLASH); микроконтроллеры с внутренней памятью команд и данных; микросхемы программируемой логики (PLD). Причем, перечень таких изделий с каждым годом стремительно растет, имея тенденцию к усложнению изделий и к увеличению их гибкости. С другой стороны, как ответ на потребность использования этих микросхем, рынок наполняется большим количеством программаторов. Как не ошибиться и сделать правильный выбор при приобретении программатора? В этой статье мы попытаемся дать представление об устройстве программаторов и ответить на этот вопрос.
Рассмотрим классификацию программаторов по функциональным возможностям. Условно их можно подразделить на такие группы:
– программаторы, программирующие микросхемы памяти (EPROM, EEPROM, FLASH);
– программаторы, программирующие микросхемы памяти (EPROM, EEPROM, FLASH) и внутреннюю память микроконтроллеров;
– программаторы, программирующие микросхемы памяти (EPROM, EEPROM, FLASH), внутреннюю память микроконтроллеров, микросхемы программируемой логики (PLD);
– универсальные программаторы-тестеры.
Данную классификацию можно считать достаточно условной, жестких границ между программаторами разных групп не существует. Программаторы первой и второй групп наиболее простые и дешевые устройства. Программаторы третьей группы, обычно, аппаратно значительно более сложны и стоимость их, соответственно, более высокая. Это объясняется, в частности, особенностью работы с устройствами программируемой логики. Микросхемы программируемой логики вообще стоят несколько обособленно в ряду программируемых устройств. Если информацию по программированию микросхем памяти и внутренней памяти микроконтроллеров фирмы-производители микросхем, как правило, не скрывают и публикуют в своих каталогах, то информацию по программированию микросхем PLD можно получить только после заключения соответствующего соглашения с фирмой-производителем микросхем. Причем, некоторые производители PLD не стремятся увеличить число фирм-производителей программаторов, поддерживающих их устройства, главное для них – качество программирования и строгое следование предписанным процедурам программирования. Так, например, чтобы заключить соответствующие соглашения с фирмами AMD и Lattice московской фирме «Фитон» пришлось сдавать квалификационный экзамен.
Последняя функциональная группа программаторов – универсальные программаторы – наиболее сложные и дорогие устройства, но способные работать с очень большим перечнем микросхем. Стоимость таких устройств может достигать тысяч и десятков тысяч долларов.
2.3 Аппаратное устройство программаторовВ первую очередь коснемся той детали программатора, с которой приходится взаимодействовать больше всего – это колодка, куда помещается программируемая микросхема. Эта одна из самых важных деталей программатора, от качества и надежности которой зависит способность программатора выполнять свои функции. Любой программатор вне зависимости от его сложности, стоимости и функциональных возможностей обязательно должен быть снабжен специальной тестовой колодкой, обеспечивающей многократный надежный контакт с программируемой микросхемой. Фирмы, выпускающие такие сокеты, гарантируют надежный контакт при десятках тысячей операций установки в нее микросхем. Наиболее удобными для пользователя являются специальные сокеты с нулевым усилием (ZIF socket). Если программатор не снабжен специальными тестовыми сокетами, предназначенными для многократных установок микросхем, а вместо них стоят дешевые одноразовые колодки, то считайте, что Вы просто зря потратили свои деньги. Вы быстро сможете в этом убедиться, когда безвозвратно испортите микросхемы с однократным программированием из-за отсутствия контакта в колодке. В недорогих программаторах обычно устанавливаются универсальные (рассчитанные как на узкий, так и на широкий тип корпуса) ZIF DIP сокетки. В более дорогих образцах программаторов могут устанавливаться одновременно несколько видов ZIF сокеток, рассчитанных на разные типы корпусов микросхем (LCC, QFP и т. д.). Иногда программаторы снабжаются универсальными сменными головками под различные типы корпусов. Для программирования микросхем с корпусами, отличными от DIP и с большим числом выводов, программаторы снабжаются специальными адаптерами под соответствующий тип корпуса. В связи с тем, что на этих адаптерах также должны устанавливаться высоконадежные тестовые сокетки, стоимость таких адаптеров может оказаться довольно существенной.
Заглянем внутрь программаторов и в общих чертах попытаемся понять, чем же они отличаются друг от друга. Принципиально существует две концепции построения программаторов. Первая, и наиболее очевидная, заключается в построении программаторов на базе массива универсальных аппаратных драйверов. Универсальные драйверы подводятся к выводам тестовой сокетки и должны удовлетворять ряду специфических аппаратных требований по программированию микросхем. В перечень таких требований входят: способность подавать и считывать логические уровни, способность подавать сложные тактовые последовательности, способность подводить напряжение в диапазоне 0…27 В с точностью 0.1 В. Удовлетворение всем этим требованиям приводит к колоссальным аппаратным затратам и избыточности всего устройства в целом. Количество драйверов универсального программатора должно соответствовать количеству выводов тестовой сокетки, например, 40 драйверов для сокетки DIP-40, или 84 драйвера для сокетки LCC-84. В результате, устройство становится очень сложным и дорогостоящим, но при этом абсолютно универсальным. Имея 40 универсальных драйверов и универсальную тестовую сокетку DIP-40 можно с уверенностью сказать, что удастся поддержать все существующие, а также любые новые, микросхемы в корпусе DIP (с числом выводов до 40) без дополнительных адаптеров. Именно по такой схеме строятся дорогие универсальные программаторы.
Вторая концепция заключается в том, что аппаратура программатора оптимизируется под предполагаемый перечень поддерживаемых микросхем. Программаторы этого класса, как правило, значительно дешевле универсальных программаторов, но такие изделия в известной степени теряют универсальные свойства. Добавление новых типов поддерживаемых программатором микросхем может быть сопряжено со значительными трудностями, а часто и с невозможностью расширения списка программируемых устройств.
Использую многолетний опыт разработки и производства программаторов, нами разработана и внедрена компромиссная концепция построения программаторов – универсальный драйвер разбивается на два функциональных блока: универсальный логический драйвер и устройство коммутации «высокого» напряжения. Такая архитектура программатора позволила в значительной степени сохранить преимущества универсального драйвера и существенно сократить аппаратные затраты и, как следствие, уменьшить себестоимость и цену конечных изделий.
Рассмотрим способ подключения программаторов к компьютеру. Наиболее распространенными способами подключения являются:
– подключение к параллельному порту;
– подключение к последовательному порту;
– установка специальной платы в компьютер.
Каждый из этих способов имеет свои преимущества и недостатки. Использование специальных плат, устанавливаемых в компьютер, значительно упрощает схемотехнику программатора. В этом случае, как правило, удается отказаться от специального, довольно мощного источника питания, воспользовавшись источником питания компьютера, а также использовать центральный процессор компьютера в качестве управляющего процессора программатора. При способе подключения программатора к компьютеру посредством встраиваемых в компьютер плат удается достигнуть довольно значительных скоростей обмена между компьютером и программатором за счет непосредственного управления последним. Но такая реализация программатора имеет и существенные недостатки. Во-первых, значительно снижается мобильность программатора, то есть возможность использования одного программатора на разных компьютерах (например, в приделах одной лаборатории), во-вторых, использование таких устройств с портативными компьютерами notebook сопряжено с необходимостью использования специальных карт сопряжения.
Другой вариант сопряжения программатора с компьютером – последовательный канал компьютера. Это вполне допустимый вариант сопряжения, допускающий работу программатора с компьютерами всех типов. К существенным недостаткам такого варианта сопряжения можно отнести невысокую пропускную способность канала. Максимальная скорость последовательного канала RS-232 ограничена значением 115 кБод, что существенно ограничивает обмен между компьютером и программатором, и, следовательно, снижает производительность последнего.
Подключение программатора к параллельному порту компьютера нам видится наиболее предпочтительным вариантом. Этот способ сочетает в себе достаточно высокую пропускную способность канала и не требует серьезных аппаратных затрат. При использование этого способа удается воспользоваться центральным процессором компьютера в качестве управляющего процессора программатора.
Теперь обратим внимание на ряд «второстепенных мелочей», которые при активной работе с программатором могут либо серьезно попортить вам жизнь, либо, при удачной реализации, значительно облегчат вашу работу. К таким «мелочам» мы бы отнесли способ обновления версий программатора, способность программатора определять правильность установки микросхемы в колодке и проведение процедуры самотестирования при включении питания.
Способ обновления версии – это довольно существенный вопрос эксплуатации программаторов. Необходимость обновления версии может возникнуть по ряду причин, во-первых, при выявлении ошибки работы программатора, либо при расширении списка поддерживаемых программатором микросхем. Способ обновления версии программатора зависит от его аппаратного устройства. В одних изделиях алгоритмы программирования жестко «зашиты» в аппаратуру, в других – они являются загружаемыми. В первом случае для модификации версии требуется модификация самого устройства программатора (например, перепрограммирование ПЗУ самого программатора), а это сопряжено с рядом дополнительных неудобств по доставке изделия производителю или в региональный сервисный центр. Другое дело, если обновление версии осуществляется только обновлением программного обеспечения программатора. Именно по такой схеме построены программаторы с загружаемыми алгоритмами программирования. В таких программаторах обновляется только программное обеспечение и работаете уже с новой версией. Второй способ видится нам наиболее удобным в эксплуатации, и именно по такой схеме строится обновление версий всех выпускаемых фирмой «Фитон» программаторов.
Теперь обратим внимание на такую «мелочь», как способность программатора определять правильность установки микросхемы в тестовую колодку. При кажущейся незначительности этой опции, мы начинаем понимать всю ее важность только после выхода из строя микросхемы при неверной установки ее в колодку. И винить в этом случае некого – сами виноваты. Именно для предотвращения таких ситуаций и служит эта опция. Здесь необходимо указать, что полноценная реализация такой возможности требует от разработчика больших усилий и, порой, изобретательности. Дело в том, что необходимо протестировать микросхему в колодке в самом щадящем для нее режиме, при этом ни в коем случае не допуская выхода микросхемы из строя.
И в заключение обсуждения аппаратного устройства программаторов, на наш взгляд, необходимо упомянуть о настоятельной необходимости проведения программаторами процедуры самотестирования. Обычно эта процедура проводится после инициализации аппаратуры программатора. Цель этой процедуры – встроенными средствами провести проверку работоспособности всего оборудования устройства и принять решение о возможности полноценной работы программатора. К сожалению, встроенными средствами не всегда удается однозначно убедиться в работоспособности всех узлов устройства, но, тем не менее, эта процедура обязательно должна проводиться с целью минимизации вероятности эксплуатации неработоспособного оборудования.
2.4 Программное обеспечение программатораРассмотрим общее представление о возможных способах реализации программного обеспечения (ПО) программатора. Первое, на что нужно обратить внимание, – это под управлением какой операционной системы работает программатор. Большинство программного обеспечения программаторов реализовано под управлением DOS и не предъявляет к компьютеру специфических требований. Обычно, это программы, разработанные довольно давно. В последние несколько лет стали появляться программаторы, работающие под управлением операционной системы Windows. Это современные продукты, которые, как правило, выглядят гораздо элегантнее, имеют более дружественный интерфейс и обладают большим числом сервисных возможностей.
Рассмотрим архитектуру программного обеспечения программаторов. Наиболее распространенной является архитектура, в которой в качестве ядра программатора выступает промежуточный буфер данных. Все операции в программаторе выполняются с этим буфером. Для программирования микросхемы необходимо загрузить файл в буфер, запрограммировать данные из буфера в микросхему, сравнить содержимое микросхемы и буфера. При чтении данные из микросхемы записываются в буфер. Размер промежуточного буфера данных, обычно, коррелирован с размером текущего типа микросхемы. Многолетний опыт разработки и производства программаторов позволил выработать концепцию оригинальной многобуферной архитектуры ПО программаторов с неограниченным количеством буферов. Такая архитектура позволяет работать с неограниченным количеством независимых наборов данных, проводить их анализ и редактирование. Например, вы можете воспользоваться двумя буферами для считывания в них двух разных микросхем, проведения анализа этих наборов данных и, на их базе, создания нового массива данных в третьем буфере для последующего программирования его в микросхемы памяти или сохранения на диске.
Стандартным набором функций программаторов обычно являются следующие функции: чтение, запись, сравнение, контроль на чистоту, стирание (только для электрически перепрограммируемых устройств) микросхем. Некоторые программаторы имеют функцию автоматического программирования. Эта функция позволяет осуществить часто используемую комбинацию действий для конкретного типа микросхемы. Обычно, такая комбинация состоит из такого набора: стереть микросхему, проконтролировать стертость, запрограммировать, сравнить запрограммированные данные с оригиналом, установить защиту. Удобство этой функции заключается в том, что весь «джентльменский» набор активизируется одним нажатием.
Отдельно остановимся на редакторских функциях программаторов. Наиболее распространенным перечнем редакторских функций являются: редактирование данных в шестнадцатеричном формате, возможность заполнения буфера данных константой и подсчет контрольной суммы. Этого простого набора редакторских функций вполне достаточно для простых приложений. Для профессионального использования программаторов необходимы расширенные возможности редактирования. К ним можно отнести:
возможность редактирования данных не только в шестнадцатеричном формате, но и в двоичном;
– восьмеричном и десятичном представлении;
– заполнение массива строкой данных;
поиск и замена строки данных;
– инвертирование данных;
– копирование массива данных как внутри одного буфера, так и между разными буферами;
– подсчет контрольной суммы;
– конвертирование шин адреса и данных.
Еще одна особенность программного обеспечения программаторов, на которой стоит остановиться отдельно, – это пакетный режим работы. Очень в немногих программаторах такой режим реализован. А преимущество такого режима просто очевидно – это автоматизация работы. Использую пакетный режим работы, можно создавать сценарии работы с программатором, автоматизируя всю рутинную работу. Наиболее интересны устройства, где пакетный режим работы практически не имеет ограничений, в нем доступны все ресурсы программатора. В пакетном режиме можно загружать файлы, запускать программирование, манипулировать параметрами программирования, окнами на экране, выводить графические данные и т. д. В качестве иллюстрации использования пакетного режима работы программатора можно привести задачу программирования партии микросхем, в каждой из которых должен быть запрограммирован серийный номер. На специальном языке создается сценарий работы программатора, который заключается в следующем: оператор указывает начальное значение серийного номера партии микросхем и запускает процедуру программирования, программатор программирует микросхему с текущим серийным номером и вычисляет серийный номер следующей микросхемы, помещая его в соответствующий раздел памяти, далее процедура циклически повторяется. В приведенном примере пакетный режим работы значительно облегчает работу оператора и исключает свойственные оператору ошибки.
2.5 Связь программатора между компьютером и чипом через интерфейс RS232Последовательный интерфейс RS232, разработанный более 25 лет назад для компьютеров (в основном для их связи с модемами до сих пор не утратил своего коммуникационного назначения. Даже сейчас, в связи с появлением множества других последовательных интерфейсов, обладающих несомненными преимуществами перед этим интерфейсом (например, интерфейсов USB, RS485, RS422, применяемых в компьютерах, и PC, CAN, SPI, применяемых в микроконтроллерах), интерфейс RS232, похоже, не скоро уйдет в разряд «отставников». Такое положение, на первый взгляд, может показаться странным, особенно из-за недостатков RS232, «глюков» и т.п. Однако следует учесть, что это едва ли не единственное средство связи между компьютером и микроконтроллером, аппаратно присутствующее и в первом и во втором. Во всяком случае, косвенным подтверждением исключительности интерфейса RS232 может служить тот факт, что в современных персональных компьютерах RS232 интегрирован в материнскую плату. Что касается микроконтроллеров, то сейчас трудно найти такой микроконтроллер, в котором бы аппаратно не присутствовал хотя бы один интерфейс RS232 (иногда их бывает и два).
Интерфейс RS232 является последовательным. Это означает, что данные (информация) передаются последовательно, бит за битом по одному проводу (в отличие от параллельного интерфейса, в котором, например, каждый бит байта передается по отдельному проводу, т.е. байт передается по восьми проводам). Формат посылки – 1 байт данных и несколько управляющих бит, некоторые из которых могут отсутствовать.
Обмен информацией между компьютером и периферийным устройством по интерфейсу RS232 двусторонний, т.е. данные могут передаваться компьютером в периферийное устройство и приниматься компьютером от периферийного устройства.
В компьютере предусмотрен специальный разъем, называемый коммуникационным (СОМ); иногда их бывает два (СОМ1 и COM2) или более. К разъему подключается кабель, соединяющий компьютер с периферийным устройством. В кабеле находятся несколько проводов, которые называют линиями интерфейса. Термин «линия» достаточно условен, так как английское слово line, которому он соответствует, имеет более широкое значение.
На практике чаще всего используются три скорости обмена: 9600, 115200 и (реже) 57600 бод.
Контакты разъемов интерфейса RS232 в компьютере.
В компьютере могут присутствовать как 25-штырьковый (DB25), так и 9-штырьковый (DB9) разъемы RS232. Ниже приведены названия сигналов и соответствующие им номера контактов обоих типов разъемов. Как видно из таблицы 1, разъем содержит контакты как входных линий, так и выходных.
Таблица 1 – Названия и функциональные назначения выводов порта RS232
Номер контакта | Название сигнала | Расшифровка | Тип линий | |
DB25 | DB9 | |||
2 | 3 | TxD | Transmitter Data – передатчик данных | Выходная |
3 | 2 | RxD | Receiver Data – приемник данных | Входная |
4 | 7 | RTS | Request To Send – запрос передачи | Выходная |
5 | 8 | CTS | Clear To Send – сброс передачи | Входная |
6 | 6 | DSR | Data Set Ready – готовность данных | Входная |
7 | 5 | SG | Signal Ground – сигнальная земля | - |
8 | 1 | DCD | Data Carrier Detect – обнаружение несущей | Входная |
20 | 4 | DTR | Data Terminal Ready – готовность терминала | Выходная |
22 | 9 | RI | Ring Indicator – индикатор звонка | Входная |
Основными линиями, по которым осуществляется обмен данными, являются две: TxD – линия, по которой из компьютера передаются данные во внешнее устройство, и RxD – линия, по которой компьютером принимаются данные из внешнего устройства.
Линии DTR и RTS являются выходными. Это означает, что уровнями сигналов на этих линиях можно управлять, устанавливая биты соответствующих регистров в нуль или единицу программным способом. Линии CTS, DSR, DCD и RI являются входными. Это
означает, что состояния этих линий можно проверять (т.е. выяснять, в каком состоянии – нулевом или единичном они находятся), читая соответствующие регистры состояний и выделяя соответствующие биты.
Необходимо отметить следующие свойства линий TxD и RxD.
Линия TxD является выходной. Помимо того, что по ней передаются данные, в отсутствие передачи состоянием этой линии можно также управлять программно, т.е. устанавливать в единичное или нулевое состояние. Линия RxD является входной. Однако прочитать состояние этой линии (как линий CTS, DSR, DCD и RI) при отсутствии передачи нельзя.
Кроме того, заметим, что линии DTR, RTS, CTS, DSR, DCD и RI называют еще линиями квитирования (иногда модемными, так как они используются в модемах). Существует как множество алгоритмов обмена по RS232, в которых эти линии (или некоторые из них) используются, так и множество алгоритмов обмена, в которых эти линии не используются вообще (задействованы только линии RxD и TxD).
В микроконтроллере обмен по интерфейсу RS232 осуществляется по линиям TxD (передатчик) и RxD (приемник). Уровни напряжения на этих линиях соответствуют стандартным (цифровым) уровням напряжения микроконтроллера. Это означает, что уровень напряжения логической единицы соответствует напряжению питания микроконтроллера C или 5 В), уровень напряжения логического нуля – нулевому напряжению (или «земле»). Обычно уровни напряжений питания и земли называют TTL-уровнями, хотя в настоящее время это понятие значительно видоизменилось (с электрической точки зрения), а аббревиатура TTL транзисторная логика) давно утратила свой первоначальный смысл. Отметим, что для сопряжения со стандартными уровнями напряжения сигналов на линиях интерфейса RS232 (приблизительно равными ±10 В, как было указано ранее) необходимо использовать преобразователи уровней RS232.
В микроконтроллере, так же, как и в компьютере, есть возможность программно устанавливать скорость обмена, формат данных и некоторые другие характеристики интерфейса RS232. Однако эти характеристики напрямую зависят от частоты используемого кварцевого резонатора, от таймера (а их в микроконтроллере может быть несколько), от еще некоторых устройств микроконтроллера, а также от самого микроконтроллера. Кроме того, микроконтроллер может содержать два интерфейса RS232.
Программа PonyProg – это открытый проект. Для распространения этой программы и еще нескольких проектов в интернете создан специальный сайт http://www.lancos.com. Программа также распространяется с открытой лицензией (GNU), то есть вместе с текстом программы, который разрешается изменять по своему усмотрению. Однако в пакет программы входит специальная библиотека, которая содержит текст всех основных функций, обеспечивающих процесс программирования микросхем.
На библиотеку не распространяется открытая лицензия. Ее разрешается использовать, но не разрешается изменять входящие в нее процедуры. Изменения допускаются лишь в интерфейсе программы. Такое решение делает программу более надежной в работе.
На сайте можно загрузить не только инсталляционный пакет самой программы, но также исполняемый файл русифицированного или украинофицированного вариантов программы. Кроме этого, там еще имеется целый набор вариантов, поддерживающий множество других языков. После инсталляции программы вы просто меняете исполняемый файл в директории программы на новый, и программа полностью русифицируется. Однако стоит учесть, что русифицированная версия программы – это устаревшая версия. Она может не поддерживать ряд микроконтроллеров. Поэтому, если вы не нашли в списке микросхем ту, что вам необходима, проинсталлируйте программу PonyProg заново и работайте с английской версией.
При запуске программы PonyProg открывается окно заставки и раздается фирменный звук – лошадиное ржание. Если вы не желаете слушать его каждый раз при запуске, поставьте галочку в поле «Disable Sound» (выключить звук). Нажмите «Ok». Рекламная заставка закроется, и откроется основная панель программы (см. рис. 2.9).
Главная панель содержит всего одно основное окно, где в свою очередь могут быть открыты одно или несколько окон с разными вариантами прошивок. В верхней части главной панели традиционно располагается меню и две панели инструментов, как показано на рисунке 5.
Рисунок 5 – Основная панель программы PonyProg
Первое, что нужно сделать сразу после включения программы, – выбрать тип микросхемы, которую вы собираетесь программировать. Для этого в верхней панели инструментов имеются два выпадающих меню. Одно называется «Выбор семейства микросхем» (Select device family), а второе – «Выбор типа микросхем» (Select device type). Поля не подписаны. Названия появляются в виде всплывающей подсказки при наведении курсора мыши на соответствующее поле.
В поле выбора семейства выберите «I2C Bus 8bit eeprom», а в поле выбора типа – требуемый тип микросхемы. Для всех наших примеров это будет 2404. Второй способ, при помощи которого также можно выбрать семейство и тип микросхемы, – воспользоваться меню «Устройство», как показано на рисунке 6. Выбранный тип микросхемы автоматически сохраняется, и при повторном запуске программы вызывается снова.
Рисунок 6 – Выбор типа микросхемы
Теперь необходимо произвести настройку интерфейса и калибровку программы. Эти две операции нужно выполнять только один раз, при первом запуске программы. Повторная настройка и калибровка может понадобиться лишь при сбое программы. Сначала выполним настройку интерфейса. Для этого нужно выбрать пункт «Настройки оборудования» меню «Установки». Откроется окно настройки (См. рисунок 7).
Рисунок 7 – Окно настройки ввода-вывода
В этом окне вы должны выбрать порт, к которому подключен ваш программатор. Кроме того, в этом окне можно проинвертировать любой из управляющих сигналов программатора, что бывает полезно при работе с нестандартными схемами. Выбираем параллельный порт (Parallel). Если ваш компьютер имеет несколько LPT-портов, выберите конкретный порт (обычно LPT1). В выпадающем списке выберите способ программирования. Это будет последовательное программирование по ISP-интерфейсу.
Вторая процедура, которую нужно выполнить хотя бы один раз при первом включении программы, – это калибровка. В процессе калибровки программа настраивает свои процедуры формирования временных интервалов под конкретный компьютер. Цель калибровки – повышение точности формирования интервалов времени. При выполнении этой процедуры компьютер не должен выполнять никаких других программ. Закройте все открытые окна и выгрузите все программы, работающие в фоновом режиме. Затем выберите команду «Калибровка» (см. табл. 2.7). Появится окно предупреждения. Для старта процесса калибровки нажмите в этом окне кнопку «Ok». Процесс калибровки выполняется несколько секунд.
После настройки и калибровки все готово для программирования микросхем. Для начала нам нужно загрузить данные из файлов, полученных в результате трансляции:
– файл программы для записи во Flash-память;
– файл данных для записи в EEPROM.
Для временного хранения этих данных программатор использует окно данных. Одно окно данных хранит один вариант задания (программа плюс данные). Запущенная программа PonyProg обязательно содержит хотя бы одно такое окно. Пустое окно автоматически создается при запуске программы. После загрузки информации (программы или данных) в окне появляется дамп памяти. Дамп – это широко распространенный способ представления цифровых данных. Он представляет собой таблицу шестнадцатеричных чисел, записанных рядами по 16 чисел в ряду, как видно из рисунка 8.
Рисунок 8 – Дамп памяти
В начале каждого ряда записывается адрес первой его ячейки. Затем, правее, эти же шестнадцать чисел повторяются в символьном виде. То есть вместо каждого числа записывается соответствующий ему символ в кодировке ASCII.
Размещение всей информации в едином адресном пространстве удобно, так как позволяет хранить программу и данные в одном файле. В процессе программирования микросхемы программатор автоматически отделяет программу от данных, используя информацию об объеме программной памяти данного конкретного микроконтроллера. Все, что выше этого объема автоматически считается данными для EEPROM.
Для загрузки данных из файла, находящегося на жестком диске, в текущее окно программатора, а также для записи информации из окна программатора в файл программа поддерживает ряд команд, объединенных в меню «Файл».
Загрузим программу и данные в программатор. Если вы помните, все вышеперечисленные трансляторы создают отдельный файл для программы (файл с расширением hex) и отдельный файл для данных (файл с расширением еер). Поэтому для загрузки программы воспользуемся командой «Открыть файл программы (Flash)». При выборе этой команды появляется диалог «Открыть программу». Убедитесь, что в поле «Тип файла» выбрано «*.hex». Если это не так, выберите это значение из выпадающего списка.
Затем найдите на диске директорию вашего проекта, выберите файл и нажмите кнопку «Открыть». Загруженные данные появятся в текущем окне. Таким же образом загружается содержимое EEPROM. Только в этом случае нужно выбрать тип файла «*.еер».
После того, как программа и данные загружены, их можно просмотреть, при необходимости – подредактировать прямо в окне программатора. А если нужно, то и записать обратно на диск. Если у вас есть принтер, можно распечатать дамп из текущего окна на бумаге.
Но основная функция – это, естественно, запись программы и данных в память микроконтроллера. Все команды, предназначенные для работы с микроконтроллером, сведены в меню «Команды». При помощи этих команд вы можете отдельно запрограммировать память программ, отдельно – EEPROM. Команда «Записать все» позволяет запрограммировать программу и данные за одну операцию.
Три команды считывания позволяют прочитать содержимое памяти программ и памяти данных микроконтроллера. Прочитанные данные помещаются в текущее окно программатора. Считанную из микросхемы информацию можно записать на диск при помощи меню «Команды». Группа команд проверки используется для сравнения информации, записанной в микросхему, и информации в текущем окне программатора.
Команда «Стереть» позволяет стереть память микросхемы. Команда стирает одновременно все виды памяти:
– память программ;
– память данных
– ячейки защиты (если они были запрограммированы).
Однако здесь есть одно исключение. Некоторые микросхемы имеют бит конфигурации (fuse-переключатель), запрещающий стирание EEPROM. Если запрограммировать этот бит, то при стирании микросхемы EEPROM стираться не будет. Это позволяет не делать лишних циклов записи/стирания и сэкономить ресурс EEPROM в том случае, когда его содержимое менять не обязательно.
На пункте меню «Биты защиты и конфигурации» необходимо остановиться подробнее. Эта команда предназначена для чтения и изменения fuse-переключателей (битов конфигурации) и битов защиты микросхемы. В русскоязычном варианте программы этот пункт почему-то остался не переведенным.
При выборе этого пункта меню открывается окно. Набор элементов управления для каждого вида микросхем будет свой. Причем сразу после открытия окна все поля не будут выбраны (не будут содержать «галочек»). Это значит, что содержимое этих полей пока не соответствует реальному содержимому битов защиты и конфигурации микросхемы.
Для того чтобы считать эти значения, необходимо нажать в том же окне кнопку «Считать все». На короткий момент появится окно, показывающее процесс считывания. Затем снова откроется окно битов защиты и конфигурации. Теперь уже все поля примут значения, считанные из микросхемы. Галочка в любом из полей означает, что данный бит запрограммирован. Напоминаю, что запрограммированный бит содержит ноль, незапрограммированный – единицу. Теперь вы можете изменить значение любого бита. Но эти изменения будут только на экране. Для того, чтобы записать изменения в микросхему, нажмите кнопку «Записать все». Кнопки «Установить» и «Стереть» позволяют установить или сбросить значения сразу всех полей в данном окне.
Для удобства работы с программатором он имеет режим группового выполнения команд. Команды чтения информации из файла, чтения байта конфигурации, обновления серийного номера, стирания микросхемы и, наконец, программирования могут выполняться в пакете при нажатии всего одной кнопки. Для настройки пакета команд выберите пункт «Настройки программирования» меню «Команды». Откроется окно «Настройки программирования», изображенное на рисунке 9. В этом окне отметьте галочками те операции, которые должны выполняться при запуске пакета, и нажмите кнопку «ОК». Для запуска пакетной команды достаточно выбрать пункт «Программирование» или нажать соответствующую кнопку на панели инструментов.
Рисунок 9 – Настройки программирования
Пакетный режим очень удобен в процессе отладки программы. Если в пакет включена опция «Reload Files», то достаточно один раз вручную открыть нужный файл нужного проекта, а затем можно просто нажимать кнопку «Программирование» каждый раз, когда нужно перепрошить микросхему новой версией программы. Все остальное PonyProg сделает за вас. Новая версия программы сама загрузится в программатор, микросхема сотрется, а затем в нее запишется новая информация.
Только не забывайте поставить команду стирания, если вы собираетесь программировать. Помните, что при записи в нестертую микросхему результат непредсказуем. Каждый «прошитый» в процессе программирования бит может быть восстановлен только в результате стирания всей памяти.
Программатор имеет встроенную систему автоматического формирования серийного номера программы.
Серийный номер – это просто порядковый номер версии программы. Этот номер может автоматически записываться в выбранную вами ячейку памяти программ или памяти данных. Настройка данного режима производится при выборе пункта «Установки серийного номера...» (SerialNumber Config) меню «Утилиты» (Utility).
В открывшемся окне вы можете выбрать адрес ячейки для серийного номера, поставить галочку в поле «Относительно памяти данных» (Data memory offset), а также выбрать параметры его автоматического изменения. После настройки параметров изменение серийного номера и его запись в выбранную ячейку текущего окна программатора производится путем выбора пункта «Установить серийный номер» (Set Serial Number) меню «Утилиты» (Utility) или нажатием соответствующей кнопки.
3.2 Программа ICProgПри своей простоте интерфейса и минимальном размере дистрибутива, (примерно 2,7МБ) этот программатор заметно отличается своими возможностями и эргономичностью от других программаторов подобного типа. В этой статье я остановлюсь только на основных функциях и возможностях этой программы в отношении программирования PIC контроллеров PIC16F84 и PIC16F628, 628A, 628A-I/P. ICProg 105c-a имеет в своем составе очень большую базу поддерживаемых контроллеров, а так же FLASH и EEPROM, что немаловажно: с его помощью можно работать со смарт-картами (имеется помощник программирования смарт-карт). На рисунке 10 показан интерфейс и список поддерживаемых устройств.
Рисунок 10 – Интерфейс программы ICProg
Как видно из картинки, микросхем предостаточно. Предполагается что к компьютеру, через COM-порт, подключена аппаратная часть программатора PonyProg, информацию, по изготовлению которой можно найти на сайте Корабельникова Евгения Александровича http://ikarab.narod.ru. При использовании этой аппаратной части совместно с программой ICProg 105c-a, никаких доработок ее принципиальной схемы не требуется. После запуска программы, в большинстве случаев, автоматически происходит инициализация подключенного COM порта, т.е. тест можно не производить, хотя в меню (настройки) функция тестирования имеется. По всей видимости, это сделано для нестандартных случаев. Кстати, программа ICProg 105c-a работает так же и с физическими программаторами, поддерживающими LPT-порты. Далее, в меню настройки – опции, открываем вкладку программирование, и ставим галочку в окошке проверка при программировании (См. рисунок 11).
Рисунок 11 – Установка проверки при программировании
После выбора этой опции, сообщение об ошибке будет выдаваться сразу же после ее возникновения, и не нужно будет дожидаться окончания полного цикла программирования и проверки данных, зашитых в ПИК, для того, чтобы получить это сообщение (в случае наличия ошибки). Здесь же можно выставить и язык интерфейса. Все остальное оставляем по умолчанию. Далее заходим снова в меню настройки – программатор или просто жмем клавишу F3 и попадаем в опции настройки физического программатора (См. рисунок 12): в нашем случае это аппаратная часть программатора PonyProg. Здесь все должно быть выставлено, как показано на картинке. Программатор PonyProg здесь представляется как JDM Programmer: это что-то вроде универсального программатора, работающего с COM портом. Имеется большой выбор поддерживаемых программаторов, работающих, как было сказано выше, и с LPT портами.
Рисунок 12 – Настройки программатора
Все остальное оставляем по умолчанию. При использовании другого JDM программатора под COM порт, эти опции могут отличаться. Например, в поле параметры сигналов, нужно будет поставить галочку в поле Инверсия Данных Ввода, а Инверсию Данных Вывода снять. Далее, в окне выбора программируемых устройств, показанном на этом рисунке 13, выбираем PIC контроллер, который будет программироваться.
Рисунок 13 – Выбор микросхемы
Программируемый ПИК должен выбираться именно тот, который используется в действительности, т.е. если это PIC16F628A то именно его из перечня и выбираем, но никак не PIC16F628, иначе, при программировании, получим сообщение об ошибке типа «неизвестное устройство». Через меню файл, открываем подготовленный HEX файл. После загрузки файла, в окне конфигурация, можно наблюдать состояние битов конфигурации, которые были определены в «шапке» программы. Здесь показаны все установленные биты конфигурации, а также и тип тактового генератора микроконтроллера: в большинстве случаев это будет стандартный кварцевый генератор (XT). В строке состояния будет указываться тип используемого программатора, как показано на рисунке 14, номер COM-порта к которому он подключен, а также тип выбранного программируемого устройства.
Рисунок 14 – Строка состояния
После всех этих манипуляций, жмем кнопку или клавишу F5, и ждем окончания процесса программирования. Если при старте сообщения об ошибке нет, то, на практике, это, на 99,9%, означает, что процесс программирования пройдет успешно. Сказанное выше, справедливо для операционных систем Windows 9x и Windows ME. С Windows XP дело обстоит немного иначе, о чем будет сказано ниже. Необходимо особо отметить, что в ICProg 105хх имеется очень полезный для программистов встроенный дизассемблер, с помощью которого можно преобразовать «прошивку» (файл с расширением .HEX) в исходный ассемблерный код (файл с расширением .ASM), а это предоставляет возможность детального разбирательства с восстановленным таким образом текстом программы. Дизассемблирование происходит так: сначала стандартным образом открывается HEX файл, после чего щелкаем по кнопке и получаем ASM файл. Правда, для того чтобы в полной мере “расшифровать” текст ASM файла, полученного таким образом, и понять алгоритм работы программы, нужно быть программистом и обладать определенными навыками работы, плюс изрядно потрудиться. Что бы вернуться обратно к HEX файлу, достаточно нажать кнопку . Так что, в этом отношении, все очень удобно и универсально. Однако, есть у этой программы и некоторые недостатки. К ним можно отнести:
– довольно маленькое окно просмотра загружаемого кода, что очень не удобно, особенно для тех, кто привык работать с PonyProg.
– скоростью программирования данный программатор также уступает PonyProg, вероятно, из-за большого количества предварительных и последующих проверок в процессе программирования.
И последнее, на чем хотелось бы заострить внимание, это то, что до последней версии ICProg 105xx некорректно работал с операционной системой Windows XP. В ICProg 105c-a все эти недостатки исправлены, хотя, по этому поводу, еще встречается много кривотолков при обсуждении данной темы на форумах. Остается только отметить необходимые условия и настройки программы для работы с Windows XP, которые были описаны на форумах и проверены лично мной: у меня, все работало без проблем. В первую очередь, для тех, кто работает с XP, нужно, с сайта разработчика, помимо самой ICProg105c-a, скачать специальный драйвер, который нужно распаковать в директорию, где находиться сама программа ICProg105c-a. После запуска программы, в меню настройки - опции, на вкладке общие, устанавливаем опцию Вкл./NT/2000/XP/драйвер. Далее система спросит, установить драйвер или нет, естественно соглашаемся, и она его находит автоматом, т.к. он лежит там же где и сама программа. В настройках программатора, т.е. в меню настройки – программатор (F3), оставляем все без изменений. В заключение хотелось бы отметить, что, благодаря именно этому программатору, мне удалось прошить PIC16F628A - I/P. Запрограммировать его в других программаторах, в том числе и в PonyProg, было не возможно: при старте появлялось сообщение о неизвестном устройстве. Если это сообщение игнорировать, то процесс программирования начинался, но в микросхему зашивались все нули. Хотя в PonyProg 206 и включена поддержка PIC16F628, но это не PIC16F628A, то есть, вероятно, существует явная разница между ними.
Чип – это небольшая микросхема. На ней «прошита» информация о расходном материале, «язык» общения с необходимым устройством и ресурс, на который рассчитан картридж. На нём же содержится техническая информация типа серийного номера самого электронного компонента и более специфические данные.
Чип представляет из себя флэш-память небольшого объёма. В ней прописаны ресурс и опознавательные сигналы, на неё же записываются данные, посылаемые с принтера. Это простая, но всё-таки двусторонняя связь принтера и картриджа. При загрузке картриджа в устройство принтер запрашивает сведения у установленного расходного материала, а чип предоставляет то, что на нём прошито. Если схема «скажи пароль – проходи» сработала, то устройство для печати выходит в готовность. В случае если установлен картридж без чипа или использованный чип, будет выдана соответствующая ошибка на дисплей принтера или через программное обеспечение на дисплее компьютера. Обменявшись начальными данными, принтерная плата посылает текущий пробег печатного устройства. Этот показатель записывается на «флэшке», начинается отсчёт количества напечатанных страниц, по мере печати идет процентное отражение текущего ресурса картриджа. Это очень приблизительное состояние картриджа, и точно быть уверенным в его ресурсе не приходится.
Чип позволяет принять несколько команд по записи на себя. После определённой команды он отправляет «ответ» принтеру, и тот снижает процентное отображение текущего заполнения картриджа тонером. И в самый крайний момент посылает на принтер команду, что тонера осталось мало.
Прежде чем начинать программировать чип картриджа, собирается информация о работе, которую предстоит сделать:
– осуществляется выбор тонера для данного производителя;
– заправка картриджа;
– программирование.
Заправка картриджа осуществляется следующим образом: отворачиваются два винта, расположенных на верхней крышке ближе к бокам корпуса, и, переворачивая корпус, снимается бункер. Далее очень аккуратно очищаются все детали и бункер от остатков тонера (удобно использовать пылесос с пластмассовой плоской насадкой), это позволит избежать проблем в дальнейшей работе и продлит жизнь картриджу и печке принтера. Далее следует засыпать одну (при прошивке чипа на 5000 копий) или две (при прошивке чипа на 10000 копий) тубы тонера - это порядка 160/320 грамм. После заправки следует накрыть сверху картридж механической частью, соединить обе части, ввернуть винты на место.
Для перепрограммирования чипа понадобятся: компьютер – любой персональный компьютер, имеющий рабочие СОМ и USB порты, программатор и программа PonyProg – свободно распространяемая программа с сайта производителя; а вообще подойдет любая программа, поддерживающая интерфейс SI Prog.
4.2 Сборка программатораПрограмматор (hard) или железо изготавливается самостоятельно. Для того чтобы его собрать понадобится разъем для соединения с COM-портом компьютера (PC9) и два сопротивления номиналом 1-10 кОм. Питание схемы осуществляется через USB-разъем материнской платы. Схема программатора приведена на рисунке 15.
Рисунок 15 – Схема программатора
Питание чипа теперь формируется за счет красного провода USB, который выдает на выходе +5V и подсоединяется к выводу VCC на чипе. -5V программатор берет с 5-го вывода COM-порта (GND).
На рисунке 16 представлен внешний вид программатора.
Рисунок 16 – Внешний вид программатора чипов картриджей
На рисунке 17 показан COM-порт, к которому припаиваются 2 сопротивления. Это придает схеме небольшие габариты.
Рисунок 17 – Спаянная схема COM-порта
Далее осуществляется подключение программатора к чипу картриджа так, как показано на рисунке 18.
Рисунок 18 – Схема подключения программатора к чипу картриджа
4.3 Программирование чипаПеред тем как начать программирование необходимо установить и закрепить плату чипа на программатор. Далее программатор вставляется в COM-порт выключенного компьютера. После этого включаем компьютер и запускаем программу PonyProg. Для того чтобы программа обнаружила чип, необходимо её настроить.
В меню «Установки» сначала выбираем «Калибровка» (См. рисунок 19). После чего в меню «настройка оборудования» выбираем нужный COM-порт (См. рисунок 20) и нажимаем «Проверка» должно высветиться «Тест ОК».
Рисунок 19 – Установка калибровки
Рисунок 20 – Настройка оборудования
Далее в меню «Устройство» необходимо установить тип микросхемы 2404, как показано на рисунке 21.
Рисунок 21 – Установка типа микросхемы
После установки типа микросхемы в меню «Команды» выбираем «считать все» (См. рисунок 22), программатор должен считать данные с чипа.
Рисунок 22 – Считывание прошивки с чипа
Далее в меню «Файл» нажимаем «Открыть файл с данными» выбираем нужную прошивку и открываем ее, как показано на рисунке 23.
Рисунок 23 – Выбор файла с прошивкой
В открывшейся прошивке в обязательном порядке необходимо поменять серийный номер, так как принтеры и МФУ запоминают несколько предыдущих серийных номеров чипа. Для того чтобы поменять серийный номер чипа необходимо сделать следующее:
а) в меню «Правка» выбрать «Редактирование буфера» (См. рисунок 24);
Рисунок 24 – Включение функции «редактирование буфера»
б) затем навести курсор на начало надписи "CRUM", нажать левую кнопку мыши и в открывшемся поле изменить последние две цифры на любые другие (См. рисунок 25).
Рисунок 25 – Редактирование буфера
Далее в меню «Команды» выбираем «Записать все» (См. рисунок 26).
Рисунок 26 – Запись данных на чип
После того как произойдет запись прошивки на чип необходимо выключить компьютер и отсоединить программатор.
4.4 Расшифровка значений поля прошивкиНа рисунке 27 представлена прошивка с чипа картриджа Samsung SCX-4200. В ней описано содержание ячеек памяти.
Рисунок 27 – Поле прошивки
Далее представлено описание значений поля прошивки:
1, 7 – Идентификатор; последние три буквы – регион: CHN – Китай, KOR – Корея, EXP – все остальные страны;
2 – Емкость картриджа; значения 01...09 соответствуют 1...9 тысячам копий, 0A - 10 тысяч; оптимальное значение, соответствующее ТТХ картриджа – 3-5 тысяч копий;
3 – Метка инсталляции; в новой прошивке эта запись отсутствует, поэтому принтер думает, что у него новый картридж, и увеличивает счетчик количества смен тонера. Принтер сам создает эту запись при установке картриджа;
4 – Серийный номер картриджа; допустимые значения ячеек 30-39. Первые шесть символов – дата в формате ДДММГГ;
5 – Счетчики страниц – если перевести в десятеричный код, то это и будет количество отпечатанных страниц;
6 – Счетчик тонера;
8 – Счетчик барабана;
9 – Метка «Нет тонера»; значения:
· 00 – норма,
· 01 – мало тонера,
· 02 – нет тонера.
В соответствии с ГОСТ 12.1.019-79 [1] под электробезопасностью понимают систему организационных и технических мероприятий и средств, обеспечивающих защиту людей от вредного и опасного воздействия электрического тока, электрической дуги и статического электричества. В отличие от других источников опасности электрический ток нельзя обнаружить без специального оборудования и приборов, поэтому воздействие его на человека чаще всего неожиданно.
Проходя через организм человека электрический, ток оказывает термическое, электролитическое и биологическое действие. В результате термического воздействия вызывается разогрев организма, и возникают ожоги участков тела, в результате электролитического воздействия разлагается кровь и другие органические жидкости в организме.
Биологическое воздействие проявляется в возбуждении и раздражении тканей и непроизвольном судорожном сокращении мышц.
Значение силы тока, проходящего через организм человека, зависит от напряжения, под которым находится человек и от сопротивления участка тела, к которому приложено это напряжение. Учитывая, что большинство поражений происходит при напряжении 127, 220 и 380В, а пробой кожи начинается при напряжении 40-50В, в качестве безопасного напряжения переменного тока в нашей стране выбрано 42В, 110В для постоянного тока.
Основными причинами электротравматизма являются:
· случайное прикосновение к токоведущим частям, в результате ведения работ вблизи или на этих частях; неисправность защитных средств, которым пострадавший прикасался к токоведущим частям; ошибочное принятие находящегося под напряжением оборудования как отключенного;
· неожиданное возникновение напряжения из-за повреждения изоляции там, где в нормальных условиях его быть не должно; контакт токопроводящего оборудования с проводом, находящимся под напряжением; замыкание фаз на землю и тому подобное;
· появление напряжения на токоведущих частях оборудования в результате ошибочного включения тогда, когда на нем выполняют работу; замыкание между отключенными и находящимися под напряжением проводами; наведение напряжения от соседних работающих установок и так далее.
Эксплуатация комплекса предполагается на ПЭВМ. Источником питающего напряжения является сеть переменного тока с напряжением 220В, на которую распространяется ГОСТ 25861-83 [2].
В соответствии с требованиями для предупреждения поражений электрическим током необходимо:
· чётко и в полном объёме выполнять правила производства работ и правила технической эксплуатации;
· исключить возможность доступа оператора к частям оборудования, работающим под опасным напряжением, неизолированным частям, предназначенным для работы при малом напряжении и не подключенным к защитному заземлению;
· применять изоляцию, служащую для защиты от поражения электрическим током, выполненную с применением прочного сплошного или многослойного изоляционного материала, толщина которого обусловлена типом обеспечиваемой защиты;
· подводить электропитание к ПЭВМ от розетки здания при помощи специальной вилки с заземляющим контактом;
· защитить от перегрузок по току, рассчитывая на мощность, потребляемую от сети; а также защитить от короткого замыкания оборудование, встроенное в сеть здания;
· надёжно подключить к заземляющим зажимам металлические части, доступные для оператора, которые в результате повреждения изоляции могут оказаться под опасным напряжением;
· проверить, что защитный заземляющий проводник не имеет выключателей и предохранителей, а также надёжно изолирован.
5.1 Требования пожарной безопасности к содержанию помещений- Территория предприятия должна постоянно содержаться в чистоте и систематически очищаться от отходов производства. Подступы к пожарному инвентарю и оборудованию должны быть всегда свободными.
- Курение разрешается только в специально отведенных местах, оборудованных средствами пожаротушения и обозначенных надписями «Место для курения».
- Проходы, входы, коридоры, тамбуры не разрешается загромождать различными предметами и оборудованием. Все двери эвакуационных выходов должны свободно открываться в направлении выхода из здания.
- В помещениях предприятия запрещается:
- оставлять после работы включенными в электросеть электроприборы;
- оставлять открытыми окна, двери;
- производить отогревание замерших труб открытым пламенем;
- устанавливать и эксплуатировать печи-времянки;
- проводить огневые работы (электросварка, газосварка, и т.д.) без разрешения руководителя.
5.2 Содержание электроустановкиЭлектрические сети и электрооборудование, используемое в организации, должно отвечать требованиям действующих «Правил устройства электроустановок», «Правил технической эксплуатации электроустановок потребителей», « Правил техники безопасности при эксплуатации электроустановок потребителей». Устройство и эксплуатация электросетей, времянок допускается только по согласованию с отделом главного энергетика.
Не допускается прокладка электрических проводов, кабелей транзитом через складские помещения.
Лица, ответственные за состояние электроустановок, обязаны:
- обеспечить организацию и своевременное проведение профилактических осмотров и планово-предупредительных ремонтов электрооборудования;
- своевременно устранять выявленные нарушения.
Запрещается:
- обертывать электролампы и светильники бумагой, тканью, а также пользоваться электроутюгами, электрочайниками и другими нагревательными элементами без подставок из негорючего материала;
- оставлять без присмотра включенные в сеть электронагревательные элементы, радиоприемники, телевизоры и т.д.
5.3 Содержание систем отопления, водоснабжения и вентиляции- Водонагреватели и отопительные приборы должны размещаться так, чтобы в них был обеспечен свободный доступ для осмотра и очистки.
- Вентиляционные камеры, циклоны и фильтры, воздухоотводы должны очищаться от горючей пыли и отходов.
- Работа технологического оборудования и его нагрузка должны соответствовать требованиям паспортных данных и технологического регламента.
- Ремонт оборудования без полной его остановки запрещается.
- Категорически запрещается выливать в раковины и т.д. керосин, бензин и другие, легковоспламеняющиеся и горючие жидкости.
5.4 Требования к содержанию средств пожаротушения
Для определения местонахождения средств пожаротушения должны применяться соответствующие указательные знаки с расположением их на видном месте (на уровне глаз), как внутри, так и вне помещений.
Окраска противопожарного оборудования производится согласно ГОСТу № 12.4.026-76. Огнетушители должны размещаться в легкодоступных и заметных местах, где исключено попадание на них прямых солнечных лучей и непосредственное воздействие отопительных и нагревательных приборов.
Ручные огнетушители должны размещаться:
- на вертикальной конструкции на высоте не более 1,5 метра от уровня пола до нижнего торца огнетушителя и на расстоянии от двери, достаточном для ее полного открывания; в специальных тумбах на пожарных щитах или стене;
Весь пожарный инвентарь и средства пожаротушения должен периодически проверяться и испытываться с занесением результатов проверки в специальный журнал.
5.5 Обязанности лица, ответственного за пожарную безопасность- Точно и в срок, выполнять все требования работников пожарной охраны. Участвовать в противопожарных смотрах и осуществлять пожарно-профилактические мероприятия.
- Не реже одного раза в квартал проводить повторные противопожарные инструктажи.
- Постоянно содержать в исправном состоянии и уметь обращаться противопожарным оборудованием при тушении пожара.
- Перед закрытием работы предприятия лично осмотреть все помещения, лично убедиться:
- выключены ли приборы;
- выключена ли приточно-вытяжная вентиляция;
- закрыты ли окна, двери, которые могут создать приток свежего воздуха;
- не загромождены ли проходы, подступы к пожарному инвентарю или оборудованию;
- не имеется ли в помещениях загазованности, запаха гари, дыма, горелой резины и т.д.;
- обесточена ли осветительная и силовая электропроводка (за исключением дежурного освещения).
На случай возникновения пожара:
- Каждый работник обязан в случае обнаружения пожара сообщить о нем в пожарную охрану по телефону «01» и принять возможные меры к спасению людей, имущества и ликвидации пожара. Принять меры для отключения электрооборудования, находящегося под напряжением.
- До прибытия пожарной команды организовать тушение пожара имеющимися на местах первичными средствами пожаротушения и организовать встречу пожарных подразделений.
- Не лить воду на электропровода и электрооборудование, находящихся под напряжением.
- Горящую одежду на человеке тушить плотной тканью (пальто, покрывалом).
- По прибытии пожарного подразделения руководителю тушения пожара кратко сообщить о причинах и обстоятельствах пожара, о принятых мерах, об угрожаемых местах и т.д.
Инструкция является обязательной для всех рабочих, служащих, а также лиц, посещающих объект. Лица, не выполняющие требования данной инструкции, привлекаются к административной и уголовной ответственности.
Персональный компьютер представляет собой вполне самостоятельное устройство, в котором есть все необходимое для автономной жизни. Однако «жизнь» компьютера была бы неполноценной и довольно бесполезной без такого простого с виду устройства, как принтер. Принтер – это периферийное устройство компьютера, используемое для вывода информации на бумажный или пластиковый носитель.
В своей работе я рассмотрел картриджи лазерных принтеров, оснащаемые в наше время небольшими микросхемами – чипами. На них «прошита» информация о расходном материале, «язык» общения с необходимым устройством и ресурс, на который рассчитан картридж. На нём же содержится техническая информация типа серийного номера самого электронного компонента и более специфические данные.
Список использованной литературы
1. Информационный сайт http://www.startcopy.ru/
2. Информационный сайт http://chipov.net/
3. Информационный сайт http://siriust.ru/
4. Информационный сайт http://chiprecharge.h11.ru/
5. Информационный сайт http://cadzone.ru/
6. Информационный сайт http://www.phyton.ru/
7. Информационный сайт http://www.moyservice.ru/
8. Информационный сайт http://oprintere.ru/
0 комментариев