ORANGE - универсальный программатор микросхем Serial EEPROM

         

Файл описания


Описания представляют собой текстовые файлы с именем рабочего файла и стандартным расширением *.diz. Сохранение и загрузка файла описания производится синхронно с основным файлом. Для работы с описаниями необходимо установить флаг "Description file" в опциях программы.



Frequently Asked Questions



(Часто Задаваемые Вопросы)
по программатору Orange3

Версия 1.8 (12.03.2003)

Конфигурационный файл


В конфигурационном файле orange.cfg задается:

Список групп:
(*) GROUP=MicroWire

Список EEPROM:
(*) CHIP=93C56,128x16,93c66.hpl
где: 93С56 - название микросхемы
128x16 - объем (емкость) памяти и разрядность. Если разрядность равна 8, ее можно не задавать. Размер можно задавать и в килобайтах.


93c66.hpl - имя HPL файла
Если микросхема имеет режим блочного чтения/записи, размер блоков задается в скобках после объема:
(*) CHIP=24C64,8K(16/8),24c512.hpl
Где 16 - размер блока чтения
8 - размер блока записи
Если размеры совпадают, можно задавать только одно число.

Все HPL файлы располагаются в подкаталоге HPL\. Загрузка файла производится при выборе соответствующего типа в меню. Один HPL модуль может соответствовать нескольким типам микросхем различного объема.



Hardware Programming Language) разработан специально




20.01.2003

    Язык HPL ( Hardware Programming Language) разработан специально для описания низкоуровневых протоколов обмена с различными устройствами.

Рассмотрим реализацию языка HPL в трансляторе программатора Orange.
Cимволом (*) обозначены примеры в данном документе.
Cимволом (W) обозначены операторы и команды, поддерживаемые только Windows версией.

Символ ';' является признаком комментария - конец строки начиная с этого символа не обрабатывется. Все пробелы внутри текста удаляются, за исключением текстовых строк, заключенных в кавычки "". Ключевые слова пишутся только в верхнем регистре (большими буквами).

Числа. Числа могут задаваться в двоичном, десятичном и шестнадцатеричном формате:
(*) 1234 - десятичная константа
(*) 010101B - двоичная
(*) 0x1234 или 01234H - шестнадцатеричная.
Адрес. Ключевое слово ADR содержит текущее значение адресного регистра (32 разряда), по которому выполняется чтение/запись данных. Для адресного регистра могут использоваться операции установки (только в пользовательских секциях) и инкремента (в секциях блочного чтения и записи) Данные. Для доступа к данным в буфере по текущему адресу используется ключевое слово DATA. Данные доступны пословно (8 или 16 бит в зависимости от установленного типа памяти) или поразрядно. Регистры. Для выполнения математических и логических операций, описания констант и хранения данных можно использовать 16 тридцатидвухразрядных регистров R0...R9,RA...RF. Регистры R0...R9 универсальные, регистры RA...RF специального назначения. Через них передаются пераметры:
RA - передача параметров
RB - размер блока чтения/записи
RC - зарезервирован
RD - номер области для микросхем, имеющих несколько областей памяти, например, для микроконтроллеров.
RE - глобальный код операции (1-READ,2-VERIFY,3-WRITE,4-USER)
RF - полный размер памяти.

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



Кроме этого, дополнительно можно использовать необязательные секции:
[SETUP] - начальная установка, вызывается однократно при загрузке модуля
[INIT] - инициализация, вызывается однократно перед всеми операциями.
[WRITEINIT] - инициализации записи, вызывается один раз перед началом записи EEPROM.
[WRITEEND] - завершение записи, вызывается один раз после записи всех слов EEPROM.
[READBLOCK] - Чтение блока
[WRITEBLOCK] - Запись блока
[END] - завершение операции, вызывается один раз для любой операции.
    При необходимости могут быть описаны дополнительные пользовательские секции, которые добавляются в меню под своим именем. Их названия также записываются в скобках []. При использовании пробелов имена следует дополнительно заключать в кавычки:
