Цитата(MACTEP @ Mar 3 2006, 21:54)

Подскажите схемку и прошивку параллельного программатора, для того чтобы полностью стереть кристалл, а то при перепрошивки пони глюканула и прошила мне фузы с запретом на прошивку через SPI.
схему можно сделать самостоятельно пользуясь разделом даташита "Parallel Programming Parameters, Pin Mapping, and Commands" к интересующему вас контроллеру. Алгоритм параллельного программирования там же. Особых сложностей - нет. Из особенностей схемы можно отметить необходимость одновременной подачи 12V на Reset и 5V на Vcc, с заранее выставленным кодом перевода МК в режим программирования. Управление напряжениями проще всего сделать на реле.
В качестве программатора можно применить например mega16, набросок распиновки программатора и функций для выполнения кода стирания:
Код
; Распиновка устройства
; Порт A полностью подключен к управлющим сигналам
.equ PAGEL = 7;
.equ XA1 = 6;
.equ XA0 = 5;
.equ BS1 = 4;
.equ NOTWR = 3;
.equ NOTOE = 2;
.equ BS2 = 1;
.equ BS2T = XA1;
; Порт B - XTAL и RDY/NOTBUSY
.equ XTAL = 0;
.equ RDY = 1;
.def AH = R25
.def AL = R24
.def CH = R21
.def CL = R20
; Порт C - полностью данные
; Порт D - VPP и UART
.equ VPP = 6; пин стробирующего сигнала CS
.....
;Начало программы
; <- Настройка портов ввода/вывода
ldi AL, $1; Порт B настраиваем пока что на ввод
out DDRB, AL;
ldi AL, 0;(1 << NOTOE)|(1 << NOTWR)
out PortA, AL
ldi AL, $FF
out DDRA, AL
ldi AL, $FF
out DDRC, AL
ldi AL, $F0
out DDRD, AL
....
....
; Функции для работы программатора..
; Задержка..
WaitAFew:
ldi CH, $F0
L1:
clr CL
dec CL
brne L1
dec CH
brne L1
ret
Wait_For:
in AL, PinB
andi AL, 1 << RDY
breq wait_for
ret
;--------------------------------------------
; загружает команду в чип
; <-- AL - код команды
LoadCommand:
out PortC, AL
ldi AL, (1 << NOTOE)|(1 << NOTWR)|(1 << XA1)
out PortA, AL
sbi PortB, XTAL
rcall WaitAFew
cbi PortB, XTAL
rcall WaitAFew
ret
;---------------------------------------------
; Выполняет загруженную команду
ExecuteCommand:
ldi AL, (1 << NOTOE)|(1 << NOTWR)
out PortA, AL
cbi PortA, NOTWR
rcall WaitAFew
sbi PortA, NOTWR
rcall WaitAFew
rcall Wait_For
ret
EnterExtremeProgMode:
clr AL
out PortB, AL
out PortC, AL
out PortD, AL
out PortA, AL
sbi PortD, Vpp
rcall WaitAFew
ret
ChipErase:
rcall EnterExtremeProgMode
ldi AL, $80; <-- chip erase
rcall LoadCommand
rcall ExecuteCommand
ret
PS: делал для AVR параллельный программатор на меге16 и стиратель фузов на AT90S2313/AT89S2051, однако оба устройства делал для личного исользования и схему в электронном варианте не рисовал...