Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Программирование "fuses" в серийном производстве
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
OLEG_BOS
Описание проблеммы: Разработано устройство на базе AVR микроконтроллера. Переданы документы в производство в том числе и собственно сама "прошивка" для микроконтроллера в виде .hex файла. В макетном варианте проблем с программированием микроконтроллера нет : запустил программу, вставил кабель в устройство, загрузил прошивку, выставил fuses, нажал кнопочку и ввуля - вот готовое устройство.

В серийном производстве возникают вопросы именно по fuses. Проблемма именно в правильной установке fuses. Присутсвует "человеческий фактор": при неправильной установке fuses человеком, который программирует устройства приводит к тому що устройство не работает.

Вопрос: Есть ли возможность в самом файле .hex задать состояние fuses при программировании микроконтроллера AVR ? Просто я ранее работал с PIC-контроллерами - там таких проблем нет: слово конфигурации (fuses) можно передавать в самом .hex файле.
Как можно решить проблемму "человеческого фактора" при программировании AVR? Кто как делает ? Поделитесь пожалуйста опытом ! smile.gif

Заранее благодарен за ответы smile.gif

P.S. Производство мелко-серийное - заказывать "заказные" кристалы AVR нет возможности wink.gif
rx3apf
Цитата(OLEG_BOS @ Feb 12 2007, 23:55) *
Вопрос: Есть ли возможность в самом файле .hex задать состояние fuses при программировании микроконтроллера AVR ? Просто я ранее работал с PIC-контроллерами - там таких проблем нет: слово конфигурации (fuses) можно передавать в самом .hex файле.
Как можно решить проблемму "человеческого фактора" при программировании AVR? Кто как делает ? Поделитесь пожалуйста опытом ! smile.gif

Увы, в отличии от PIC, здесь такой возможности изначально не предусмотрено. Это тем более досадно по мере увеличения числа фьюзов, зависимость назначения и самого факта существования от кристалла, потому как одно дело компилятор сам разберется и отругается, если что, и совсем другое - описывать их уже для программатора.

Выход, полагаю (и применяю) только один - не пользоваться интерактивными программаторами вообще, а использовать те, которые позволяют задавать фьюзы в командной строке (avreal, к примеру). Тогда на производство передаем один-два хекса и .bat для программирования. При таком подходе у нас, например, никогда не было проблем.
arttab
да нет проблем
например avreal в командной строке можно и байт Fuse передать. для производства передаем набор файлов в том числе и bat. внем все прописываем и им остается только его запустить
ponyprog можно сделать скрипт файл. и все ок. + вариант: Точно не помню, но если им считать (еще с не лоченой) как устройство и выставить Fuse и сохранить это в файл, то и Fuse там будут. такое для стерха проходило
plombir
Чтобы не возникало у нас проблем с изготовителем, типа компьютер 286, нет COM, нет USB выхода, и т.д. был собран универсальный маленький программатор по SPI на M8 + Flash 4Mбайта (на все случаи жизни) + 2 светодиода и одна кнопка.
Уже в двух серийных девайсах такой программатор применяем.
SasaVitebsk
Цитата(arttab @ Feb 13 2007, 07:00) *
да нет проблем
например avreal в командной строке можно и байт Fuse передать. для производства передаем набор файлов в том числе и bat. внем все прописываем и им остается только его запустить
ponyprog можно сделать скрипт файл. и все ок. + вариант: Точно не помню, но если им считать (еще с не лоченой) как устройство и выставить Fuse и сохранить это в файл, то и Fuse там будут. такое для стерха проходило


Да тоже поддерживаю. Здесь лучший вариант - пакетный программатор. Нажал одну кнопку и - Ok.


Я даже и не в производстве его использую. Если у Вас 20 изделий и на каждое ещё несколько вариантов, то как вспомнишь где какие фузы? А тут задокументировано всё. Бывают также изделия с разными HEX и с общими EEP файлами к примеру. Короче пакетный программатор здесь просто незаменим.
gormih
в AS2M есть такое понятие, как проект. в нем хранится полная информация, как чем и с какими fuse программировать микроконтроллер.
Советую пользоваться этим. Программатор относительно дешевый, внутрисхемный...
Artur Nikitin
При программировании Avreal-ом я неправильно выставил фузы. Захотел изменить, а проц больше не шьется. Бывший коллега сказал что исправлял подобную проблему параллельным программатором. Можно ли тем же авреалом все исправить?
З.Ы. при прошивке пишет что не может засинхронизироваться
OLEG_BOS
Спасибо всем ответившим, за Ваши рекомендации и предложения по вопросу который я задавал Вам smile.gif . Я остановил свой выбор на PonyProg + STK200, поскольку PonyProg позволяет создавать скриптовый файл где можна задать все параметры программирования кристала. STK200 у меня уже был и использовался ранее. Приятно, но вся процедура программирования осуществляется двумя кликами мыши, что таким образом сводит к минимуму "человеческий фактор" smile.gif

Цитата
....При программировании Avreal-ом я неправильно выставил фузы.


Я вот тоже: пока поставил на поток сам процесс программирования кристалов, пару раз по недопонимаю изученных ранее DataSheet выставил неправильные фюзы: 1-й раз выставил фюз внешнего тактирования (а у меня в схеме используется кварцевый резонатор). Соответсвенно после этого ни о какой синхронизации и речи немогло и быть. Ситуацию спасло изучение DataSheet и чудо wink.gif - на плате изделия имелась еще одна микросхема с кварцевым резонатором. Подав от нее на контроллер тактовый сигнал, я быстро научил контроллер обратно синхронизироваться wink.gif
2-й раз был более печальным sad.gif Изучив внимательно DataSheet от Atmel, где черным по белому написано: 0 (programmed) и 1 (unprogrammed) и недопоняв описания Help от PonyProg - я выставил бит RSTDISBL - как по описанию от Atmel в 1 (unprogrammed). И это было моей роковой ошибкой sad.gif кристал уже не отзывался на команды программатора (и мне кажется уже никогда не будет на них отзыватся).
Ситуацию спасла только замена на другой контроллер (корпус TQFP-32) wink.gif

