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

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

Приветствую всех форумчан!

 

Возможно кто-то сталкивался с такой же проблемой, как у меня. Я пока не смог найти объяснения.

Нужно мне было применить микроконтроллер в очередном устройстве. Сначала я хотел применить atmega16 или 32. Но меня привлекла плата Arduino pro mini с atmega 168 которая уже содержит всю нинимально необходимую обвязку. И я её заказал на aliexpress. Пока она путешествовала по почте, я сделал плату и написал программу. Я думал, что даже, если там что-то записано, я привычными средствами все это сотру и запишу своё ПО. Не тут то было!!!

 

Обычно я пользуюсь средствами Ponyprog, CVAVR или Algorithm Builder. В зависимости от ситуации. Прошиваю через COM порт.

AB, CVAVR сказали, что кристалл не доступен уже на стадии стирания. Другие ж доступны... значит аппаратная часть программаторов исправна.

В Pony начались приключения. Стираю кристалл. Читаю фьюзы. Lock биты не стерлись.

Убираю lock биты, чтобы открыть доступ. Перезаписываю фьюзы, включаю внутренний генератор, вместо кварцевого. Т.к. mega168V до 10 Мгц, а кварц стоит на 16МГц. Получилось. Сигнал на кварце исчез. Светодиод на плате перестал мигать. Т.е. первоначальная программа уже не работает. Кристалл читается. Но со второй попытки "Retri". Однако, чтение показывает, что полного стирания не произошло (FF только в первых двух строчках, а дальше какая-то информация), после чтения кристалла все lock биты почему-то восстановились. И снова заблокировали чтение памяти. Повторение описанных операций ничего не меняет. По команде стирания должен же стереться и загрузчик и lock биты. Не масочный же он там. По маркировке обычная микросхема. Моя старая проверенная макетка на atmega16, продолжает работать как прежде - все стирается и пишется. Но я же купил не одну такую Ардуину, а пять! Они мне понравились и стоили дешевле, чем один только контроллер в местном магазине. Я не раз покупал микросхемы и платы на Алиэкспрес, но никаких нареканий не было.

 

Тут я читаю в инете, что в платах Arduino (для упрощения!!!) зашит какой-то загрузчик. Хотите записать туда свой HEX файл? Нет ничего проще! Подключите свою плату через адаптер USB-USART к компьютеру, как показано на картинке и воспользуйтесь программами Xloader или UpLoader. Выбирайте любую и прошивайте на здоровье!

Я их скачал, но они обе не работают. Даже прилагаемые драйверы установил. (адаптер на базе PL2303HX обнаруживается и работает)

Xloader пишет, что загрузка началась, но зависает и не выходит из этого состояния. На TXD редко подмигивает индикатор. Никаких ошибок не выдает. Закрывается этот Икслоадер только с помощью диспетчера.

Uploader открывает командное окно. Ждет секунд 5. Потом пишет: avrdude: нет синхронизации.

Я уже голову сломал с этими упрщениями. На плате уже все работает, кроме контроллера. Как же стереть этот кристалл?!

 

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


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

Не скажу за Мегу 168, но меги 128 и младше по COM-порту без специального загрузчика не прошиваются.

А перепрошивка с загрузчиками всегда имеет ограничения по сравнению с штатным программированием через программатор (не СОМ-порт!).

Так что да, читайте ардуиновские мануалы на предмет ограничений в локах и фьюзах.

Либо используте нормальный программатор, который заливает прошивку в контроллер НЕ через СОМ-порт.

Сам программатор, понятно, часто подключается к компу через последовательный порт, но это не означает, что при программировании МК используется тот же интерфейс.

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


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

Стоит попробовать Parallel Programming. Видимо, при ICP программировании были затронуты какие-то не те фьюзы...

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


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

Т.е. почитать про Arduino и его IDE заранее - не судьба была?

И что я по Вашему должен был там увидеть? В описании к плате сказано, что она подходит для разных применений, в том числе и для Ардуино.

По-существу можете что-то сказать?

 

Так что да, читайте ардуиновские мануалы на предмет ограничений в локах и фьюзах.

Либо используте нормальный программатор, который заливает прошивку в контроллер НЕ через СОМ-порт.

Сам программатор, понятно, часто подключается к компу через последовательный порт, но это не означает, что при программировании МК используется тот же интерфейс.

Ардуиновские мануалы говорят, что можно делать перепрошивку обычным способом через SPI.

