реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> ATTINY2313 ISP Device code = 0x0
0x7be
сообщение Dec 15 2016, 09:43
Сообщение #1





Группа: Участник
Сообщений: 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 в аналогичных условиях работает.

Go to the top of the page
 
+Quote Post
Александр1
сообщение Dec 15 2016, 09:57
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 401
Регистрация: 13-05-15
Из: Запорожье
Пользователь №: 86 663



Для начала попробуйте другой экземпляр МК 2313.
Был случай на макете: вчера работал, а сегодня-нет. Поставил другой МК и все заработало.
Go to the top of the page
 
+Quote Post
0x7be
сообщение Dec 15 2016, 10:50
Сообщение #3





Группа: Участник
Сообщений: 13
Регистрация: 5-09-16
Пользователь №: 93 224



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

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

Скорее всего, это какая-то системная проблема понимания работы с протоколом SPI sad.gif
Go to the top of the page
 
+Quote Post
Александр1
сообщение Dec 16 2016, 07:07
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 401
Регистрация: 13-05-15
Из: Запорожье
Пользователь №: 86 663



Бегло просмотрел руководство к Вашему программатору.
Настройки заданы правильно? Частота ISP в 4 раза меньше тактовой МК? Кварц (или др. источник такта)на МК подключен?
Go to the top of the page
 
+Quote Post
0x7be
сообщение Dec 16 2016, 17:22
Сообщение #5





Группа: Участник
Сообщений: 13
Регистрация: 5-09-16
Пользователь №: 93 224



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

Кварца нет, контроллер работает от внутреннего осциллятора.
Частота ISP-программирования в этом программаторе не выставляется.
Впрочем, я руками точно не мог превысить 1/4 тактовой частоты sm.gif
Go to the top of the page
 
+Quote Post
0x7be
сообщение Dec 16 2016, 19:02
Сообщение #6





Группа: Участник
Сообщений: 13
Регистрация: 5-09-16
Пользователь №: 93 224



Кто-нибудь, кстати, в курсе - у разных версий 8-битных AVR-ов (attiny, atmega) протокол программирования по SPI различается чем-то, или он единый?
Go to the top of the page
 
+Quote Post
Александр1
сообщение Dec 19 2016, 07:13
Сообщение #7


Местный
***

Группа: Участник
Сообщений: 401
Регистрация: 13-05-15
Из: Запорожье
Пользователь №: 86 663



Вы свой программатор видели в работе с 2313? Может, что с ПО? Попробуйте обновить ПО.
Go to the top of the page
 
+Quote Post
0x7be
сообщение Dec 21 2016, 08:35
Сообщение #8





Группа: Участник
Сообщений: 13
Регистрация: 5-09-16
Пользователь №: 93 224



Цитата(Александр1 @ Dec 19 2016, 10:13) *
Вы свой программатор видели в работе с 2313? Может, что с ПО? Попробуйте обновить ПО.

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

Только одно меня смущает - функция _delay_ms работает на этих контроллерах неправильно - завышает задержку в несколько раз.
Сейчас замерял - при тактовой частоте в 1 МГц (от внутреннего осцияллтора) надо F_CPU выставлять в 500000 Гц, чтобы задержки были правильные.
Go to the top of the page
 
+Quote Post
Александр1
сообщение Dec 21 2016, 09:40
Сообщение #9


Местный
***

Группа: Участник
Сообщений: 401
Регистрация: 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 МГц.
Go to the top of the page
 
+Quote Post
0x7be
сообщение Dec 26 2016, 19:23
Сообщение #10





Группа: Участник
Сообщений: 13
Регистрация: 5-09-16
Пользователь №: 93 224



Цитата(Александр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Мгц, насколько я понимаю.
Проверить кроме как миганием светодиода возможности не имею.

Сообщение отредактировал 0x7be - Dec 26 2016, 19:43
Go to the top of the page
 
+Quote Post
Александр1
сообщение Dec 27 2016, 07:35
Сообщение #11


Местный
***

Группа: Участник
Сообщений: 401
Регистрация: 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, раз уж частота не устанавливается в программаторе. Может, хотя бы тип МК будет читаться без проблем.
Go to the top of the page
 
+Quote Post
0x7be
сообщение Dec 27 2016, 18:46
Сообщение #12





Группа: Участник
Сообщений: 13
Регистрация: 5-09-16
Пользователь №: 93 224



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

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

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

По итогам имею следующее - МК читается без проблем: тип, память программ, значения фьюзов. Но при записи происходит какая-то явная лажа - в память попадают откровенно мусорные данные. Пока не знаю почему, да и разбираться не собираюсь. Пришёл к выводу, что я хочу слишком странного sm.gif
Go to the top of the page
 
+Quote Post
Александр1
сообщение Dec 28 2016, 11:12
Сообщение #13


Местный
***

Группа: Участник
Сообщений: 401
Регистрация: 13-05-15
Из: Запорожье
Пользователь №: 86 663



Цитата(0x7be @ Dec 27 2016, 22:46) *
... при записи происходит какая-то явная лажа - в память попадают откровенно мусорные данные.

Скорее всего, память МК записывается несколько раз: у TINY2313 2 кБ, а в ATmega от 8 кБ. При записи в память ATmega8, например, память TINY2313 будет перезаписана 4 раза.
Go to the top of the page
 
+Quote Post
0x7be
сообщение Dec 30 2016, 16:15
Сообщение #14





Группа: Участник
Сообщений: 13
Регистрация: 5-09-16
Пользователь №: 93 224



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

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

Я тут на коленке собрал USBTinyISP на базе attiny2313, он прекрасно шьёт все мои avr-ы sm.gif
Осталось перенести с макетки на плату, и будет мне счастье sm.gif
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 26th June 2017 - 17:10
Рейтинг@Mail.ru


Страница сгенерированна за 0.01465 секунд с 7
ELECTRONIX ©2004-2016