|
Программирование ATtiny12L |
|
|
|
Oct 19 2006, 14:27
|
Участник

Группа: Свой
Сообщений: 38
Регистрация: 19-02-06
Из: Челябинск
Пользователь №: 14 507

|
Есть ATtiny12L в ней уже что-то зашито. Подключил я её к LPT порту, пытаюсь запрогамить, используя режим Low-voltage Serial Downloading: посылаю комманду "Programming Enable", в ответ получаю ff ff ff ff (как я понимаю должно быть xx xx 58 xx). В чём может быть проблемма? В даташите написанно , что если запрогрмирован FUSE RSTDISBL, то перепрогаммировать можно только в режиме "High-voltage Serial Programming", но этот вывод вроде используется в устройстве именно как ресет, т.е. FUSE RSTDISBL похоже незапрограммирован. Могла ли микросхема просто выйти из строя, в результате перегрева(один нехороший человек пытался отпаять её 40 ватным паяльником)? Или существуют другие причины, по которым она может так себя вести?
На счёт перегрева я похоже сморозил глупость!. Но может есть какие-нибуди другие внешние факторы, которые могли бы повлиять на её работоспособность?
Сообщение отредактировал platerx - Oct 19 2006, 14:41
|
|
|
|
|
Oct 19 2006, 18:12
|
Участник

Группа: Свой
Сообщений: 38
Регистрация: 19-02-06
Из: Челябинск
Пользователь №: 14 507

|
Софтом я пользуюсь своим, написанным "на коленке". Вроде всё делаю по даташиту: т.е: Подаю напяжение питания, на ресете, и SCK при этом ноль, затем жду 50мс. Затем вывожу последавательно 1010 1100 , 0101 0011 , 0000 0000, 0000 0000, читая по заднему фронту, и получаю в ответ только "1". Все временные интервалы взяты из даташита.
|
|
|
|
|
Oct 20 2006, 18:02
|
Участник

Группа: Свой
Сообщений: 38
Регистрация: 19-02-06
Из: Челябинск
Пользователь №: 14 507

|
Закольцовывать пробовал, всё ОК. Тактирование от внешнего RC генератора Tsck прововал увеличиват до 500мс - ни чего не изменилось. Я тоже склоняюсь к мысли, что надо взять заведомо рабочий чип и попробывать с ним, но это минимум через неделю.
|
|
|
|
|
Oct 20 2006, 20:28
|

кекс
     
Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326

|
Если у вас задача запрограммировать чип - то проще всего взять готовый рабочий программатор, и запрограммировать чип. Если задача написать свой софт для программирования чипа, то и здесь готовый программатор не будет лишним (хотя бы для проверки). Цитата Затем вывожу последавательно 1010 1100 , 0101 0011 , 0000 0000, 0000 0000, читая по заднему фронту не надо ничего читать по заднему фронту этой команды. Этой последовательностью вы переводите чип в режим программирования, и он вам не должен ничего "отвечать". После входа в режим программирования сделайте задержку ~100ms. Для чтения сигнатуры используйте команды чтения сигнатуры: 0x30 0x00 0x00 RR 0x30 0x00 0x01 RR 0x30 0x00 0x02 RR на месте RR - ответ чипа.
|
|
|
|
|
Oct 21 2006, 08:24
|
Участник

Группа: Свой
Сообщений: 38
Регистрация: 19-02-06
Из: Челябинск
Пользователь №: 14 507

|
2defunct: Вот выдержки из даташита: Цитата When writing serial data to the ATtiny12, data is clocked on the rising edge of SCK. When reading data from the ATtiny12, data is clocked on the falling edge of SCK. Может я не правильно это понимаю, но в первом абзаце говориться, что при записи данных в мискросхему, они пишуться по переднему фронту, а читаются по заднему фронту. Цитата Wait for at least 20 ms and enable serial programming by sending the Programming Enable Serial instruction to the MOSI (PB0) pin.
The serial programming instructions will not work if the communication is out of synchronization. When in sync, the second byte ($53) will echo back when issuing the third byte of the Programming Enable instruction. А тут как я понимаю написанно что при посылке команды "Programming Enable " в она должна возвратить второй байт этой команды, во время посылки третьего. Может я что то не так понимаю ? Команды чтения сигнатур я тоже посылал в ответ 0xff
|
|
|
|
|
Oct 22 2006, 04:11
|