А чем по Вашему отличается "нормальный программатор" от СОМовского? У него сигналы другие? Или команды другие? Команды стандартные, сигналы стандартные. Все это подробненько описано у производителя, т.е. Атмел. Или Вы точно не знаете? СОМовским программатором у меня прошивались все AVR, от Tiny15 до Mega1280.

 

Стоит попробовать Parallel Programming. Видимо, при ICP программировании были затронуты какие-то не те фьюзы...

Спросил уже почти у всех знакомых - параллельного программатора пока не нашел. Было бы интересно попробовать. Вообще пишут, что в Ардуино лок-биты не активны. Зачем засекречивать программу, которая в открытых ресурсах Ардуино?

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

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


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

Ардуиновские мануалы говорят, что можно делать перепрошивку обычным способом через SPI.

А чем по Вашему отличается "нормальный программатор" от СОМовского? У него сигналы другие? Или команды другие? Команды стандартные, сигналы стандартные. Все это подробненько описано у производителя, т.е. Атмел. Или Вы точно не знаете? СОМовским программатором у меня прошивались все AVR, от Tiny15 до Mega1280.

Вы в своих постах смешиваете 3 разных и независимых интерфейса: компьютер-программатор, программатор-МК и компьютер-МК.

Интерфейс "компьютер-программатор" может быть любым, который задал разработчик программатора. В большинстве случаев это СОM или USB, он меня абсолютно не интересует, не должен интересовать и Вас, рассуждения о нем лишь затуманивают тему.

Интерфейс "программатор-МК" действительно жестко задается Атмелом для их контроллеров, в Вашем случае возможны только 2 варианта: параллельный и последовательный (SPI). Никакой "прошивки через СОМ-порт" там нет и в помине, не путайте ни себя, ни других.

Интерфейс "компьютер-МК" возможен только при наличии в памяти МК бутлоадера (загрузчика), реализующего функции self-programming из даташита МК, и тут как раз есть множество ограничений. Но только тут можно корректно говорить о "прошивке через СОМ-порт", если бутлоадер поддерживает этот интерфейс.

Скорее всего, в Ардуиновском варианте речь идет о последнем варианте, но тогда я не понимаю насчет декларированной прошивки по SPI без использования внешнего программатора. Точнее сказать, можно в принципе заставить дергаться ножки COM-порта по временной диаграмме SPI, и подать соответствующие сигналы через преобразователь уровня на ножки МК. Но такое решение - потенциально ужасно глючное, зависящее от установленной на компьютере операционки и от аппаратуры.

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


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

Возможно, поможет статья "Восстановление конфигурации Fuse-битов микроконтроллеров семейства ATmega AVR (HVPP)" http://www.rlocman.ru/shem/schematics.html?di=65084

Это - "скорая помощь", а не полноценный параллельный программатор. Но вполне помогает вернуться к заводским установкам.

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


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

Спросил уже почти у всех знакомых - параллельного программатора пока не нашел. Было бы интересно попробовать. Вообще пишут, что в Ардуино лок-биты не активны. Зачем засекречивать программу, которая в открытых ресурсах Ардуино?

Параллельный программатор - большая редкость по сравнению с последовательным.

И с большой долей вероятности Вам вполне хватит последовательного.

Но для использования любого из этих программаторов Вам, по видимому, придется припаиваться к соответсвующим ножкам микроконтроллера.

При использовании последовательного программатора на 168-й меге это PB3 (MOSI), PB4 (MISO), PB5 (SLK), PC6 (RESET).

Посмотрите на своей плате как они задействованы: вдруг Вам повезет и разработчики предусмотрели разъем для перепрошивки.

 

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


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

Mega168 по умолчанию содержит загрузчик по USB ....

?

 

Вы что-то путаете.

