AVR не отвечает. Что делать?

dmitryu

В pdf-ке описан способ выхода и из этой ситуации.

Volante24
dmitryu:

В pdf-ке описан способ выхода и из этой ситуации.

Есть способ, использующий только ISP, или здесь нужно параллельное программирование? Можно ссылку на страницу в
pdf-ке?

Эксперты, не мог бы кто-нибудь из вас перевести PonyProgовские фьюзы и лок-биты на исходный язык AVR? А то совершенно непонятно, что чему соответствует, делаешь как какое-то заклинание…

dmitryu

Только параллельное.

Галочка = 0 = programmed

Volante24
dmitryu:

Только параллельное.

Галочка = 0 = programmed

Ну да, как раз и читал эти страницы, и заключил, что перепрограммировать, если что-то произошло с RESET, не удастся…

Боюсь, что в самом деле капут. Этот гад PonyProg у меня иногда самопроизвольно чекил все биты. Почему-то когда их пытаешься установить, он, негодяй, похоже сначала без спросу читает сам чип, и если он не читается, то он все записывает нулем (чекит). Вот, возможно это и произошло в какой-то момент, а я этого не заметил и нажал “усе равно пытайся записать”, или что-то похожее…

Volante24
dmitryu:

В pdf-ке описан способ выхода и из этой ситуации.

Я вот только не понял со страницы 112 – похоже, подавая +12в на RESET можно его (RESET пин) как-то возвращать к жизни. Может, попробовать подать на него эти +12 вольт и потом пытаться программировать? Если я правильно понял, все эти манипуляции работают для параллельной моды, но кто его знает… Я ведь могу переделать мой простенький программатор так, чтобы на RESET подавалось 0-12в вместо 0-Vcc, это-то несложно. Может такое сработать?

avalanch

Возможно еще что испортились биты конфигурации и задано тактирование от внешнего генератора. Попробуйте на OSC1 дать клок от внешнего генератора 1-4МГц и заново прошить ПониПрогом. У самого была такая ситуация, только с ATMEGA8.

PigTail
Volante24:

Если я правильно понял, все эти манипуляции работают для параллельной моды, но кто его знает… Может такое сработать?

Очень сомнительно, скорее +12 загоняют в паралельную моду…

abalex
Volante24:

Я вот только не понял со страницы 112 – похоже, подавая +12в на RESET можно его (RESET пин) как-то возвращать к жизни. Может, попробовать подать на него эти +12 вольт и потом пытаться программировать? Если я правильно понял, все эти манипуляции работают для параллельной моды, но кто его знает… Я ведь могу переделать мой простенький программатор так, чтобы на RESET подавалось 0-12в вместо 0-Vcc, это-то несложно. Может такое сработать?

Если ничего не путаю:
Есть отдельный режим высоковольтного ( параллельного ) программирования ( нужен, в основном, для выхода из вот таких тупиковых ситуаций путем полного стирания процессора и потом записи нужной комбинации битов конфигурации ). Как это делать - алгоритм там же ниже на стр. 114. Когда это будет сброшено - можно будет программировать обычным образом ( хотя и при высоковольтном ( с использованием 12 В ) можно все записать ).
Если просто 12 вольт подать - видимо, просто так ( без использования именно нужного алгоритма ) не получится ( хотя если есть возможность написать свою программу, пусть и на Бейсике, то и написать этот алгоритм - главное, чтобы работало не слишком медленно, т.к. в алгоритме есть ограничения по времени; и проводов для работы нужно больше, хотя для однократного стирания м.б. можно на чем-то сэкономить, подав “0” или “1” постоянно, а не от программатора ).
Источник для 12 вольт - там вроде достаточно очень слабого ( 1 мА ), т.к. он нужен только для информации процессору, что с ним вот таким способом будут работать.

Chekhov

Не уточните ли, как именно вы МК программировали ?
Просто у меня есть сдохшая мега8, которая вроде как исполняет последнюю загруженную в неё программу, но шиться не хочет.

Естественно пробовал и ISP и параллельный - оба рабочие ( точно!!! ).

На каком-то форуме встретил похожую историю - человек просто сначала включал питание проггера, а потом втыкал ISP разьём. Он убил свою мегу аж после четвёртой перепрошивки.

Может и у вас что-то подобное ?

Volante24
Chekhov:

Не уточните ли, как именно вы МК программировали ?
Просто у меня есть сдохшая мега8, которая вроде как исполняет последнюю загруженную в неё программу, но шиться не хочет.

