|
ATTINY2313 ISP Device code = 0x0 |
|
|
|
Dec 15 2016, 09:43
|
Группа: Участник
Сообщений: 13
Регистрация: 5-09-16
Пользователь №: 93 224

|
Коллеги, столкнулся с забавной проблемой - при попытке считать сигнатуру устройства с attiny2313-20PU черезе SPI возвращает нули. Пробовал двумя путями: 1. Через wizardprog87i (выставив при этом тип микросхемы atmega8), подсоединив к нужным ногам его ICSP-разъем. Выдаёт "Код устройства: 00 00 00". 2. Руками по хардкору, как описано тут - https://habrahabr.ru/post/152052/. Схема корректно отрабатывает команду "program enable" - возвращает правильный отклик. Команда чтения байта из сигнатуры устройства возвращает всегда нули. При этом через тот же wizadprog в параллельном режиме контроллер определяется и программируется корректно, программа исполняется нормально. Есть идеи, что может быть не так с ISP-программированием? P.S. Atmega8 в аналогичных условиях работает.
|
|
|
|
|
 |
Ответов
(1 - 13)
|
Dec 15 2016, 10:50
|
Группа: Участник
Сообщений: 13
Регистрация: 5-09-16
Пользователь №: 93 224

|
Цитата(Александр1 @ Dec 15 2016, 12:57)  Для начала попробуйте другой экземпляр МК 2313. Был случай на макете: вчера работал, а сегодня-нет. Поставил другой МК и все заработало. Я попробовал другой, симптомы те же: при параллельном программировании всё ОК, при ISP - не отдаёт идентификатор устройства. Скорее всего, это какая-то системная проблема понимания работы с протоколом SPI
|
|
|
|
|
Dec 16 2016, 17:22
|
Группа: Участник
Сообщений: 13
Регистрация: 5-09-16
Пользователь №: 93 224

|
Цитата(Александр1 @ Dec 16 2016, 10:07)  Бегло просмотрел руководство к Вашему программатору. Настройки заданы правильно? Частота ISP в 4 раза меньше тактовой МК? Кварц (или др. источник такта)на МК подключен? Кварца нет, контроллер работает от внутреннего осциллятора. Частота ISP-программирования в этом программаторе не выставляется. Впрочем, я руками точно не мог превысить 1/4 тактовой частоты
|
|
|
|
|
Dec 16 2016, 19:02
|
Группа: Участник
Сообщений: 13
Регистрация: 5-09-16
Пользователь №: 93 224

|
Кто-нибудь, кстати, в курсе - у разных версий 8-битных AVR-ов (attiny, atmega) протокол программирования по SPI различается чем-то, или он единый?
|
|
|
|
|
Dec 21 2016, 08:35
|
Группа: Участник
Сообщений: 13
Регистрация: 5-09-16
Пользователь №: 93 224

|
Цитата(Александр1 @ Dec 19 2016, 10:13)  Вы свой программатор видели в работе с 2313? Может, что с ПО? Попробуйте обновить ПО. Не совсем понял вопрос. У меня WizardProg87i, в параллельном режиме он нормально читает и прошивает контроллер. Только одно меня смущает - функция _delay_ms работает на этих контроллерах неправильно - завышает задержку в несколько раз. Сейчас замерял - при тактовой частоте в 1 МГц (от внутреннего осцияллтора) надо F_CPU выставлять в 500000 Гц, чтобы задержки были правильные.
|
|
|
|
|
Dec 21 2016, 09:40
|
Местный
  
Группа: Участник
Сообщений: 465
Регистрация: 13-05-15
Из: Запорожье
Пользователь №: 86 663

