Перейти к содержанию
    

ATTINY2313 ISP Device code = 0x0

Коллеги,

столкнулся с забавной проблемой - при попытке считать сигнатуру устройства с attiny2313-20PU черезе SPI возвращает нули.

Пробовал двумя путями:

1. Через wizardprog87i (выставив при этом тип микросхемы atmega8), подсоединив к нужным ногам его ICSP-разъем. Выдаёт "Код устройства: 00 00 00".

2. Руками по хардкору, как описано тут - https://habrahabr.ru/post/152052/. Схема корректно отрабатывает команду "program enable" - возвращает правильный отклик. Команда чтения байта из сигнатуры устройства возвращает всегда нули.

 

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

 

Есть идеи, что может быть не так с ISP-программированием?

 

P.S. Atmega8 в аналогичных условиях работает.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для начала попробуйте другой экземпляр МК 2313.

Был случай на макете: вчера работал, а сегодня-нет. Поставил другой МК и все заработало.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для начала попробуйте другой экземпляр МК 2313.

Был случай на макете: вчера работал, а сегодня-нет. Поставил другой МК и все заработало.

Я попробовал другой, симптомы те же: при параллельном программировании всё ОК, при ISP - не отдаёт идентификатор устройства.

 

Скорее всего, это какая-то системная проблема понимания работы с протоколом SPI :(

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Бегло просмотрел руководство к Вашему программатору.

Настройки заданы правильно? Частота ISP в 4 раза меньше тактовой МК? Кварц (или др. источник такта)на МК подключен?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Бегло просмотрел руководство к Вашему программатору.

Настройки заданы правильно? Частота ISP в 4 раза меньше тактовой МК? Кварц (или др. источник такта)на МК подключен?

Кварца нет, контроллер работает от внутреннего осциллятора.

Частота ISP-программирования в этом программаторе не выставляется.

Впрочем, я руками точно не мог превысить 1/4 тактовой частоты :)

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Кто-нибудь, кстати, в курсе - у разных версий 8-битных AVR-ов (attiny, atmega) протокол программирования по SPI различается чем-то, или он единый?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вы свой программатор видели в работе с 2313? Может, что с ПО? Попробуйте обновить ПО.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вы свой программатор видели в работе с 2313? Может, что с ПО? Попробуйте обновить ПО.

Не совсем понял вопрос.

У меня WizardProg87i, в параллельном режиме он нормально читает и прошивает контроллер.

 

Только одно меня смущает - функция _delay_ms работает на этих контроллерах неправильно - завышает задержку в несколько раз.

Сейчас замерял - при тактовой частоте в 1 МГц (от внутреннего осцияллтора) надо F_CPU выставлять в 500000 Гц, чтобы задержки были правильные.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не совсем понял вопрос.

У меня WizardProg87i, в параллельном режиме он нормально читает и прошивает контроллер.

Вы программировали 2313 через SPI раньше? Или это первое применение Вашего программатора для 2313 через SPI? Проблема возникла или она существовала и только сейчас обнаружена?

 

...функция _delay_ms работает на этих контроллерах неправильно - завышает задержку в несколько раз.

Сейчас замерял - при тактовой частоте в 1 МГц (от внутреннего осцияллтора) надо F_CPU выставлять в 500000 Гц, чтобы задержки были правильные.

Откуда тактовая частота 1 МГц от внутреннего генератора? В 2313 два RC-генератора: 4 и 8 МГц. Но в новом МК запрограммирован бит CKDIV8, что делит тактовую частоту на 8. Возможно, 8 МГц делятся на 8 и получаете Ваши 1 МГц. А задержки устанавливаются для частоты 8 МГц.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вы программировали 2313 через SPI раньше? Или это первое применение Вашего программатора для 2313 через SPI? Проблема возникла или она существовала и только сейчас обнаружена?

Все немного сложнее. Дело в том, что этот программатор не поддерживает программирование контроллеров серии ATTINY через SPI. Атмеги - поддерижвает, а attiny только параллельно.

Но я почитал datasheet`ы на контроллеры и умозаключил, что протоколы программирования по SPI у них совместимые.

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

 

Кстати, у меня всё-таки получилось заставить программатор прочитать идентификатор устройства. Дело оказалось во фьюзах SUT0, SUT1 - времени запуска контроллера.

Понятия не имею, в чем дело, но после конфигурирования самого быстрого времени старта контроллера его стал "видеть" программатор.

 

Сейчас попробую что-нибудь попрограммировать в него.

После пары удачных попыток контроллер снова не читается :smile3046:

Надо разбираться что к чему.

 

Откуда тактовая частота 1 МГц от внутреннего генератора? В 2313 два RC-генератора: 4 и 8 МГц. Но в новом МК запрограммирован бит CKDIV8, что делит тактовую частоту на 8. Возможно, 8 МГц делятся на 8 и получаете Ваши 1 МГц. А задержки устанавливаются для частоты 8 МГц.

Да, так и есть. По умолчанию fuse`ы выставлены так, что он берет 8 МГц внутренний осциллятор и делит его на 8. Так получается 1Мгц, насколько я понимаю.

Проверить кроме как миганием светодиода возможности не имею.

Изменено пользователем 0x7be

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

... этот программатор не поддерживает программирование контроллеров серии ATTINY через SPI...

Вот и выяснилось.

 

...Но я почитал datasheet`ы на контроллеры и умозаключил, что протоколы программирования по SPI у них совместимые....

... можно попробовать программировать флеш-память attiny2313, настроив программатор на какую-нибудь атмегу...

Протоколы совместимые. А как быть с адресацией? Вы выставите в параметрах ATmegaX, у которой 8 кБ или более, программатор (точнее, ПО к этому программатору) будет перебирать весь диапазон адресов для установленного МК. Для Tiny адресное пространство запрограммируется 4 раза. Что будет записано в МК?

 

По умолчанию fuse`ы выставлены так, что он берет 8 МГц внутренний осциллятор и делит его на 8. Так получается 1Мгц, насколько я понимаю.

Уберите деление тактовой частоты на 8, раз уж частота не устанавливается в программаторе. Может, хотя бы тип МК будет читаться без проблем.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Уберите деление тактовой частоты на 8, раз уж частота не устанавливается в программаторе. Может, хотя бы тип МК будет читаться без проблем.

Получилось подобрать фьюзы. 8 МГц от внутреннего осциллятора без делителя.

 

Протоколы совместимые. А как быть с адресацией? Вы выставите в параметрах ATmegaX, у которой 8 кБ или более, программатор (точнее, ПО к этому программатору) будет перебирать весь диапазон адресов для установленного МК. Для Tiny адресное пространство запрограммируется 4 раза. Что будет записано в МК?

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

... при записи происходит какая-то явная лажа - в память попадают откровенно мусорные данные.

Скорее всего, память МК записывается несколько раз: у TINY2313 2 кБ, а в ATmega от 8 кБ. При записи в память ATmega8, например, память TINY2313 будет перезаписана 4 раза.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Скорее всего, память МК записывается несколько раз: у TINY2313 2 кБ, а в ATmega от 8 кБ. При записи в память ATmega8, например, память TINY2313 будет перезаписана 4 раза.

Может быть, не знаю :)

 

Я тут на коленке собрал USBTinyISP на базе attiny2313, он прекрасно шьёт все мои avr-ы :)

Осталось перенести с макетки на плату, и будет мне счастье :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...