Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: ATTINY2313 ISP Device code = 0x0
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
0x7be
Коллеги,
столкнулся с забавной проблемой - при попытке считать сигнатуру устройства с attiny2313-20PU черезе SPI возвращает нули.
Пробовал двумя путями:
1. Через wizardprog87i (выставив при этом тип микросхемы atmega8), подсоединив к нужным ногам его ICSP-разъем. Выдаёт "Код устройства: 00 00 00".
2. Руками по хардкору, как описано тут - https://habrahabr.ru/post/152052/. Схема корректно отрабатывает команду "program enable" - возвращает правильный отклик. Команда чтения байта из сигнатуры устройства возвращает всегда нули.

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

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

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

Александр1
Для начала попробуйте другой экземпляр МК 2313.
Был случай на макете: вчера работал, а сегодня-нет. Поставил другой МК и все заработало.
0x7be
Цитата(Александр1 @ Dec 15 2016, 12:57) *
Для начала попробуйте другой экземпляр МК 2313.
Был случай на макете: вчера работал, а сегодня-нет. Поставил другой МК и все заработало.

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

Скорее всего, это какая-то системная проблема понимания работы с протоколом SPI sad.gif
Александр1
Бегло просмотрел руководство к Вашему программатору.
Настройки заданы правильно? Частота ISP в 4 раза меньше тактовой МК? Кварц (или др. источник такта)на МК подключен?
0x7be
Цитата(Александр1 @ Dec 16 2016, 10:07) *
Бегло просмотрел руководство к Вашему программатору.
Настройки заданы правильно? Частота ISP в 4 раза меньше тактовой МК? Кварц (или др. источник такта)на МК подключен?

Кварца нет, контроллер работает от внутреннего осциллятора.
Частота ISP-программирования в этом программаторе не выставляется.
Впрочем, я руками точно не мог превысить 1/4 тактовой частоты sm.gif
0x7be
Кто-нибудь, кстати, в курсе - у разных версий 8-битных AVR-ов (attiny, atmega) протокол программирования по SPI различается чем-то, или он единый?
Александр1
Вы свой программатор видели в работе с 2313? Может, что с ПО? Попробуйте обновить ПО.
0x7be
Цитата(Александр1 @ Dec 19 2016, 10:13) *
Вы свой программатор видели в работе с 2313? Может, что с ПО? Попробуйте обновить ПО.

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

Только одно меня смущает - функция _delay_ms работает на этих контроллерах неправильно - завышает задержку в несколько раз.
Сейчас замерял - при тактовой частоте в 1 МГц (от внутреннего осцияллтора) надо F_CPU выставлять в 500000 Гц, чтобы задержки были правильные.
Александр1
Цитата(0x7be @ Dec 21 2016, 12:35) *
Не совсем понял вопрос.
У меня WizardProg87i, в параллельном режиме он нормально читает и прошивает контроллер.

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

Цитата(0x7be @ Dec 21 2016, 12:35) *
...функция _delay_ms работает на этих контроллерах неправильно - завышает задержку в несколько раз.
Сейчас замерял - при тактовой частоте в 1 МГц (от внутреннего осцияллтора) надо F_CPU выставлять в 500000 Гц, чтобы задержки были правильные.

Откуда тактовая частота 1 МГц от внутреннего генератора? В 2313 два RC-генератора: 4 и 8 МГц. Но в новом МК запрограммирован бит CKDIV8, что делит тактовую частоту на 8. Возможно, 8 МГц делятся на 8 и получаете Ваши 1 МГц. А задержки устанавливаются для частоты 8 МГц.
0x7be
Цитата(Александр1 @ Dec 21 2016, 12:40) *
Вы программировали 2313 через SPI раньше? Или это первое применение Вашего программатора для 2313 через SPI? Проблема возникла или она существовала и только сейчас обнаружена?

Все немного сложнее. Дело в том, что этот программатор не поддерживает программирование контроллеров серии ATTINY через SPI. Атмеги - поддерижвает, а attiny только параллельно.
Но я почитал datasheet`ы на контроллеры и умозаключил, что протоколы программирования по SPI у них совместимые.
Отсюда у меня возникла идея, что можно попробовать программировать флеш-память attiny2313, настроив программатор на какую-нибудь атмегу, чтобы не вытаскивать каждый микросхему для перепрошивки.

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

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

После пары удачных попыток контроллер снова не читается smile3046.gif
Надо разбираться что к чему.

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

Да, так и есть. По умолчанию fuse`ы выставлены так, что он берет 8 МГц внутренний осциллятор и делит его на 8. Так получается 1Мгц, насколько я понимаю.
Проверить кроме как миганием светодиода возможности не имею.
Александр1
Цитата(0x7be @ Dec 26 2016, 23:23) *
... этот программатор не поддерживает программирование контроллеров серии ATTINY через SPI...

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

Цитата(0x7be @ Dec 26 2016, 23:23) *
...Но я почитал datasheet`ы на контроллеры и умозаключил, что протоколы программирования по SPI у них совместимые....
... можно попробовать программировать флеш-память attiny2313, настроив программатор на какую-нибудь атмегу...

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

Цитата(0x7be @ Dec 26 2016, 23:23) *
По умолчанию fuse`ы выставлены так, что он берет 8 МГц внутренний осциллятор и делит его на 8. Так получается 1Мгц, насколько я понимаю.

Уберите деление тактовой частоты на 8, раз уж частота не устанавливается в программаторе. Может, хотя бы тип МК будет читаться без проблем.
0x7be
Цитата(Александр1 @ Dec 27 2016, 10:35) *
Уберите деление тактовой частоты на 8, раз уж частота не устанавливается в программаторе. Может, хотя бы тип МК будет читаться без проблем.

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

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

По итогам имею следующее - МК читается без проблем: тип, память программ, значения фьюзов. Но при записи происходит какая-то явная лажа - в память попадают откровенно мусорные данные. Пока не знаю почему, да и разбираться не собираюсь. Пришёл к выводу, что я хочу слишком странного sm.gif
Александр1
Цитата(0x7be @ Dec 27 2016, 22:46) *
... при записи происходит какая-то явная лажа - в память попадают откровенно мусорные данные.

Скорее всего, память МК записывается несколько раз: у TINY2313 2 кБ, а в ATmega от 8 кБ. При записи в память ATmega8, например, память TINY2313 будет перезаписана 4 раза.
0x7be
Цитата(Александр1 @ Dec 28 2016, 14:12) *
Скорее всего, память МК записывается несколько раз: у TINY2313 2 кБ, а в ATmega от 8 кБ. При записи в память ATmega8, например, память TINY2313 будет перезаписана 4 раза.

Может быть, не знаю sm.gif

Я тут на коленке собрал USBTinyISP на базе attiny2313, он прекрасно шьёт все мои avr-ы sm.gif
Осталось перенести с макетки на плату, и будет мне счастье sm.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2024 Invision Power Services, Inc.