Долго думая над тем что я сделал не так, я внимательно перечитал еще раз DataSheet от Atmel и Help от PonyProg. И нашел в PonyProg такое описание "...bits rapresentation (note that a 1 means programmed)". Тоесть в PonyProg все точностью до наоборот тогоже описания от Atmel wink.gif

Так что уважаемый Artur Nikitin, если Вы нетрогали RSTDISBL - то вероятно кристал можно еще научить синхронизироватся и с помощью Avreal-программатора wink.gif
Сергей Борщ
Цитата(OLEG_BOS @ Feb 21 2007, 17:20) *
Я остановил свой выбор на PonyProg + STK200, поскольку PonyProg позволяет создавать скриптовый файл где можна задать все параметры программирования кристала.
Последняя версия понипрога датирована 2005г. Вероятнее всего автор потерял к нему интерес. Вы не боитесь, что в будущем заложите в разработку неподдерживаемый понипрогом процессор и придется менять программу программатора (каламбурsmile.gif) и переучивать персонал? avreal точно также запускается двумя кликами по иконке .bat-файла, а в случае перехода придется сменить лишь содержимое этого .bat, с точки зрения же персонала все останется как и было.
Artur Nikitin
Цитата(OLEG_BOS @ Feb 21 2007, 18:20) *
...если Вы нетрогали RSTDISBL - то вероятно кристал можно еще научить синхронизироватся и с помощью Avreal-программатора wink.gif

Трогал только cksel. но все равно не синхронизируется
boez
Тогда вам проще - просто подайте на вход кварцевого генератора (посмотрите по даташиту какая нога - Х1 или Х2 у него вход) сигнал в районе от 1 до нескольких мегагерц (например от соседнего рабочего контролера) и все будет хорошо. Это вы его перевели в режим внешнего тактирования. Очень часто бывает у "опытных" установщиков CKSEL - просто классика smile.gif.
smk
Тоже задумываюсь над программированием в серии. Первое и главное условие, которое я выработал, это необходимость обеспечить программирование МК в "режиме обезьянки". В следствие этого родилась идея разработать программатор на основе наладонника (купить недорогой б/у не проблема). Т.е. я прописываю хекс и файл с фузами в наладонник. Специально разработанная программа прописывает это в МК с помощью специально разработанного программатора. Причем желательно иметь в программаторе разъем для установки платы, через который она будет запитана. В итоге программирование сведется к установке платы и нажатию кнопки. Если что не так - еще раз жмем кнопку. Кто поможет осуществить идею?
Artur Nikitin
Цитата(smk @ Feb 23 2007, 10:53) *
Тоже задумываюсь над программированием в серии. Первое и главное условие, которое я выработал, это необходимость обеспечить программирование МК в "режиме обезьянки". В следствие этого родилась идея разработать программатор на основе наладонника (купить недорогой б/у не проблема). Т.е. я прописываю хекс и файл с фузами в наладонник. Специально разработанная программа прописывает это в МК с помощью специально разработанного программатора. Причем желательно иметь в программаторе разъем для установки платы, через который она будет запитана. В итоге программирование сведется к установке платы и нажатию кнопки. Если что не так - еще раз жмем кнопку. Кто поможет осуществить идею?

А зачем наладонник, может можно это на МК сообразить, развести платку, написать программку, ну и воткнуть ту же кнопку
smk
Цитата
А зачем наладонник, может можно это на МК сообразить, развести платку, написать программку, ну и воткнуть ту же кнопку


Можно и на МК. Но я думаю наладонник в этом смысле практичней и дешевле и быстрее сделать можно. Ну и на будущее задел хороший в виде КПК.
Artur Nikitin
Цитата(boez @ Feb 22 2007, 14:44) *
Тогда вам проще - просто подайте на вход кварцевого генератора (посмотрите по даташиту какая нога - Х1 или Х2 у него вход) сигнал в районе от 1 до нескольких мегагерц (например от соседнего рабочего контролера) и все будет хорошо. Это вы его перевели в режим внешнего тактирования. Очень часто бывает у "опытных" установщиков CKSEL - просто классика smile.gif.

Да, перевел в режим внешнего тактирования (с кварца), потом обратно (CKSEL=2). После этого внешнее тактирование не помогало (подавал с LPT, с осциллографа).
На счет "опытных" настройщиков CKSEL. Что будет, если физически установлен кварц, а настройки CKSEL выставить в режим керамического резонатора? По даташиту внешний кварц - это Crystal Oscillator или Ceramic Resonator. И что будет если поствить вообще на Ext. RC Oscillator?
Сергей Борщ
Цитата(Artur Nikitin @ Feb 28 2007, 08:49) *
На счет "опытных" настройщиков CKSEL. Что будет, если физически установлен кварц, а настройки CKSEL выставить в режим керамического резонатора? По даташиту внешний кварц - это Crystal Oscillator или Ceramic Resonator. И что будет если поствить вообще на Ext. RC Oscillator?
Выход у LPT мощный, он перетянет любой резонатор. Если внимательно посмотреть схематику подобных генераторов, то внутри процессора это инвертор с кварцем (резонатором) в цепи обратной связи. При подаче внешнего тактового сигнала он поступает на вход инвертора.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.