Естественно пробовал и ISP и параллельный - оба рабочие ( точно!!! ).

На каком-то форуме встретил похожую историю - человек просто сначала включал питание проггера, а потом втыкал ISP разьём. Он убил свою мегу аж после четвёртой перепрошивки.

Может и у вас что-то подобное ?

Сейчас уже трудно сказать, как было в последний день. Вполне может быть, что и так. Припоминаю, что в Datasheet написано, что на пинах должно быть не выше, чем Vcc+0.3V (кроме RESET). Если включать разъем после питания программатора, то не исключено, что на какие-то миллисекунды Vcc еще не подается, а остальные пины уже 4.5V. Вы на это намекаете? Как-то никогда это серьезно не рассматривал. Ведь на другие пины подается всего несколько миллиампер!

Как конкретно делал в последний раз я действительно не могу воссоздать. Но накануне точно делал и так и этак, причем поначалу точно несколько раз сначала давал питание на программатор, а уж потом подсоединял его к схеме.

Неужели в этом может быть проблема? Тогда это точно промашка ATMELа, так не должно бытьб или уж об этом должно предупреждаться крупным шрифтом с восклицательными знаками!

Volante24

В общем, попытка реанимации электрошоком (подавая внешний клок от ВЧ генератора сигналов) ни к чему не привела, как не видел его PonyProg, так и не видит 😦. А выпаивать 20 мелких пинов и впаивать обратно зело не хочется. Поэтому попробую последнее средство: стереть все и записать правильный фьюз параллельным образом 😃. Наверное, попробую сделать это с помощью другого ATTINY26L (в DIP-20): у того в наличии 8 пинов Порта А и 7 пинов Порта В, вроде, должно хватить для записи нужной последовательности импульсов для трех команд: Chip Erase, Write Fuse High Byte, Write Fuse Low Byte. А RESET подам и уберу вручную, или синхронно с питанием 4.5V.

В связи этим, большая просьба к знающим и понимающим : не могли бы выложить точную последовательность байтов, которую нужно запихнуть в микроконтроллер для выполнения этой процедуры (для получения default configuration)? Я бы тогда запрограммировал имеющийся Атмель на их выдачу, отладил по тактам в AVR Stiudio и попробовал таким образом реанимировать впаяный контроллер, авось после этого он начнет разговаривать с PonyProgом…

Chekhov

Сам не знаю, как делать, но вот что скажу :
Защитные диоды внутри МК держат 1-2 ма.

Нужно выполнить 2 инструкции - вход в режим программирования и Erase
Это описано на 121-123 страницах мануала на tiny26.

Возможно вам в этом поможет аппноут AVR910 и AVR911 (допустим с gaw.ru), который описывает работу конкретного и стандартного атмеловского программатора, правда о совметсимости его с tiny26 ничего сказать не могу.

AVR911 - там вроде и тексты на Си должны быть.

jonison
Volante24:

В общем, попытка реанимации электрошоком (подавая внешний клок от ВЧ генератора сигналов) ни к чему не привела, как не видел его PonyProg, так и не видит 😦. А выпаивать 20 мелких пинов и впаивать обратно зело не хочется. Поэтому попробую последнее средство: стереть все и записать правильный фьюз параллельным образом 😃. Наверное, попробую сделать это с помощью другого ATTINY26L (в DIP-20): у того в наличии 8 пинов Порта А и 7 пинов Порта В, вроде, должно хватить для записи нужной последовательности импульсов для трех команд: Chip Erase, Write Fuse High Byte, Write Fuse Low Byte. А RESET подам и уберу вручную, или синхронно с питанием 4.5V.

В связи этим, большая просьба к знающим и понимающим : не могли бы выложить точную последовательность байтов, которую нужно запихнуть в микроконтроллер для выполнения этой процедуры (для получения default configuration)? Я бы тогда запрограммировал имеющийся Атмель на их выдачу, отладил по тактам в AVR Stiudio и попробовал таким образом реанимировать впаяный контроллер, авось после этого он начнет разговаривать с PonyProgом…

Даже если у тебя и получится написать прогу для второго чипа мало верится что это поможет
прочитай внимательно ДШ по параллельному программированию АТМЕЛ
насколько я знаю поней spien бит снять нельзя
Единственное что ту мог сделать это переключить тактовый генератор на extclk
а откуда подавал внешний клок?
возьми любое устр-во на АВР и с его генератора подай на этот чип
прежде чем пытаться писать свой параллельный программатор разберись
с имеющимся последовательным поставь Codevision и используй stk200-300
😉