Гуру
     
Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659

|
Цитата(platerx @ Oct 20 2006, 02:12)  Софтом я пользуюсь своим, написанным "на коленке". Вроде всё делаю по даташиту: т.е: Подаю напяжение питания, на ресете, и SCK при этом ноль, затем жду 50мс. Затем вывожу последавательно 1010 1100 , 0101 0011 , 0000 0000, 0000 0000, читая по заднему фронту, и получаю в ответ только "1". Все временные интервалы взяты из даташита. С чего вы взяли, что 0х58? Хотя в данной (двоичной) последовательности у Вас, как положенно 0х53... Вот как делаю я: Код UCHAR err = ACK;
// синхронизируемся с подключенным чипом ReleasePorts(); // отключаем порты CatchPorts(); // подключаем порты к ISP AVR_DELAY_RESET(); // задержка // 32 цикла попыток засинхронизироваться с программируемым МК for(UCHAR c = 0; c < 32; c++) { // пытаемся вывести чип в режим программирования // при посылке 3-го байта в SPI чип должен вернуть код предыдущей посылки UCHAR ctrl_byte = AVR_PROG_EN(); ExSPI(0x00); // получили верный контрольный байт - синхронизация выполнена if(0x53 == ctrl_byte) goto m1; // если нет валидного возврата, то сдвигаем при каждой попытке строб SET_SCK(); __delay_cycles(600); // задержка 50 мкс CLR_SCK(); __delay_cycles(600); } // если мы не засинхронизировались, // считаем, что устройство не найдено ReleasePorts(); // отключаем порты err = NACK; // посылаем код ошибки m1: PutChar(err);
--------------------
|
|
|
|
|
Oct 23 2006, 19:53
|
Участник

Группа: Свой
Сообщений: 38
Регистрация: 19-02-06
Из: Челябинск
Пользователь №: 14 507

|
Цитата С чего вы взяли, что 0х58? Хотя в данной (двоичной) последовательности у Вас, как положенно 0х53... Ой, конечно 0x53, я просто опечатался. Схему я проверил ещё пару раз, вроде всё нормально, но не работает, и всё тут! За новой микросхемой ехать не охота, модифицировал, я свой самопальный программатор для работы в высоковольтном режиме, переписал прогру. Посылаю ему команду чтения сигнатуры, он возвращяет первый байт 0x0e, должно быть 0x1e, следующие два байта правильные (0x90, и 0x05). С чем это может быть связано? Может микросхема вышла из строя ?
Сообщение отредактировал platerx - Oct 23 2006, 20:07
|
|
|
|
|
Oct 23 2006, 20:32
|
Гуру
     
Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521

|
Цитата(platerx @ Oct 23 2006, 22:53)  Цитата С чего вы взяли, что 0х58? Хотя в данной (двоичной) последовательности у Вас, как положенно 0х53... Ой, конечно 0x53, я просто опечатался. Схему я проверил ещё пару раз, вроде всё нормально, но не работает, и всё тут! За новой микросхемой ехать не охота, модифицировал, я свой самопальный программатор для работы в высоковольтном режиме, переписал прогру. Посылаю ему команду чтения сигнатуры, он возвращяет первый байт 0x0e, должно быть 0x1e, следующие два байта правильные (0x90, и 0x05). С чем это может быть связано? Может микросхема вышла из строя ? Когда-то давно делал и смутно сейчас помню. Программатор могу выложить, но Вы ведь всё равно не будете разбираться. Помню, что в процедуру инициализации входил несколько раз. Тогда устойчиво работала. А вообще требуется максимально близко к даташиту. Ну и когда она "вошла", то ошибок я не помню. Чтобы вместо 1e 0e выдавала... %99 гарантирую, что какая-то ошибка.
|
|
|
|
|
Oct 28 2006, 07:23
|
Участник

Группа: Свой
Сообщений: 38
Регистрация: 19-02-06
Из: Челябинск
Пользователь №: 14 507

|
Что самое странное, флеш читается и пришется абсолютно нормально. Могла ли по какой-то причине измениться сигнатура? Праграмму прикрепил.
Прикрепленные файлы
main.rar ( 1.35 килобайт )
Кол-во скачиваний: 56
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|