(*)["Test 1"]
Можно использовать локальные секции (функции). Для описания функций перед именем добавляется символ '_' :
(*) [_START]
Функции должны быть описаны в модуле до их использования. Вызов функции осуществляется по имени:
(*) _START.
Передача параметров возможна с использованием регистров. Разрешено использовать внутри функций вызовы других функций. Не рекомендуется использование рекурсивных вызовов.
Секции чтения и записи вызываются при выполнении операций Read и Write для каждого слова.
Порядок вызова секций в режиме чтения:

[INIT]
FOR (ADR=0,ADR {
    [READ]
}
[END]

Порядок вызова секций в режиме записи:

[INIT]
[WRITEINIT]
FOR (ADR=0,ADR {
     [WRITE]
     IF (Проверка записи)
         [READ]
}
[WRITEEND]
[END]
Порядок вызова для пользовательских команд:
[INIT]
[USERSECTION]
[END]
В начальной секции описываются:
Входные и выходные сигналы для подключения к EEPROM (pins):
(*) PINO=SCL,0 - Выход, SCL - имя сигнала, 0 - номер бита для драйвера
(*) PINI=SDA,1 - Вход, SDA - имя сигнала, 1 - номер бита для драйвера

Входные и выходные сигналы могут иметь одинаковые имена.


Имена должны быть не длиннее восьми символов. Имена не могут совпадать с зарезервирован- ными ключевыми словами: "PINO", "PINI", "CDELAY", "SOCKET", "CONST", "REG", "GET", "LOOP", "ADR", "DATA", "MARK", "POWER" Символ # перед именем является признаком инверсии сигнала:

(*) PINO=#DTA,0

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

(*) PINO=SDA,1,5

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

Задержка после каждой операции установки пина (в микросекундах):

(*) CDELAY=10

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

Номер панельки для установки EEPROM (по схеме Orange-1)

(*) SOCKET=1

Если параметр SOCKET не указан, он считается равным 0. Можно создавать свои новые Socket, но для того, чтобы условное графическое изображение микросхемы отображалось в окне Chip Info, таблица выводов должна быть внесена в драйвер или описана в модуле.
Дополнительная информация о модуле, которая отображается в нижнем окне. Не более одной строки

(*) INFO="Новый модуль"

Общее число выводов в корпусе EEPROM (по умолчанию 8)
(*) ALLPINS=14

Объявления регистров, доступных для просмотра и редактирования через меню (Buffer->Registers). Имена регистров не должны совпадать. Если регистры используются локально внутри секций, объявлять их не нужно.

(*) R0=Protect - где "Protect" - имя регистра

После имени регистра через запятую может быть указан режим отображения значения регистра: H - hex, D - Dec, B - Bin, (W) L - List (W) C - CheckBox

(*) R1=CODE,H

Для типов H,D,B,C дополнительно может быть указано число отображаемых знаков:
(*) R2=FLAGS,B8
(*) R3=Box,C4

Для типа L добавляется список текстовых строк.
Значение регистра соответствует порядковому номеру выбранной строки начиная с 0.


(*) R0=Mode,L,On,Off

POWER - режим управления питанием:
1 - автоматическое включение/выключение
0 - управление из модуля.

     Все остальные секции имеют одинаковый формат записи. в одной строке может быть описано несколько инструкций, между собой они разделяются запятыми.
Краткое описание инструкций приведено ниже:
Установка пина константой, битом данных, адреса или регистра:
(*) SDA=1
(*) SDA=DATA[2]
(*) SCL=ADR[3]
(*) PIN=R2[3]

Проверка текущего состояния пина (линий ввода) или бита регистра R0-R7
(*) DAT?1
(*) R2[4]?0
или всего регистра:
(*) R4?0x1234
     Если после операции сравнения в скобках {} описан блок инструкций, то он выполняется при равенстве бита(регистра) и константы, иначе выполняется инструкция следующая за скобками. Если такой блок не описан, при несовпадении проверяемого значения выполнение операции прерывается с выводом сообщения "Error: Chip not respond!" и номером строки HPL файла, на котором произошла остановка.
(*) R2[4]?0 {P1=0}, P2=1
Если 4 бит регистра R2 равен 0, то выполняется инструкция P1=0, а потом P2=1, если бит равен 1 - то сразу P2=1
     Если перед сравниваемым числом стоит символ !, то условие меняется на противоположное. (Блок выполняется при несовпадении значений).
(*) R2?!1234H {P1=0}
Если R2 не равен 1234H, то выполняется инструкция P1=0, если R2 = 1234H, выполняется следующая инструкция.

Установка константы. Значения констант должны лежать в пределах 0...65535.
(*) CONST=159

Операции с регистрами.

Операции присвоения (копирования):
Регистр-регистр (*) R2=R5
Регистр-данные (*) R2=DATA
Данные-регистр (*) DATA=R3
Разрядность данных в зависимости от установленного типа микросхемы составляет 8 либо 16 бит.

Арифметические и логические операции
(В операциях может участвовать константа или другой регистр):
установка "=" (*) R0=356H
сложение "+" (*) R0=+123 ; R0=R0+123
вычитание "-" (*) R0=-R1 ; R0=R0-R1


умножение "*" (*) R0=*R1 ; R0=R0*R1
деление "/" (*) R0=/5 ; R0=R0/5
взятие остатка "%" (*) R0=%10 ; R0=R0%10
циклический сдвиг ">" (*) R0=>>1 ; сдвиг R0 вправо на 1 разряд
Логическое И - AND "&" (*) R0=*R2 ; R0=R0 and R2
Логическое ИЛИ - OR "|" (*) R0=|R2 ; R0=R0 or R2
Исключающее ИЛИ - XOR "^" (*) R0=^R2 ; R0=R0 xor R2
В операциях деления и взятия остатка запрещено использовать константу 0 либо регистр, содержащий 0!
3) Битовые операции с регистрами (*) R0[R1]=1 - бит регистра R0, равный R1 установить в 1
LOOP - Циклы. Переменная циклов может быть 3 видов: адрес, данные чтения/записи и константа. Кроме того может быть описан универсальный цикл, без указания переменной, в этом случае доступ осуществляется через счетчик (индекс) цикла I. Универсальные циклы могут быть вложенными, во внутреннем цикле непосредственно доступен только счетчик внутреннего цикла. Для универсальных циклов границы могут быть также заданы через регистры. Для совместимости с будущими версиями рекомендуется использовать только универсальные циклы!
Константа должна быть задана до начала цикла с помощью инструкции CONST Границы цикла должны лежать в пределах:
0...32767 - для универсальных циклов
0...32767 - для циклов CONST
0...1023 - для циклов DATA
0...31 - для циклов ADR
При выполнении кода для универсальных циклов не контролируется выход индексов за пределы реального размера DATA, ADR и CONST.
Скобки "{","}" ограничивают тело цикла.

(*) LOOP=(15,0) {DI=R0[I],...}
линия вывода DI поочередно принимает значения бит 15..0 значения регистра R0. (*) LOOP=(7,0) {DI=ADR[I],...} (*) LOOP=ADR(7,0) {DI=I,...} - старый вариант линия вывода DI поочередно принимает значения бит 7..0 текущего значения адресного слова.

(*) LOOP=0,15) {DATA[I]=DO,..} (*) LOOP=DATA(0,15) {I=DO,..} - старый вариант поочередное считывание бит 0..15 слова данных с линии ввода DO.

