[email protected] 0 15 декабря, 2016 Опубликовано 15 декабря, 2016 · Жалоба Коллеги, столкнулся с забавной проблемой - при попытке считать сигнатуру устройства с attiny2313-20PU черезе SPI возвращает нули. Пробовал двумя путями: 1. Через wizardprog87i (выставив при этом тип микросхемы atmega8), подсоединив к нужным ногам его ICSP-разъем. Выдаёт "Код устройства: 00 00 00". 2. Руками по хардкору, как описано тут - https://habrahabr.ru/post/152052/. Схема корректно отрабатывает команду "program enable" - возвращает правильный отклик. Команда чтения байта из сигнатуры устройства возвращает всегда нули. При этом через тот же wizadprog в параллельном режиме контроллер определяется и программируется корректно, программа исполняется нормально. Есть идеи, что может быть не так с ISP-программированием? P.S. Atmega8 в аналогичных условиях работает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
АлександрК 0 15 декабря, 2016 Опубликовано 15 декабря, 2016 · Жалоба Для начала попробуйте другой экземпляр МК 2313. Был случай на макете: вчера работал, а сегодня-нет. Поставил другой МК и все заработало. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
[email protected] 0 15 декабря, 2016 Опубликовано 15 декабря, 2016 · Жалоба Для начала попробуйте другой экземпляр МК 2313. Был случай на макете: вчера работал, а сегодня-нет. Поставил другой МК и все заработало. Я попробовал другой, симптомы те же: при параллельном программировании всё ОК, при ISP - не отдаёт идентификатор устройства. Скорее всего, это какая-то системная проблема понимания работы с протоколом SPI :( Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
АлександрК 0 16 декабря, 2016 Опубликовано 16 декабря, 2016 · Жалоба Бегло просмотрел руководство к Вашему программатору. Настройки заданы правильно? Частота ISP в 4 раза меньше тактовой МК? Кварц (или др. источник такта)на МК подключен? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
[email protected] 0 16 декабря, 2016 Опубликовано 16 декабря, 2016 · Жалоба Бегло просмотрел руководство к Вашему программатору. Настройки заданы правильно? Частота ISP в 4 раза меньше тактовой МК? Кварц (или др. источник такта)на МК подключен? Кварца нет, контроллер работает от внутреннего осциллятора. Частота ISP-программирования в этом программаторе не выставляется. Впрочем, я руками точно не мог превысить 1/4 тактовой частоты :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
[email protected] 0 16 декабря, 2016 Опубликовано 16 декабря, 2016 · Жалоба Кто-нибудь, кстати, в курсе - у разных версий 8-битных AVR-ов (attiny, atmega) протокол программирования по SPI различается чем-то, или он единый? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
АлександрК 0 19 декабря, 2016 Опубликовано 19 декабря, 2016 · Жалоба Вы свой программатор видели в работе с 2313? Может, что с ПО? Попробуйте обновить ПО. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
[email protected] 0 21 декабря, 2016 Опубликовано 21 декабря, 2016 · Жалоба Вы свой программатор видели в работе с 2313? Может, что с ПО? Попробуйте обновить ПО. Не совсем понял вопрос. У меня WizardProg87i, в параллельном режиме он нормально читает и прошивает контроллер. Только одно меня смущает - функция _delay_ms работает на этих контроллерах неправильно - завышает задержку в несколько раз. Сейчас замерял - при тактовой частоте в 1 МГц (от внутреннего осцияллтора) надо F_CPU выставлять в 500000 Гц, чтобы задержки были правильные. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
АлександрК 0 21 декабря, 2016 Опубликовано 21 декабря, 2016 · Жалоба Не совсем понял вопрос. У меня WizardProg87i, в параллельном режиме он нормально читает и прошивает контроллер. Вы программировали 2313 через SPI раньше? Или это первое применение Вашего программатора для 2313 через SPI? Проблема возникла или она существовала и только сейчас обнаружена? ...функция _delay_ms работает на этих контроллерах неправильно - завышает задержку в несколько раз. Сейчас замерял - при тактовой частоте в 1 МГц (от внутреннего осцияллтора) надо F_CPU выставлять в 500000 Гц, чтобы задержки были правильные. Откуда тактовая частота 1 МГц от внутреннего генератора? В 2313 два RC-генератора: 4 и 8 МГц. Но в новом МК запрограммирован бит CKDIV8, что делит тактовую частоту на 8. Возможно, 8 МГц делятся на 8 и получаете Ваши 1 МГц. А задержки устанавливаются для частоты 8 МГц. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
[email protected] 0 26 декабря, 2016 Опубликовано 26 декабря, 2016 (изменено) · Жалоба Вы программировали 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Мгц, насколько я понимаю. Проверить кроме как миганием светодиода возможности не имею. Изменено 26 декабря, 2016 пользователем 0x7be Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
АлександрК 0 27 декабря, 2016 Опубликовано 27 декабря, 2016 · Жалоба ... этот программатор не поддерживает программирование контроллеров серии ATTINY через SPI... Вот и выяснилось. ...Но я почитал datasheet`ы на контроллеры и умозаключил, что протоколы программирования по SPI у них совместимые.... ... можно попробовать программировать флеш-память attiny2313, настроив программатор на какую-нибудь атмегу... Протоколы совместимые. А как быть с адресацией? Вы выставите в параметрах ATmegaX, у которой 8 кБ или более, программатор (точнее, ПО к этому программатору) будет перебирать весь диапазон адресов для установленного МК. Для Tiny адресное пространство запрограммируется 4 раза. Что будет записано в МК? По умолчанию fuse`ы выставлены так, что он берет 8 МГц внутренний осциллятор и делит его на 8. Так получается 1Мгц, насколько я понимаю. Уберите деление тактовой частоты на 8, раз уж частота не устанавливается в программаторе. Может, хотя бы тип МК будет читаться без проблем. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
[email protected] 0 27 декабря, 2016 Опубликовано 27 декабря, 2016 · Жалоба Уберите деление тактовой частоты на 8, раз уж частота не устанавливается в программаторе. Может, хотя бы тип МК будет читаться без проблем. Получилось подобрать фьюзы. 8 МГц от внутреннего осциллятора без делителя. Протоколы совместимые. А как быть с адресацией? Вы выставите в параметрах ATmegaX, у которой 8 кБ или более, программатор (точнее, ПО к этому программатору) будет перебирать весь диапазон адресов для установленного МК. Для Tiny адресное пространство запрограммируется 4 раза. Что будет записано в МК? По итогам имею следующее - МК читается без проблем: тип, память программ, значения фьюзов. Но при записи происходит какая-то явная лажа - в память попадают откровенно мусорные данные. Пока не знаю почему, да и разбираться не собираюсь. Пришёл к выводу, что я хочу слишком странного :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
АлександрК 0 28 декабря, 2016 Опубликовано 28 декабря, 2016 · Жалоба ... при записи происходит какая-то явная лажа - в память попадают откровенно мусорные данные. Скорее всего, память МК записывается несколько раз: у TINY2313 2 кБ, а в ATmega от 8 кБ. При записи в память ATmega8, например, память TINY2313 будет перезаписана 4 раза. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
[email protected] 0 30 декабря, 2016 Опубликовано 30 декабря, 2016 · Жалоба Скорее всего, память МК записывается несколько раз: у TINY2313 2 кБ, а в ATmega от 8 кБ. При записи в память ATmega8, например, память TINY2313 будет перезаписана 4 раза. Может быть, не знаю :) Я тут на коленке собрал USBTinyISP на базе attiny2313, он прекрасно шьёт все мои avr-ы :) Осталось перенести с макетки на плату, и будет мне счастье :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться