Добрый день.
Хочу поделиться опытом в использовании L-card.
Возникла необходимость прошить AVR, но под рукой не оказалось программатора, современные компьютеры уже не используют ни COM ни LPT порты,
а чтобы собрать простейший USB программатор, нужно запрограммировать AVR. То есть нужен программатор - попадаем в замкнутый бесконечный цикл.
Выход - либо покупать готовый программатор, что не так уж и дешево + ждать от 7 до 14 дней, либо искать иные пути, например компьютер с LPT портом, который как оказалось совсем не просто найти.
Нашел следующий выход, как это не смешно 
У меня есть E14-140M, а у неё есть аж по 16 линий на ввод и вывод.
Вот в этой замечательной статье Прошиваем AVR вручную - описан простейший, коленочный способ прошивки процессора.
Все просто - подключаем выходные линии E14-140M к процессору согласно схеме, а потом выдаем на вывод байты в правильной последовательности.
У меня уже есть программа (написанная совсем недавно: Программа управления E14-140M),
которая позволяет направлять данные ввода-вывода в/из файлов, опция передачи данных на цифровые входы, используя бинарные или шетснадцатеричные числа из файла.
Остается одно, написать программу, которая будет hex файл с прошивкой преобразовывать в файл с бинарными числами в соответствии с протоколом программирования и схемой подключения.
На это ушел целый день.
Получилась программа lavrhexconv, вот её man-вывод:
▼Скрытый текст
al@al-C365 ~/++AVR/programm/Прошивка через L-card/L-card hex-bin converter $ ./lavrhexconv
L-card. AVR-hex to L-card-bin converter
Make bin file for "L-card manager" from hex AVR file
2015 GALS
Usage:
lavrhexconv [<options>] <out-bin-file-name> [<in-hex-file-name>]
options:
-m <mode> - mode
mode:
e - make L-bin file for erase AVR
s - make L-bin file for read signature AVR
r - make L-bin file for read AVR
p - make L-bin file for program AVR (default)
P - make L-bin file for program AVR without erase code
in-hex-file param needed
-d <delay> - for read mode make delays from read each byte
delay: 0 (default), 1, 2, 3, 4, 5, 6, 7, 8, 9
-i 1 - for program mode - ignore checksum error
-c <count> - count of bytes for read (r-mode) (16 - default)
-o <offset> - begin adres from read (r-mode) (0 - default)
-p <pins> - pin setup on 16 binary outputs
pins:
string of 16 chars defined as main pins
Like: 000000000PIGRCDS (default)
where:
0 - none
P - power VCC
I - read info control - ON when read each byte
G - ground GND
R - reset RESET
C - clock XTAL1
D - data MOSI
S - sinc SCK
lead zeros may ignore, example: PIGRCDS (default)
============ CONNECTION SCHEME ===========
CONTACTS L-card AVR
P ------------------------------| VCC
C ------------------------------| XTAL1
R ------------------------------| RESET
D ------------------------------| MOSI
S -------------#----------------| SCK
I ----- | --------| MISO
| | | |
--- --- --- |
| | 1k | | 1k | | 1k |
| | | | | | |
--- --- --- |
| | | |
LED >> LED >> LED >> |
| | | |
G ----#--------#--------#-------| GND
============ CONNECTION SCHEME ===========
Для контроля процесса, светодиоды повесил на все линии.
Далее остается преобразовать hex с помощью этой программы в текстовый файл, который надо отправить в lproc,
предварительно подключив цифровые выходы карточки непосредственно к процессору.
Кусок такого файла для примера:
▼Скрытый текст
## SOURSE HEX FILE NAME:## main.hex
## 2015-11-05 20:12:36
## Initial pins: 000000000PIGRCDS
## P - power VCC
## I - read info control - ON when read each byte
## G - ground GND
## R - reset RESET
## C - clock XTAL1
## D - data MOSI
## S - sinc SCK
##0000 0000 0PIG RCDS
## START
0000 0000 0000 0000
## POWER ON
0000 0000 0100 1000
## several clocks
0000 0000 0100 1100
0000 0000 0100 1000
0000 0000 0100 1100
0000 0000 0100 1000
## PROGRAM MODE ON
## reset down
0000 0000 0100 0000
## several clocks
0000 0000 0100 0100
0000 0000 0100 0000
0000 0000 0100 0100
0000 0000 0100 0000
## send program command
0000 0000 0100 0010 #.1010
0000 0000 0100 0011
0000 0000 0100 0000
0000 0000 0100 0001
0000 0000 0100 0010
0000 0000 0100 0011
0000 0000 0100 0000
0000 0000 0100 0001
0000 0000 0100 0010 #.1100
0000 0000 0100 0011
0000 0000 0100 0010
0000 0000 0100 0011
0000 0000 0100 0000
0000 0000 0100 0001
0000 0000 0100 0000
0000 0000 0100 0001
0000 0000 0100 0000 #.0101
0000 0000 0100 0001
0000 0000 0100 0010
0000 0000 0100 0011
0000 0000 0100 0000
0000 0000 0100 0001
0000 0000 0100 0010
0000 0000 0100 0011
0000 0000 0100 0000 #.0011
0000 0000 0100 0001
0000 0000 0100 0000
0000 0000 0100 0001
0000 0000 0100 0010
0000 0000 0100 0011
0000 0000 0100 0010
0000 0000 0100 0011
0000 0000 0100 0000 #.0000
0000 0000 0100 0001
0000 0000 0100 0000
0000 0000 0100 0001
0000 0000 0100 0000
0000 0000 0100 0001
0000 0000 0100 0000
0000 0000 0100 0001
0000 0000 0100 0000 #.0000
0000 0000 0100 0001
0000 0000 0100 0000
0000 0000 0100 0001
0000 0000 0100 0000
0000 0000 0100 0001
0000 0000 0100 0000
0000 0000 0100 0001
0000 0000 0100 0000 #.0000
0000 0000 0100 0001
0000 0000 0100 0000
0000 0000 0100 0001
0000 0000 0100 0000
0000 0000 0100 0001
0000 0000 0100 0000
0000 0000 0100 0001
0000 0000 0100 0000 #.0000
0000 0000 0100 0001
0000 0000 0100 0000
0000 0000 0100 0001
0000 0000 0100 0000
0000 0000 0100 0001
0000 0000 0100 0000
0000 0000 0100 0001
.... и так далее
Прошивку делал на 1 кГц. То есть, пауза между двумя посылками составляет 1 мс.
Программа успешно прошла в процессор и заработала.
Пробовал повысить скорость до 10 кГц, но прироста в скорости прошивки добиться не удалось.
Примерная скорость загрузки 1 кБ составляет 2 минуты.
Медленно, но для того чтобы сделать первый программатор, можно и подождать.
Конечно в дальнейшем не собираемся программировать таким способом, но если таковой возникнет, то можно предположить что мы напишем полноценный L-card программатор, и не в последовательном а в параллельном режиме, что должно дать прирост в скорости прошивки примерно раз в 25.
Ну и конечно из описанного способа работы с контроллером может получиться хорошая лабораторная работа для студентов.