|
Программирование "fuses" в серийном производстве, Есть ли "слово конфигурации fuses" в AVR ? |
|
|
|
Feb 12 2007, 23:55
|

Местный
  
Группа: Свой
Сообщений: 386
Регистрация: 1-12-05
Пользователь №: 11 639

|
Описание проблеммы: Разработано устройство на базе AVR микроконтроллера. Переданы документы в производство в том числе и собственно сама "прошивка" для микроконтроллера в виде .hex файла. В макетном варианте проблем с программированием микроконтроллера нет : запустил программу, вставил кабель в устройство, загрузил прошивку, выставил fuses, нажал кнопочку и ввуля - вот готовое устройство. В серийном производстве возникают вопросы именно по fuses. Проблемма именно в правильной установке fuses. Присутсвует "человеческий фактор": при неправильной установке fuses человеком, который программирует устройства приводит к тому що устройство не работает. Вопрос: Есть ли возможность в самом файле .hex задать состояние fuses при программировании микроконтроллера AVR ? Просто я ранее работал с PIC-контроллерами - там таких проблем нет: слово конфигурации (fuses) можно передавать в самом .hex файле. Как можно решить проблемму "человеческого фактора" при программировании AVR? Кто как делает ? Поделитесь пожалуйста опытом ! Заранее благодарен за ответы P.S. Производство мелко-серийное - заказывать "заказные" кристалы AVR нет возможности
|
|
|
|
|
Feb 13 2007, 00:10
|
Гуру
     
Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047

|
Цитата(OLEG_BOS @ Feb 12 2007, 23:55)  Вопрос: Есть ли возможность в самом файле .hex задать состояние fuses при программировании микроконтроллера AVR ? Просто я ранее работал с PIC-контроллерами - там таких проблем нет: слово конфигурации (fuses) можно передавать в самом .hex файле. Как можно решить проблемму "человеческого фактора" при программировании AVR? Кто как делает ? Поделитесь пожалуйста опытом !  Увы, в отличии от PIC, здесь такой возможности изначально не предусмотрено. Это тем более досадно по мере увеличения числа фьюзов, зависимость назначения и самого факта существования от кристалла, потому как одно дело компилятор сам разберется и отругается, если что, и совсем другое - описывать их уже для программатора. Выход, полагаю (и применяю) только один - не пользоваться интерактивными программаторами вообще, а использовать те, которые позволяют задавать фьюзы в командной строке (avreal, к примеру). Тогда на производство передаем один-два хекса и .bat для программирования. При таком подходе у нас, например, никогда не было проблем.
|
|
|
|
|
Feb 21 2007, 16:42
|
Участник

Группа: Новичок
Сообщений: 30
Регистрация: 28-11-06
Из: Набережные Челны
Пользователь №: 22 856

|
При программировании Avreal-ом я неправильно выставил фузы. Захотел изменить, а проц больше не шьется. Бывший коллега сказал что исправлял подобную проблему параллельным программатором. Можно ли тем же авреалом все исправить? З.Ы. при прошивке пишет что не может засинхронизироваться
--------------------
начинающий программист
|
|
|
|
|
Feb 21 2007, 18:20
|

Местный
  
Группа: Свой
Сообщений: 386
Регистрация: 1-12-05
Пользователь №: 11 639