(*) R1=10H


LOOP=(5,0) {D=R1[I],..}
(*) CONST=10H
LOOP=CONST(5,0) {D=I,..} - старый вариант линия вывода D поочередно принимает значения бит 5..0 константы (10H)

(*) LOOP=(R1,R2) {R3[I]=DATA[I]}
Копирование битов от R1 до R2 адресного слова в соответствующие биты регистра R3

(*) LOOP=(0,7){ P1=0,LOOP=(6,1){P1=0,P1=1} }
Вложенные циклы.

BREAK - выход из текущего цикла.
(*) LOOP=(7,0) {PI?0{BREAK}}
Задержка (в микросекундах). Значение задержки может быть в пределах 1мкс...65с.
(*) P=200

Вывод сообщения. Вывод на экран окна с сообщением, строка должна быть заключена в кавычки. Внутри строки можно использовать стандартные модификаторы аналогичные используемым в языке C для printf(). (Для всех числовых аргументов необходим параметр l (long int)).
X - шестнадцатеричное значение
u - десятичное значение

Транслятор не проверяет правильность передаваемых аргументов!

(*) PRINT=("Hello, World")
(*) PRINT=("Code=%04lX",R1) - Вывод значения регистра R1 в шестнадцатеричном виде - минимум 4 цифры.

Можно также использовать дополнительные модификаторы, определяющие тип окна:
E - Error - сообщение об ошибке
(*) PRINT=E("Hello, Mr. Bug!")

S - Status - запись в статусное окно
(*) PRINT=S("Progress %03lu",R0)

A - Ask - запрос подтверждения пользователя
Значение возвращается в регистре RA (Ok=1,Cancel=0)
PRINT=A("Are you ready ?")

GET Ввод значений. На экран выводится окно с запросом данных. Строка в скобках задает заголовок окна. Одновременно могут быть введены сразу несколько значений в заданные регистры. Имена регистров и формат данных соответствуют описаным в начальной секции.
(*) GET=("Enter value",R7,R8)

MARK Установка и получение отметки (выделения) текущего слова. Адрес соответствует значению ADR.
(*) MARK=R1
(*) R2=MARK

EXIT - Завершение текущей секции.

VCC - Управление напряжением питания (включение, выключение, установка):
(*) VCC=1 - включить
(*) VCC=0 - выключить
(*) VCC=3000 - установить напряжение 3,0 V (значение в милливольтах)

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

Подключение и инсталляция программы


Выключите ПК Соедините кабелем из комплекта поставки программатор с LPT портом компьютера Подключите блок питания к разъему питания программатора и вставьте его в розетку Включите ПК Скопируйте программу с CD на HDD или разархивируйте при получении архива с сайта Запустите программу Orange.exe При необходимости установите номер порта в опциях программы (по умолчанию установлен LPT1) Программатор готов к работе


Работа с меню


Для выбора элементов меню следует нажать клавишу Alt и подвести маркер к нужному элементу клавишами управления курсора (со стрелками) либо выбрать нужный пункт указателем мыши.

File
- New - новый файл
- Open file - чтение файла в буфер
- Save - запись файла
- Save as - запись файла c новым именем
- Descriptions - просмотр и редактирование описаний.
- Exit - Выход

Buffer - операции с буфером:
- Copy - копировать выделенную область буфера
- Paste - вставка скопированной области
- Search - поиск шестнадцатеричной строки в буфере. Допустимо использовать символ '?' для замены произвольного байта или полубайта.
- Replace - замена
- Select Block - выделение блока по заданным адресам
- Fill Buffer - заполнение константой,
- Xor Buffer - Исключающее ИЛИ константы и буфера
- Swap bytes - перестановка соседних байт.
- Swap nibbles - перестановка полубайтов в байте.
- Swap bits - перестановка битов в байте.
- Checksum - подсчет контрольной суммы (3 алгоритма).
- Registers - редактирование пользовательских регистров (если они заданы).

Device
- Read - чтение EEPROM
- Write - запись EEPROM
- Modify - запись только отмеченных байт
- Compare - сравнение буфера c EEPROM с отметкой несовпадений
- Differens - сравнение буфера c EEPROM с построением таблицы

Options
General - установка общих параметров
- Force write - принудительная запись всего буфера (иначе пишутся только необходимые байты)
- Verify during write - выполнять контрольное сравнение при записи слова
- Verify After write - выполнять сравнение после окончания записи (сравнение не выполняется в режиме записи "Modify")
- Block mode enable - разрешение блочного чтения/записи
- Confirmation - Подтверждение операций
- Description file - Поддержка
файлов описаний.
- Sound Messages - разрешить звуки для системных сообщений
- Autosave - Автоматическое сохранение опций

Hardware - выбор типа программатора и номера LPT порта. Тестирование подключенного программатора.

Editor - Параметры шестнадцатеричного редактора
- Mark clear - снимать выделение после операции
- 16 bit editor - 16-битный режим редактирования
- ANSI-OEM conversion - перекодировка символов для ASCII поля редактора.
- Show gridlines - отображение сетки
- Read only - запрет редактирования буфера
- Default buffer value - шестнадцатеричное число, определяющее начальное заполнение буфера

Device - Параметры текущей микросхемы
Colors - Настройка цветов
Language - Выбор языка программы (русский, английский). Смена языка происходит после перезагрузки программы.

Type - Выбор типа EEPROM (Типы и параметры задаются в файле orange.cfg)

Help - информация о программе и о микросхеме.



Редактор


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

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

В зависимости от выбранного типа EPROM автоматически включается 8 или 16-битный режим. Порядок отображения байт и ASCII символов в этих режимах не совпадает!

"Горячие клавиши" редактора
Tab  переключение HEX/ASCII
Ins  выделение байта (установка/сброс) (или двойной щелчок левой кнопкой мыши)
Gray "-" отменить выделение
Gray "+" установить выделение для всего буфера
Gray "*"  инвертировать выделение
Ctrl-C  копировать блок
Ctrl-V  вставить блок
PageUp  страница вверх
PageDown страница вниз
CtrlPgUp  начало буфера
CtrlHome  начало буфера
CtrlPgUp  конец буфера
CtrlEnd  конец буфера чипа
Home  начало строки
End  конец строки
BackSpace переход на предыдущий байт (символ)

Строка статуса

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



SOCKET1 - I2C


VCC P2 P0 P1
P3 P4 P5 GND



SOCKET2 - SDA


- GND - P0
GND P2 VCC P1



SOCKET3 - MW


VCC P4 P3 GND
P2 P0 P1 P5



SOCKET4 - MWR


P3 GND P5 P1
P4 VCC P2 P0



Типы файлов


BIN - двоичный файл данных

ROM - двоичный файл данных

EEP - двоичный файл данных

HEX - Intel HEX

E2P - Файл в формате PonyProg

DIZ - файл описания

HPL - описание алгоритма на языке HPL

HPX - закодированный HPL файл



Требования к конфигурации компьютера


ORANGE-3 нормально функционирует в следующих условиях:

Компьютер IBM PC/AT либо совместимый с ними; Процессор 486 и выше; VGA (SVGA) - совместимый видеоадаптер; Свободный LPT порт; устройство "МЫШЬ"- (рекомендуется); Операционная система MS Windows 95/98/NT/2000; 32 Mb ОЗУ; Как минимум 1Mb на жестком диске.

Внешний разъем программатора


1 - GND 2 - P0 3 - P1 4 - P2 5 - P3 6 - P4 7 - P5 8 - VCC
9 - GND 10 - P6 11 - P7 12 - P8 13 - P9 14 - P10 15 - P11 16 - P12



Вопросы и ответы



Q: Что значит опция Force write и зачем она нужна?
A: Это значит "принудительная запись" если она включена, производится запись всего буфера, иначе производится предварительное чтение. Запись выполняется только по тем адресам, где прочитанное значение не совпадает с буфером. Это позволяет в некоторых случаях значительно ускорить запись.

Q: Чем отличется "Verify during write" от "Verify After write"?
A: Первое выполняет проверку после записи каждого слова, а второе после записи всей области памяти. Проверка после записи более надежна, зато проверка во время записи быстрее покажет, что запись выполняется с ошибками. Как правило, включать обе опции сразу нет необходимости.

Q: Почему Orange меняет местами старший и младшие байты для 93с46 и других 16-битных EEPROM при записи в файл?
A: В отличие от некоторых других программаторов, Orange использует Intel-подобный формат (младший байт по младшему адресу). В данном случае это более корректно, что подтверждается тем, что те микросхемы, которые имеют 8 и 16 битный режим, читаются в обоих режимах одинаково. Если Вас такой порядок не устраивает, есть 2 способа: 1) Воспользоваться командой Swap bytes, она переставляет байты в буфере.
2) Исправить соответствующий HPL.

Q: У меня не работает модуль XX с EEPROM YY фирмы ZZ, что делать?
A: 1) Убедиться в исправности программатора
2) По возможности проверить в исправности микросхемы на другом программаторе.
3) Сравнить модуль с алгоритмами чтения/записи, рекомендуемые производителем. EEPROM одинаковых серий у разных фирм могут иметь существенные отличия.

Q: Как мне написать свой HPL модуль и добавить его в меню?
A: Сначала спросите - может он уже написан до вас :)

Определите расположение выводов EEPROM - если оно совпадает с каким-нибудь существующим, возьмите подходящий модуль за основу, если нет, начинайте писать с самого начала. Не забудьте сделать копию перед редактированием какого-либо модуля. 2) Выберите имя будущего модуля. Как правило, существует несколько EEPROM разного объема с совместимым форматом команд.
Рекомендуется выбирать для названия EEPROM максимального объема. Например, для группы 24C04 (512x8), 24C08 (1024x8), 24C16 (2048x8) лучшим названием будет 24C16.HPL. Все модули хранятся в каталоге \HPL. Добавьте новый модуль в меню. Для этого необходимо вставить в orange.cfg строку описания, например: CHIP=93C46,64x16,93C46.hpl Имя EEPROM, емкость, имя модуля. Опишите начальную секцию. Для нестандартного расположения выводов задайте пока параметр SOCKET=0 и сообщите автору - он включит эту таблицу выводов в следующую версию драйвера и присвоит порядковый номер. Опишите выходы и входы чипа в соответствии с подключенными выводами программатора. Задайте параметр CDELAY, определяющий максимальную тактовую частоту. Не стоит увлекаться экспериментальным снижением этого параметра до минимальной величины - реальная задержка зависит также от скорости процессора и LPT порта. Лучше установить рекомендуемое производителем значение. При необходимости создайте секции [INIT] и [END] и опишите в них начальные установки и действия после включения питания и перед выключением соответственно. Опишите секцию [READ]. Как правило, она состоит из цикла выдачи команды, одного или нескольких циклов выдачи адреса и цикла чтения данных. Секцию записи [WRITE] можно делать, когда чтение уже написано и отлажено. Q: А зачем вообще нужны пользовательские секции и что с ними делать?
A: Для выполнения "нестандартных" операций. Например, стирание, чтение/запись дополнительных регистров и т.п.
Q: Что такое "Pin Tester"?
A: Это режим ручной установки/проверки пинов. Полезен для настройки программатора. Кроме того, он может использоваться для отладки различных устройств.
Q: Почему модули для Orange2 могут не работать с Orange3?
A: Схемотехника программатора имеет некоторые отличия от Orange2. В старой версии для Microwire и SPI интерфейсов использовался общий канал данных, DI и DO соединялись через резистор. В Orange3 для входа данных используется отдельный пин. Совместимость обеспечивается прозрачным перенаправлением запросов в драйвере.Для его корректной работы должен быть правильно установлен параметр "SOCKET" в модуле.
Q: Не стираются lock биты у AT90S2313.
A: 1. Возможно отключен режим сериального программирования, тогда только параллельным программатором.
2. Попробуйте стереть при пониженом питании (4.0...4.5V), это глюк, признанный Atmel-ом.
Q: Не читаются и не пишутся микросхемы 93c46 (..93c86) в корпусе SOIC8
A: Эти микросхемы выпускаются в двух вариантах расположения выводов MW и MW-R. Уточнить тип конкретной микросхемы можно по фирменной документации либо проверить подключение выводов питания в устройстве, где установлена микросхема.

Возможности


Чтение, запись и верификация микросхем SEEPROM В отличие от известных аналогов, все алгоритмы чтения и записи написаны на специальном макроязыке HPL, что позволяет пользователю не только изучать и корректировать протоколы обмена, но и самостоятельно добавлять любые SEEPROM. Чтение и запись файлов в bin и hex форматах. Чтение файлов в e2p формате. Редактирование буфера обмена в шестнадцатеричном и символьном виде. Возможность записи выделенной области буфера редактирования в EEPROM. Поддержка системного буфера обмена (clipboard).


универсальный программатор микросхем Serial EEPROM



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