krian 0 21 ноября, 2016 Опубликовано 21 ноября, 2016 · Жалоба Приветствую всех форумчан! Возможно кто-то сталкивался с такой же проблемой, как у меня. Я пока не смог найти объяснения. Нужно мне было применить микроконтроллер в очередном устройстве. Сначала я хотел применить 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: нет синхронизации. Я уже голову сломал с этими упрщениями. На плате уже все работает, кроме контроллера. Как же стереть этот кристалл?! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Гость TSerg 21 ноября, 2016 Опубликовано 21 ноября, 2016 · Жалоба Т.е. почитать про Arduino и его IDE заранее - не судьба была? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
V_G 8 22 ноября, 2016 Опубликовано 22 ноября, 2016 · Жалоба Не скажу за Мегу 168, но меги 128 и младше по COM-порту без специального загрузчика не прошиваются. А перепрошивка с загрузчиками всегда имеет ограничения по сравнению с штатным программированием через программатор (не СОМ-порт!). Так что да, читайте ардуиновские мануалы на предмет ограничений в локах и фьюзах. Либо используте нормальный программатор, который заливает прошивку в контроллер НЕ через СОМ-порт. Сам программатор, понятно, часто подключается к компу через последовательный порт, но это не означает, что при программировании МК используется тот же интерфейс. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sgs 0 22 ноября, 2016 Опубликовано 22 ноября, 2016 · Жалоба Стоит попробовать Parallel Programming. Видимо, при ICP программировании были затронуты какие-то не те фьюзы... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
krian 0 22 ноября, 2016 Опубликовано 22 ноября, 2016 (изменено) · Жалоба Т.е. почитать про Arduino и его IDE заранее - не судьба была? И что я по Вашему должен был там увидеть? В описании к плате сказано, что она подходит для разных применений, в том числе и для Ардуино. По-существу можете что-то сказать? Так что да, читайте ардуиновские мануалы на предмет ограничений в локах и фьюзах. Либо используте нормальный программатор, который заливает прошивку в контроллер НЕ через СОМ-порт. Сам программатор, понятно, часто подключается к компу через последовательный порт, но это не означает, что при программировании МК используется тот же интерфейс. Ардуиновские мануалы говорят, что можно делать перепрошивку обычным способом через SPI. А чем по Вашему отличается "нормальный программатор" от СОМовского? У него сигналы другие? Или команды другие? Команды стандартные, сигналы стандартные. Все это подробненько описано у производителя, т.е. Атмел. Или Вы точно не знаете? СОМовским программатором у меня прошивались все AVR, от Tiny15 до Mega1280. Стоит попробовать Parallel Programming. Видимо, при ICP программировании были затронуты какие-то не те фьюзы... Спросил уже почти у всех знакомых - параллельного программатора пока не нашел. Было бы интересно попробовать. Вообще пишут, что в Ардуино лок-биты не активны. Зачем засекречивать программу, которая в открытых ресурсах Ардуино? Изменено 22 ноября, 2016 пользователем krian Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
V_G 8 23 ноября, 2016 Опубликовано 23 ноября, 2016 · Жалоба Ардуиновские мануалы говорят, что можно делать перепрошивку обычным способом через SPI. А чем по Вашему отличается "нормальный программатор" от СОМовского? У него сигналы другие? Или команды другие? Команды стандартные, сигналы стандартные. Все это подробненько описано у производителя, т.е. Атмел. Или Вы точно не знаете? СОМовским программатором у меня прошивались все AVR, от Tiny15 до Mega1280. Вы в своих постах смешиваете 3 разных и независимых интерфейса: компьютер-программатор, программатор-МК и компьютер-МК. Интерфейс "компьютер-программатор" может быть любым, который задал разработчик программатора. В большинстве случаев это СОM или USB, он меня абсолютно не интересует, не должен интересовать и Вас, рассуждения о нем лишь затуманивают тему. Интерфейс "программатор-МК" действительно жестко задается Атмелом для их контроллеров, в Вашем случае возможны только 2 варианта: параллельный и последовательный (SPI). Никакой "прошивки через СОМ-порт" там нет и в помине, не путайте ни себя, ни других. Интерфейс "компьютер-МК" возможен только при наличии в памяти МК бутлоадера (загрузчика), реализующего функции self-programming из даташита МК, и тут как раз есть множество ограничений. Но только тут можно корректно говорить о "прошивке через СОМ-порт", если бутлоадер поддерживает этот интерфейс. Скорее всего, в Ардуиновском варианте речь идет о последнем варианте, но тогда я не понимаю насчет декларированной прошивки по SPI без использования внешнего программатора. Точнее сказать, можно в принципе заставить дергаться ножки COM-порта по временной диаграмме SPI, и подать соответствующие сигналы через преобразователь уровня на ножки МК. Но такое решение - потенциально ужасно глючное, зависящее от установленной на компьютере операционки и от аппаратуры. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sgs 0 23 ноября, 2016 Опубликовано 23 ноября, 2016 · Жалоба Возможно, поможет статья "Восстановление конфигурации Fuse-битов микроконтроллеров семейства ATmega AVR (HVPP)" http://www.rlocman.ru/shem/schematics.html?di=65084 Это - "скорая помощь", а не полноценный параллельный программатор. Но вполне помогает вернуться к заводским установкам. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aiwa 0 23 ноября, 2016 Опубликовано 23 ноября, 2016 · Жалоба Спросил уже почти у всех знакомых - параллельного программатора пока не нашел. Было бы интересно попробовать. Вообще пишут, что в Ардуино лок-биты не активны. Зачем засекречивать программу, которая в открытых ресурсах Ардуино? Параллельный программатор - большая редкость по сравнению с последовательным. И с большой долей вероятности Вам вполне хватит последовательного. Но для использования любого из этих программаторов Вам, по видимому, придется припаиваться к соответсвующим ножкам микроконтроллера. При использовании последовательного программатора на 168-й меге это PB3 (MOSI), PB4 (MISO), PB5 (SLK), PC6 (RESET). Посмотрите на своей плате как они задействованы: вдруг Вам повезет и разработчики предусмотрели разъем для перепрошивки. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aiwa 0 23 ноября, 2016 Опубликовано 23 ноября, 2016 (изменено) · Жалоба 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". А по жизни вполне хватает и последовательного программатора. Параллельный программатор - он как сурок: его никто не видел, но он есть. Изменено 23 ноября, 2016 пользователем aiwa Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sgs 0 23 ноября, 2016 Опубликовано 23 ноября, 2016 · Жалоба А по жизни вполне хватает и последовательного программатора. Параллельный программатор - он как сурок: его никто не видел, но он есть. Да нет, это Вы путаете. Достаточно установить бит SPIEN, как последовательный программатор становится бесполезным. Кстати, сброс бита SELFPRGEN аналогично запрещает самопрограммирование... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 119 23 ноября, 2016 Опубликовано 23 ноября, 2016 · Жалоба Достаточно установить бит SPIEN, как последовательный программатор становится бесполезным.Да нет, это вы путаете - этот бит последовательным программатором сбросить(! иначе бы он назывался не xxxEN, а xxxDSBL. "Сбросить", "распрограммировать" в контексте fuses означает установка бита в единицу) невозможно. А вот если установить (прописать 0) в RSTDSBL - то да, только параллельный программатор спасет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sgs 0 23 ноября, 2016 Опубликовано 23 ноября, 2016 · Жалоба Да нет, это вы путаете - этот бит последовательным программатором сбросить ... невозможно. А вот если установить (прописать 0) в RSTDSBL - то да, только параллельный программатор спасет. Я и не утверждал, что это можно сделать SPI программированием. Но в целом - что в лоб, что по лбу - без нормального программатора или хотя бы STK500 привести контроллер в чувство затруднительно... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aiwa 0 23 ноября, 2016 Опубликовано 23 ноября, 2016 · Жалоба Сколько имел дело с AVRками, пришел к одному выводу, если собираешься с ними иметь дело больше чем на один проект безусловно надо купить за любые деньги честный параллельный программатор. Я бы, наоборот, посоветовал бы сэкономить деньги на дорогом программаторе. Во-первых, из-за успешной конкуренции со стороны развивающихся АРМ-ок по сравнению с притормозившем экс-Атмеле. Во-вторых, из-за преувеличенной необходимости иметь такой программатор. За десять лет наша фирма, сидящая на AVR, так и не сподобилась приобрести или спаять последовательный программатор. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 119 23 ноября, 2016 Опубликовано 23 ноября, 2016 · Жалоба если собираешься с ними иметь дело больше чем на один проект безусловно надо купить за любые деньги честный параллельный программатор. Работаю с ними уже лет 16, параллельный программатор использовал один раз в самом начале. Во-первых потому, что достаточно один раз наступить на грабли. Во-вторых - потому что все микросхемы использую только для поверхностного монтажа и мне проще сдуть и выкинуть микросхему, чем припаивать к ней двадцать соплей. Все 16 лет мне с головой хватало 6-контактного разъема для внутрисхемного последовательного программирования. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
krian 0 23 ноября, 2016 Опубликовано 23 ноября, 2016 (изменено) · Жалоба Но для использования любого из этих программаторов Вам, по видимому, придется припаиваться к соответсвующим ножкам микроконтроллера. При использовании последовательного программатора на 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, которая у меня на макетке стоит. У них адреса регистров и портов совпадают, поэтому надеюсь, что заработает. Атмел же пишет, что у него совместимость от младших к старшим. Вот и попробую. Изменено 23 ноября, 2016 пользователем krian Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться