Дали мне на обследование пару контроллеров на ATmega168 TQFP32, однократно запрограммированных по SPI, после чего эта функция у них умерла. Те кто дал, говорят что попались плохие микросхемы фирмы ATMEL и есть еще. Я не волшебник, я только учусь, но хочу установить истинную причину, поэтому вынужден обратиться к коллективному разуму, чтобы сделать это еще в этой жизни.
Исходные данные:
- по включению питания контроллеры живут своей внутренней жизнью, периодически сигнализируя об этом через штатные светодиоды;
- обращение через систему PonyProg к контроллерам по SPI с низким уровнем RESET, c генерацией SCK и MOSI, при неиспользованном в конструкции выводе SS не приводит к активности MISO, который все время имеет низкий слаботочный уровень, поэтому сообщение обслуживающей программы DEVICE UNKNOUN логично.
- делаю параллельный программатор для AVR, аналогичный ELM-ChaN, проверяю его на ATmega8 DIP28 с программой под DOS, все декеларируемые автором команды работают.
- не выпаивая микросхему из контроллера, подпаиваю к ней 20 проводов и подключаю к параллельному программатору;
- DEVICE определяется, FUSE, CAIBRATE, PROGRAM читаются, но автор программы почему-то не отображает состояние битов защиты, да и команды на их чтение в обслуживающей программе нет;
- FUSE прочитались следующие:
L 1110 1111 SUT0=0
H 1001 1111 DWEN=0, SPEN=0
X 001 BOOTSZ1=0, BOOTSZ0=0
- пытаюсь выключить DWEN, но бит не стирается;
- пытаюсь изменить другие FUSE - они не изменяются;
- пытаюсь изменить биты защиты, а вдруг прочитается весь байт защиты, увы не читается;
- делаю как книжка пишет: стираю кристалл, а значит и биты защиты;
- PROGRAM видно что стерлась, биты защиты авторская программа не показывает, остальное без изменения;
- опять пытаюсь изменить FUSE - они не изменяются;
- иду в знакомую контору на промышленный программатор, подключаю как ATmega168 DIP28, но с контроллерными потрохами, дающими небольшие утечки по выводам. Программа останавливает процесс на ошибке подключения, видать считает что лишний милиампер это смертельно.
Дальнейшие размышления:
- я зашел во временный тупик, надо учить технику, но времени нет, старый уже. но припоминаю, что даже если тебя съели все равно есть два выхода;
- так и в этой ситуации, либо cписать проблему на ATMEL, которая получается выпускает и продает плохие микросхемы, либо наоборот, делает супер, ибо их один ГУРУ может так запрограммировать что сто таких как я их даже стереть не смогут. Может задействовано самопрограммирование из недоступной секции, восстанавливающее защиту по включению питания, блокируя доступ к конфигурационным байтам, а может еще чего;
- хоть это и мелочь в жизни, но истинную причину хочется узнать, может ФОРУМ поможет, может ATMEL, а может со временем сам разберусь, но хочется побыстрее.