|
Спасибо всем ответившим, за Ваши рекомендации и предложения по вопросу который я задавал Вам  . Я остановил свой выбор на PonyProg + STK200, поскольку PonyProg позволяет создавать скриптовый файл где можна задать все параметры программирования кристала. STK200 у меня уже был и использовался ранее. Приятно, но вся процедура программирования осуществляется двумя кликами мыши, что таким образом сводит к минимуму "человеческий фактор" Цитата ....При программировании Avreal-ом я неправильно выставил фузы. Я вот тоже: пока поставил на поток сам процесс программирования кристалов, пару раз по недопонимаю изученных ранее DataSheet выставил неправильные фюзы: 1-й раз выставил фюз внешнего тактирования (а у меня в схеме используется кварцевый резонатор). Соответсвенно после этого ни о какой синхронизации и речи немогло и быть. Ситуацию спасло изучение DataSheet и чудо  - на плате изделия имелась еще одна микросхема с кварцевым резонатором. Подав от нее на контроллер тактовый сигнал, я быстро научил контроллер обратно синхронизироваться 2-й раз был более печальным  Изучив внимательно DataSheet от Atmel, где черным по белому написано: 0 (programmed) и 1 (unprogrammed) и недопоняв описания Help от PonyProg - я выставил бит RSTDISBL - как по описанию от Atmel в 1 ( unprogrammed). И это было моей роковой ошибкой  кристал уже не отзывался на команды программатора (и мне кажется уже никогда не будет на них отзыватся). Ситуацию спасла только замена на другой контроллер (корпус TQFP-32) Долго думая над тем что я сделал не так, я внимательно перечитал еще раз DataSheet от Atmel и Help от PonyProg. И нашел в PonyProg такое описание "...bits rapresentation (note that a 1 means programmed)". Тоесть в PonyProg все точностью до наоборот тогоже описания от Atmel Так что уважаемый Artur Nikitin, если Вы нетрогали RSTDISBL - то вероятно кристал можно еще научить синхронизироватся и с помощью Avreal-программатора
|
|
|
|
|
Feb 21 2007, 19:17
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Цитата(OLEG_BOS @ Feb 21 2007, 17:20)  Я остановил свой выбор на PonyProg + STK200, поскольку PonyProg позволяет создавать скриптовый файл где можна задать все параметры программирования кристала. Последняя версия понипрога датирована 2005г. Вероятнее всего автор потерял к нему интерес. Вы не боитесь, что в будущем заложите в разработку неподдерживаемый понипрогом процессор и придется менять программу программатора (каламбур  ) и переучивать персонал? avreal точно также запускается двумя кликами по иконке .bat-файла, а в случае перехода придется сменить лишь содержимое этого .bat, с точки зрения же персонала все останется как и было.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Feb 22 2007, 10:25
|
Участник

Группа: Новичок
Сообщений: 30
Регистрация: 28-11-06
Из: Набережные Челны
Пользователь №: 22 856

|
Цитата(OLEG_BOS @ Feb 21 2007, 18:20)  ...если Вы нетрогали RSTDISBL - то вероятно кристал можно еще научить синхронизироватся и с помощью Avreal-программатора  Трогал только cksel. но все равно не синхронизируется
--------------------
начинающий программист
|
|
|
|
|
Feb 27 2007, 13:53
|
Участник

Группа: Новичок
Сообщений: 30
Регистрация: 28-11-06
Из: Набережные Челны
Пользователь №: 22 856

|
Цитата(smk @ Feb 23 2007, 10:53)  Тоже задумываюсь над программированием в серии. Первое и главное условие, которое я выработал, это необходимость обеспечить программирование МК в "режиме обезьянки". В следствие этого родилась идея разработать программатор на основе наладонника (купить недорогой б/у не проблема). Т.е. я прописываю хекс и файл с фузами в наладонник. Специально разработанная программа прописывает это в МК с помощью специально разработанного программатора. Причем желательно иметь в программаторе разъем для установки платы, через который она будет запитана. В итоге программирование сведется к установке платы и нажатию кнопки. Если что не так - еще раз жмем кнопку. Кто поможет осуществить идею? А зачем наладонник, может можно это на МК сообразить, развести платку, написать программку, ну и воткнуть ту же кнопку
Сообщение отредактировал Artur Nikitin - Feb 27 2007, 13:55
--------------------
начинающий программист
|
|
|
|
|
Feb 28 2007, 09:49
|
Участник

Группа: Новичок
Сообщений: 30
Регистрация: 28-11-06
Из: Набережные Челны
Пользователь №: 22 856

|
Цитата(boez @ Feb 22 2007, 14:44)  Тогда вам проще - просто подайте на вход кварцевого генератора (посмотрите по даташиту какая нога - Х1 или Х2 у него вход) сигнал в районе от 1 до нескольких мегагерц (например от соседнего рабочего контролера) и все будет хорошо. Это вы его перевели в режим внешнего тактирования. Очень часто бывает у "опытных" установщиков CKSEL - просто классика  . Да, перевел в режим внешнего тактирования (с кварца), потом обратно (CKSEL=2). После этого внешнее тактирование не помогало (подавал с LPT, с осциллографа). На счет "опытных" настройщиков CKSEL. Что будет, если физически установлен кварц, а настройки CKSEL выставить в режим керамического резонатора? По даташиту внешний кварц - это Crystal Oscillator или Ceramic Resonator. И что будет если поствить вообще на Ext. RC Oscillator?
--------------------
начинающий программист
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|