Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Стирание Кристала
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
MACTEP
Подскажите схемку и прошивку параллельного программатора, для того чтобы полностью стереть кристалл, а то при перепрошивки пони глюканула и прошила мне фузы с запретом на прошивку через SPI.
defunct
Цитата(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, однако оба устройства делал для личного исользования и схему в электронном варианте не рисовал...
MACTEP
Огромное спасибо, я знаю что это можно взять с датащита, но т.к. времени очень мало прошу кто делал выложите схемку и код прошивки, либо пошлите мне на email: pdv@k66.ru, заранее спасибо.

Вот какая у меня ситуация:

При программировании микроконтроллера через SPI произошел сбой. После сбоя контроллер перестал прошиваться через SPI. Подозрение на то, что случайно выставился бит запрета ISP в конфигурации. Для восстановления необходим параллельный программатор (который 12 вольт на RST подает).
Old1
Цитата(MACTEP @ Mar 3 2006, 23:54) *
Подскажите схемку и прошивку параллельного программатора, для того чтобы полностью стереть кристалл, а то при перепрошивки пони глюканула и прошила мне фузы с запретом на прошивку через SPI.

Вы к сожалению не указали какой конкретно контроллер вы используете. Поэтому рискну дать ссылку на "Программу для разрешения SPIEN fuse у МК Tiny15", может быть пригодится. Сам эту прогу не пользовал, поэтому чтобы выяснить насколько эта прога применима к вашему случаю, сравните алгоритм параллельного программирования Tiny15 и вашего контроллера, или на худой конец задайте вопрос автору проги.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.