По даташиту (http://www.atmel.com/Images/Atmel-2545-8-bit-AVR-Microcontroller-ATmega48-88-168_Datasheet.pdf) есть две возможности полноценной перепрошивки:

 

1-й. С помощью параллельного программатора (32.6. Parallel Programming Parameters, Pin Mapping, and Commands)

2-й. С помощью последовательного программатора (32.8. Serial Downloading)

 

3-й способ - (30. Self-Programming the Flash) - это написание собственного загрузчика и прошивка его одним из двух вышеуказанных.

Вот этот загрузчик у аурдины и "прошивает" программы "через COM".

 

А по жизни вполне хватает и последовательного программатора. Параллельный программатор - он как сурок: его никто не видел, но он есть.

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

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


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

А по жизни вполне хватает и последовательного программатора. Параллельный программатор - он как сурок: его никто не видел, но он есть.

 

Да нет, это Вы путаете. Достаточно установить бит SPIEN, как последовательный программатор становится бесполезным. Кстати, сброс бита SELFPRGEN аналогично запрещает самопрограммирование...

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


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

Достаточно установить бит SPIEN, как последовательный программатор становится бесполезным.
Да нет, это вы путаете - этот бит последовательным программатором сбросить(! иначе бы он назывался не xxxEN, а xxxDSBL. "Сбросить", "распрограммировать" в контексте fuses означает установка бита в единицу) невозможно. А вот если установить (прописать 0) в RSTDSBL - то да, только параллельный программатор спасет.

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


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

Да нет, это вы путаете - этот бит последовательным программатором сбросить ... невозможно. А вот если установить (прописать 0) в RSTDSBL - то да, только параллельный программатор спасет.

Я и не утверждал, что это можно сделать SPI программированием. Но в целом - что в лоб, что по лбу - без нормального программатора или хотя бы STK500 привести контроллер в чувство затруднительно...

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


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

Сколько имел дело с AVRками, пришел к одному выводу, если собираешься с ними иметь дело больше чем на один проект безусловно надо купить за любые

деньги честный параллельный программатор.

Я бы, наоборот, посоветовал бы сэкономить деньги на дорогом программаторе.

Во-первых, из-за успешной конкуренции со стороны развивающихся АРМ-ок по сравнению с притормозившем экс-Атмеле.

Во-вторых, из-за преувеличенной необходимости иметь такой программатор. За десять лет наша фирма, сидящая на AVR, так и не сподобилась приобрести или спаять последовательный программатор.

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


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

если собираешься с ними иметь дело больше чем на один проект безусловно надо купить за любые

деньги честный параллельный программатор.

Работаю с ними уже лет 16, параллельный программатор использовал один раз в самом начале. Во-первых потому, что достаточно один раз наступить на грабли. Во-вторых - потому что все микросхемы использую только для поверхностного монтажа и мне проще сдуть и выкинуть микросхему, чем припаивать к ней двадцать соплей. Все 16 лет мне с головой хватало 6-контактного разъема для внутрисхемного последовательного программирования.

 

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


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

Но для использования любого из этих программаторов Вам, по видимому, придется припаиваться к соответсвующим ножкам микроконтроллера.

При использовании последовательного программатора на 168-й меге это PB3 (MOSI), PB4 (MISO), PB5 (SLK), PC6 (RESET).

Посмотрите на своей плате как они задействованы: вдруг Вам повезет и разработчики предусмотрели разъем для перепрошивки.

 

Там все эти ноги выведены на внешние выводы. Так что в этом "повезло". Проблема как раз в том, что через них ничего не программируется и даже не стирается полностью. Иначе, я бы и на форум с вопросами не выходил.

 

Никакой "прошивки через СОМ-порт" там нет и в помине, не путайте ни себя, ни других.

 

Я и не собирался никого "путать". Все, что вы пишете, мне известно. А меня вы не правильно поняли. Ну не буду же я расписывать все подробности. Если бы мы все имели возможность покупать дорогие программаторы.... Но я уже больше 10 лет использую СОМовский и до настоящего момента никаких проблем не возникало. Через последовательный программатор покруче моего я уже пробовал. Безрезультатно. Все программы одинаково прошиваются и СОМовским и тем, который со своим процессором. Разница во времени загрузки.

Я, кстати, попробовал перепрошить эту плату через загрузчик при помощи ардуиновской программы. Получилось. Однако же, не нужен мне ардуиновский загрузчик!

И я не понимаю, почему у меня не стирается весь кристалл. Ведь по каманде ЭРАЙС должно все полностью очищаться. Какие бы фьюзы и локи там не стояли. Если, конечно, SPIEN=0.

 

Возможно, поможет статья "Восстановление конфигурации Fuse-битов микроконтроллеров семейства ATmega AVR (HVPP)" http://www.rlocman.ru/shem/schematics.html?di=65084

Это - "скорая помощь", а не полноценный параллельный программатор. Но вполне помогает вернуться к заводским установкам.

 

Спасибо. Я уже нашел такое устройство, но на другом сайте. Называется AVR fuse doctor. Попытаюсь собрать его на макетке. Правда Мега8 у меня сейчас нет. Но я хочу попробовать зашить НЕХ файл для меги8 в мегу16, которая у меня на макетке стоит. У них адреса регистров и портов совпадают, поэтому надеюсь, что заработает. Атмел же пишет, что у него совместимость от младших к старшим. Вот и попробую.

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

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


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

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

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

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

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

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

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

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

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

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