Chekhov

Присоединяюсь.
Лучше тогда лучше поставьте у другого МК ШИМ на 1 МГЦ и используйте его как генератор совместно с stk200-300. Может откликнется.

Volante24
jonison:

Даже если у тебя и получится написать прогу для второго чипа мало верится что это поможет
прочитай внимательно ДШ по параллельному программированию АТМЕЛ
насколько я знаю поней spien бит снять нельзя
Единственное что ту мог сделать это переключить тактовый генератор на extclk
а откуда подавал внешний клок?
возьми любое устр-во на АВР и с его генератора подай на этот чип
прежде чем пытаться писать свой параллельный программатор разберись
с имеющимся последовательным поставь Codevision и используй stk200-300
😉

Ничего не понял…

Я спрашиваю про последовательность БАЙТОВ для параллельного программирования (исполнения трех команд: Chip Erase и Write Fuses). Именно для программирования тонких деталей, которые могут не меняться через ISP.

Так я читал уже несколько раз этот datasheet про параллельное; почему это не поможет?

Исходно при программировании я никакого клока не подавал, чип использовал внутренний клок. Сегодня попробовал подавать внешний меандр с цифрового генератора на пин 7 – частота 3МГц (пробовал и меньше), амплитуда 3В (пробовал и меньше, и больше). Ничего не помогало. Чем подача клока с другого АВРа или с Codevision лучше, чем подача меандра (я пробовал и синус) с внешнего генератора? И как я могу разобраться с имеющимся последовательным программатором, если он ничего не выдает?

Правильно я понимаю, что Вы говорите, что не мог я PonyProgом переключить RESET на аутпут и тем самым дизэйблить последовательное программирование, что бы там ни происходило? То есть, если дело не в клоке (а с генератором я вроде бы проверил, что не в клоке), то конфигурация RESET пина не причем, а просто грубо физически что-то накрылось с самим чипом, и ничего с ним больше сделать нельзя, кроме как выкинуть на помойку (А для этогог мне нужно прежде его выпаять… 😈)

Я Вас правильно интерпретировал?

Volante24
jonison:

на тему параллели kazus.ru/forum/topics/f_114958.html#114958

По этой ссылке какая-то фигня, на хрена мне разводки платы в Спринте? Я просто хочу сделать нечто, что мне один (или два, три – ну не больше пяти) раз сможет вычистить AVR и сделать его вновь пригодным для ISP. У меня запросы минимальные! А плата с DIP-гнездом для ATTINY26, питанием, последовательным программатором, несколькими LED и удобными выводами со всех его 20 пинов у меня уже есть, специально паял три года назад.

Наверное, нужно добавить, что с PonyProgом я использую железо, которое, похоже, называется SI-Prog 2.2 на их сайте – попросту говоря, диодный ограничитель уровня сигналов и транзисторный инвертер RESETа

Volante24
jonison:

насколько я знаю поней spien бит снять нельзя
Единственное что ту мог сделать это переключить тактовый генератор на extclk
😉

Ну хорошо, если RSTDISBL и SPIEN в Пони (и вообще в ISP) недоступны, то что насчет Lock2 и Lock 1, которые меняются и, похоже, могли запрограммироваться. Будут ли при этом те же симптомы, что я описываю?

Chekhov

Даже при установленных битах защиты МК должен определяться. ЭТО ТОЧНО.
Но если вы уверены, что есть нормальный внутренний клок, то или МК сожжён или произошел сбой при программировании при котором отключился ISP или RESET, что вообще говоря маловероятно.

И я так думаю, что пока МК стоит на плате - параллельный программатор бесполезен.

Chekhov

1010 1100 0101 0011 xxxx xxxx xxxx xxxx - Programming Enable
1010 1100 100x xxxx xxxx xxxx xxxx xxxx - Chip Erase
1010 1100 1010 1000 xxxx xxxx xxx1 0111 - Write Fuse High Bits (последний нолик = SPI enable)
1010 1100 1010 0000 xxxx xxxx 1110 0001 - Write Fuse Bits
Эта последовательность команд должна вернуть чип в первоначальное состояние.
иксы я так понял - ставьте что хотите( написано don’t care )

(ЭТО ВСЁ КОНЕЧНО ДЛЯ ISP)