|
Цитата(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 МГц.
|
|
|
|
|
Dec 26 2016, 19:23
|
Группа: Участник
Сообщений: 13
Регистрация: 5-09-16
Пользователь №: 93 224

|
Цитата(Александр1 @ Dec 21 2016, 12:40)  Вы программировали 2313 через SPI раньше? Или это первое применение Вашего программатора для 2313 через SPI? Проблема возникла или она существовала и только сейчас обнаружена? Все немного сложнее. Дело в том, что этот программатор не поддерживает программирование контроллеров серии ATTINY через SPI. Атмеги - поддерижвает, а attiny только параллельно. Но я почитал datasheet`ы на контроллеры и умозаключил, что протоколы программирования по SPI у них совместимые. Отсюда у меня возникла идея, что можно попробовать программировать флеш-память attiny2313, настроив программатор на какую-нибудь атмегу, чтобы не вытаскивать каждый микросхему для перепрошивки. Кстати, у меня всё-таки получилось заставить программатор прочитать идентификатор устройства. Дело оказалось во фьюзах SUT0, SUT1 - времени запуска контроллера. Понятия не имею, в чем дело, но после конфигурирования самого быстрого времени старта контроллера его стал "видеть" программатор.
Сейчас попробую что-нибудь попрограммировать в него.После пары удачных попыток контроллер снова не читается Надо разбираться что к чему. Цитата(Александр1 @ Dec 21 2016, 12:40)  Откуда тактовая частота 1 МГц от внутреннего генератора? В 2313 два RC-генератора: 4 и 8 МГц. Но в новом МК запрограммирован бит CKDIV8, что делит тактовую частоту на 8. Возможно, 8 МГц делятся на 8 и получаете Ваши 1 МГц. А задержки устанавливаются для частоты 8 МГц. Да, так и есть. По умолчанию fuse`ы выставлены так, что он берет 8 МГц внутренний осциллятор и делит его на 8. Так получается 1Мгц, насколько я понимаю. Проверить кроме как миганием светодиода возможности не имею.
Сообщение отредактировал 0x7be - Dec 26 2016, 19:43
|
|
|
|
|
Dec 27 2016, 07:35
|
Местный
  
Группа: Участник
Сообщений: 465
Регистрация: 13-05-15
Из: Запорожье
Пользователь №: 86 663

|
Цитата(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, раз уж частота не устанавливается в программаторе. Может, хотя бы тип МК будет читаться без проблем.
|
|
|
|
|
Dec 27 2016, 18:46
|
Группа: Участник
Сообщений: 13
Регистрация: 5-09-16
Пользователь №: 93 224

|
Цитата(Александр1 @ Dec 27 2016, 10:35)  Уберите деление тактовой частоты на 8, раз уж частота не устанавливается в программаторе. Может, хотя бы тип МК будет читаться без проблем. Получилось подобрать фьюзы. 8 МГц от внутреннего осциллятора без делителя. Цитата(Александр1 @ Dec 27 2016, 10:35)  Протоколы совместимые. А как быть с адресацией? Вы выставите в параметрах ATmegaX, у которой 8 кБ или более, программатор (точнее, ПО к этому программатору) будет перебирать весь диапазон адресов для установленного МК. Для Tiny адресное пространство запрограммируется 4 раза. Что будет записано в МК? По итогам имею следующее - МК читается без проблем: тип, память программ, значения фьюзов. Но при записи происходит какая-то явная лажа - в память попадают откровенно мусорные данные. Пока не знаю почему, да и разбираться не собираюсь. Пришёл к выводу, что я хочу слишком странного
|
|
|
|
|
Dec 28 2016, 11:12
|
Местный
  
Группа: Участник
Сообщений: 465
Регистрация: 13-05-15
Из: Запорожье
Пользователь №: 86 663

|
Цитата(0x7be @ Dec 27 2016, 22:46)  ... при записи происходит какая-то явная лажа - в память попадают откровенно мусорные данные. Скорее всего, память МК записывается несколько раз: у TINY2313 2 кБ, а в ATmega от 8 кБ. При записи в память ATmega8, например, память TINY2313 будет перезаписана 4 раза.
|
|
|
|
|
Dec 30 2016, 16:15
|
Группа: Участник
Сообщений: 13
Регистрация: 5-09-16
Пользователь №: 93 224

|
Цитата(Александр1 @ Dec 28 2016, 14:12)  Скорее всего, память МК записывается несколько раз: у TINY2313 2 кБ, а в ATmega от 8 кБ. При записи в память ATmega8, например, память TINY2313 будет перезаписана 4 раза. Может быть, не знаю  Я тут на коленке собрал USBTinyISP на базе attiny2313, он прекрасно шьёт все мои avr-ы  Осталось перенести с макетки на плату, и будет мне счастье
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|