Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: AvrUsb500 by Petka
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20
Petka
Цитата(Budek @ Sep 24 2009, 15:22) *
Petka....Вот возникла необходимость моим заказчикам тупо перешивать микроконтроллер. Посоветуйте программу-оболочку (с графическим интерфейсом, конечно), типа понипрога для такой работы, с минимальным набором необходимых действий. Спасибо.

avrdude + gui. а ещё лучше для "заказчиков" avrdude + *.bat файл. тогда ничего настраивать не надо, только иконку "жамкнуть"
Budek
Цитата(Petka @ Sep 24 2009, 17:40) *
avrdude + gui. а ещё лучше для "заказчиков" avrdude + *.bat файл. тогда ничего настраивать не надо, только иконку "жамкнуть"


Спасибо. Так и подозревал, что ответ будет таким. Неужели ничего другого нет?
ShuraX
Цитата(Petka @ Sep 24 2009, 08:39) *
Прошивка программатора НЕ расчитана на кварц 16МГц. Так что изменений в схеме у вас больше.

Вчера так и подумал. Но нужных кварцев нет нигде.
И бестолку собирать прошивку под кварц 16МГц??? (makefile подправить).
Просто в этой же ветке где-то писали, что можно любой разрешенный, просто если он не кратен 115200, то скорость прошивки будет меньше. Поэтому и взял тот, что есть.
ds1307
Цитата(ShuraX @ Sep 24 2009, 15:24) *
Вчера так и подумал. Но нужных кварцев нет нигде.
И бестолку собирать прошивку под кварц 16МГц??? (makefile подправить).
Просто в этой же ветке где-то писали, что можно любой разрешенный, просто если он не кратен 115200, то скорость прошивки будет меньше. Поэтому и взял тот, что есть.

Ктото не так давно делал на 14,318. Их полно на материнках. Поспрошайте...
Petka
Цитата(ShuraX @ Sep 24 2009, 16:24) *
И бестолку собирать прошивку под кварц 16МГц??? (makefile подправить).
Просто в этой же ветке где-то писали, что можно любой разрешенный, просто если он не кратен 115200, то скорость прошивки будет меньше.

Всё правильно. Можно пересобрать прошивку под другой кварц с соответствующим снижением скорости по КОМпорту (в вашем случае до 38400). (если та программа, через какую вы программируете поддерживает изменение baudrate).

Цитата(Budek @ Sep 24 2009, 15:50) *
Спасибо. Так и подозревал, что ответ будет таким. Неужели ничего другого нет?

Скорее всего есть. Я рассказал чем пользуюсь сам. После некоторого исследования я пришёл к выводу что avrdude единственный программатор, который поддерживает практически все программаторы (что есть у меня) и работает как под win так и под linux. Avreal ещё хорош, но он не поддерживает стандартный stk500 =(.
ShuraX
Цитата(Petka @ Sep 24 2009, 16:37) *
Всё правильно. Можно пересобрать прошивку под другой кварц с соответствующим снижением скорости по КОМпорту (в вашем случае до 38400). (если та программа, через какую вы программируете поддерживает изменение baudrate).


Да я пока только пытаюсь через терминал получить ответ. На скорости 38400 тоже молчит. Смотрю может где не пропай, хотя вроде как сам то он прошился. Пока не завел...
Petka
Цитата(ShuraX @ Sep 24 2009, 18:08) *
Да я пока только пытаюсь через терминал получить ответ. На скорости 38400 тоже молчит. Смотрю может где не пропай, хотя вроде как сам то он прошился. Пока не завел...

Опять двадцать пять:
1) Надо поменять в makefile частоту кварца и выбрать свой контроллер.
2) Поменять в файле cfg500.h константу "BAUDRATE".
3) Пересобрать прошивку.
ShuraX
Цитата(Petka @ Sep 24 2009, 18:27) *
Опять двадцать пять:
1) Надо поменять в makefile частоту кварца и выбрать свой контроллер.
2) Поменять в файле cfg500.h константу "BAUDRATE".
3) Пересобрать прошивку.

Спасибо за оперативные ответы. Уж извините за "тупые" вопросы и проблемы. smile.gif Я только начал заниматься МК (хотя по роду деятельности постоянно программирую контроллеры...только промышленные). Но быстро учусь и много читаю. Нашел уже решение своей проблемы. Банальный прокол - фьюзы не прошил.
И спасибо за программатор. Все заработало. Это мой первый девайс на МК и с применением SMD (замучался паять, под рукой нет необходимого инструмента). Но блин интереееесно стало! Сейчас будем тестить все.
пункт 1. так и сделал.
пункт 2. не трогал
пункт 3. пересобрал и залил сразу же под нужную частоту и МК

По поводу BAUDRATE вопросик. Я так понял для моего кварца необхоимо поставить 38400?
Хотя сейчас он у меня стоит 115200 и прекрасно связывается и отвечает.
Petka
Цитата(ShuraX @ Sep 24 2009, 19:51) *
По поводу BAUDRATE вопросик. Я так понял для моего кварца необхоимо поставить 38400?
Хотя сейчас он у меня стоит 115200 и прекрасно связывается и отвечает.

Считаем вместе:

1) 16МГц = 16000000
2) UART AVR для себя делит частоту ядра на 16, итого UART работает на частоте 16000000/16 = 1000000 (1МГц)
3) Нам надо получить 115200, для этого делитель должен быть 1000000/115200 ~ 8,68 в делитель можно записать только целое число. 8,68 округляем до 9.
4) Считаем обратно: внутреннюю частоту UART делим на наш округлённый делитель: 1000000/9 = 111111,111(1)
5) Считаем насколько полученная частота отличается от требуемой: (111111,111 - 115200) ~ 4089
6) Теперь переводим ошибку в проценты (4089/115200)*100% = 3,54%
7) Уарт передаёт символ за 10бит (8 - байт + 1 стоповый бит + 1 стартовый). Для успешного принятия символа требуется, что бы за 10 бит погрешность накопилась не больше чем на пол бита. Пол бита составляет 5% от 10 бит.
8) Итого понимаем, что для успешного приёма нужно что-бы погрешность частоты была не больше 5%. С одной стороны полученное значение в пункте (6) меньше 5%, значит Приём будет работать без ошибок. Но с другой стороны "на том конце" тоже могли заложиться на некоторое отклонение по частоте. Значит 5% допустимой погрешности надо делить на 2 (на обе стороны). Итого на уарт допустимо отклоняться не боллее 2,5%, а эта цифра уже меньше, полученной в пункте (6). Так что если делать на совесть, то надо уменьшить частоту, до такой, при которой полученная ошибка будет меньше 2,5%. А если для себя, тяп-ляп, и если есть уверенность что в компе uart держит частоту точнее 1,45% (5%-3,54%), то можно оставить скорость такой.

Уф. ничего не забыл?
ShuraX
Petka спасибо за подробный ликбез!
Делаю для себя, но на совесть, поэтому снижаем скорость пока не найду подходящий кварц.
ShuraX
Может вопрос не по теме, но не могу найти...
как в AVR Studio в диалоге "Select AVR Programmer" при выборе STK500 изменить скорость com порта на 38400, у меня выпадающий список не активен. И если прграмматор прошит для скорости 38400 - студия его не видет, если для скорости 115200 - все нормально, опеределяется как надо. (или в платной версии программы она активируется?)
Petka
Цитата(ShuraX @ Sep 26 2009, 09:44) *
...если прграмматор прошит для скорости 38400 - студия его не видет, если для скорости 115200 - все нормально...

как вариант программируйте другими программаторами, которые умеют менять baudrate.
cvv
Собрал программатор на связке ft232bl+atmega48.

Мега прошилась удачно но после рестарта светодиод не мигнул ни разу. При подключении программируемого девайса также не загорается. на запросы avrdude не отвечает.

не могу сообразить в чем грабля.

прошивку брал с первого поста. кварц на 18.432 МГц.

Кстати а почему в рекомендуемой установке фузов в картинке к первому посту BOD выключен?
Petka
Цитата(cvv @ Sep 26 2009, 16:34) *
Собрал программатор на связке ft232bl+atmega48.

Мега прошилась удачно но после рестарта светодиод не мигнул ни разу. При подключении программируемого девайса также не загорается. на запросы avrdude не отвечает.

не могу сообразить в чем грабля.

прошивку брал с первого поста. кварц на 18.432 МГц.

Кстати а почему в рекомендуемой установке фузов в картинке к первому посту BOD выключен?

1) Перемычку перекинули?
2) Никакого идеологического смысла в отключении BODа нет. На той картинке показано минимальное изменение заводских фузов, необходимое для запуска контроллера от внешнего кварца. BOD желательно включить, (BODEN programmed, BODLEVEL programmed).
cvv
Цитата(Petka @ Sep 26 2009, 16:17) *
1) Перемычку перекинули?
2) Никакого идеологического смысла в отключении BODа нет. На той картинке показано минимальное изменение заводских фузов, необходимое для запуска контроллера от внешнего кварца. BOD желательно включить, (BODEN programmed, BODLEVEL programmed).


1) да

2) ок. спасибо
Petka
Цитата(cvv @ Sep 26 2009, 17:21) *
2) ок. спасибо

Заработало?
cvv
Цитата(Petka @ Sep 26 2009, 16:31) *
Заработало?


пока нет. я решил на всякий случай еще раз перешить. минут через 15 прошивка должна закончится. надеюсь.
Petka
Цитата(cvv @ Sep 26 2009, 17:33) *
пока нет. я решил на всякий случай еще раз перешить. минут через 15 прошивка должна закончится. надеюсь.

Верификацию записанного делали? Если верифицировалось, то должно работать. Если не работает, то проверьте состояние вывода reset, наличие генерации на кварце, питание и работает-ли светодиод?
cvv
кажется разобрался. два резистора не того номинала и поэтому программатор не мог утянуть в 0 RESET целевого процессора. вероятно именно это приводило к зависанию.

Кстати мне кажется что номинал R10 должен быть 100 Ом а не 220 как в перечне к схеме.

заменил резисторы - предварительно поехало но со следующей граблей:

Код
# avrdude -p atmega48 -P "/dev/ttyUSB4"     -c stk500v2 -U eeprom:w:tm.eep

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.10s

avrdude: Device signature = 0x1e9205
avrdude: reading input file "tm.eep"
avrdude: input file tm.eep auto detected as Intel Hex
avrdude: writing eeprom (255 bytes):

Writing |                                                    | 0% 0.00s
avrdude: stk500v2_paged_write: loadpage instruction not defined for part "ATMEGA48"
Writing | ################################################## | 100% 0.00s

avrdude: failed to write eeprom memory, rc=-1

avrdude: safemode: Fuses OK

avrdude done.  Thank you.
#


не подскажеш что что это такое и как это полечить? мне всетаки нужно писать EEPROM ...
Petka
Цитата(cvv @ Sep 26 2009, 18:57) *
Кстати мне кажется что номинал R10 должен быть 100 Ом а не 220 как в перечне к схеме.

Почему так кажется? Что навело на эти мысли? Обоснуйте.
Цитата
[code]# avrdude -p atmega48 -P "/dev/ttyUSB4" -c stk500v2 -U eeprom:w:tm.eep
avrdude: stk500v2_paged_write: loadpage instruction not defined for part "ATMEGA48"

Так это под линуксом?
Какая версия avrdude?

P.S.
Нагуглил: bugfix была раньше такая ошибка, но в 2006 году уже залечили =)
cvv
заапгрейтил avrdude и все поехало без ошибок.

всплыл еще один нюанс:

Stk300 на старой машинке шил EEPROM на порядок быстрее

Спасибо за разработку.
Petka
Цитата(cvv @ Sep 26 2009, 19:27) *
Stk300 на старой машинке шил EEPROM на порядок быстрее

А avreal + ft2232 ещё быстрее =)
cvv
Цитата(Petka @ Sep 26 2009, 18:23) *
Почему так кажется? Что навело на эти мысли? Обоснуйте.


я думаю что в этом случае мы будем иметь более уверенный резет при новолунии и подобных ситуациях. прежде чем спаять твою схему я прошерстил довольно схем и более 33 Ом в этой цепи ни у кого не припоминаю.

Цитата(Petka @ Sep 26 2009, 18:23) *
> Так это под линуксом?


естественно

> Какая версия avrdude?

снапшот CVS конца 2006 года


Цитата(Petka @ Sep 26 2009, 18:30) *
А avreal + ft2232 ещё быстрее =)


серьезно? надо будет подумать об этой железке. Мне кажется светит ARM-ы шитьsmile.gif
Petka
Цитата(cvv @ Sep 26 2009, 19:44) *
я думаю что в этом случае мы будем иметь более уверенный резет при новолунии и подобных ситуациях. прежде чем спаять твою схему я прошерстил довольно схем и более 33 Ом в этой цепи ни у кого не припоминаю.

Тут всё просто: Вы же свои схемы программируете? Тогда вам известен номинал подтяжки Reset к Vcc. Считаете делитель, сравниваете с пороговым значением ресета из datasheet (0,1*Vcc минимум для Mega8). И приходите к выводу достаточно 220 Ом или нет. Для 220 Ом подтягивать reset к vcc можно номиналом от 2,2 кОм. Чего более чем достаточно для надёжной работы. 100 Ом может понадобится если вы подтянули 1 кОм. 33 Ома - если подтяжка 330 Ом, что уже чрезмерно. С другой стороны уменьшать последовательное сопротивление не стоит, т.к. оно обеспечивает защитное токоограничение на выводе меги в программаторе. Считаем: питание меги 5В, допустимый ток 20мА. Соответственно если вывод программатора будет закорочен на GND, то надо поставить токоограничивающий резистор не менее 250 Ом. Правда в absolute maximum ratings топустимый ток на пин указан 40 мА. это позволяет поставить резистор от 125 Ом. Думайте сами, решайте сами =)
Цитата
снапшот CVS конца 2006 года

Вот там то бага и жила.
Цитата
серьезно? надо будет подумать об этой железке. Мне кажется светит ARM-ы шитьsmile.gif

Olimex ARM-USB-OCD - хорошая реализация этого программатора. Скорости прошивки я выкладывал в топике по "avreal".
cvv
Цитата(Petka @ Sep 26 2009, 19:19) *
Тут всё просто: Вы же свои схемы программируете? Тогда вам известен номинал подтяжки Reset к Vcc. Считаете делитель, сравниваете с пороговым значением ресета из datasheet (0,1*Vcc минимум для Mega8). И приходите к выводу достаточно 220 Ом или нет. Для 220 Ом подтягивать reset к vcc можно номиналом от 2,2 кОм. Чего более чем достаточно для надёжной работы. 100 Ом может понадобится если вы подтянули 1 кОм. 33 Ома - если подтяжка 330 Ом, что уже чрезмерно. С другой стороны уменьшать последовательное сопротивление не стоит, т.к. оно обеспечивает защитное токоограничение на выводе меги в программаторе. Считаем: питание меги 5В, допустимый ток 20мА. Соответственно если вывод программатора будет закорочен на GND, то надо поставить токоограничивающий резистор не менее 250 Ом. Правда в absolute maximum ratings топустимый ток на пин указан 40 мА. это позволяет поставить резистор от 125 Ом. Думайте сами, решайте сами =)

Вот там то бага и жила.

Olimex ARM-USB-OCD - хорошая реализация этого программатора. Скорости прошивки я выкладывал в топике по "avreal".


еще раз спасибо!-)
ukrman
Petka подскажите как с помощью вашего программатора реанимировать мегу48.
Я работаю в CodeVision. Через терминал включаю режим 1 Mhz. Подкидываю проводок от X5 к XTAL1. Выставляю SCK Freq 57600 Hz.И делаю Erase Chip. Превожу програматор в fast режим, и при чтении чипа ошибка. Что я делаю не так?
Petka
Цитата(ukrman @ Sep 29 2009, 23:15) *
Petka подскажите как с помощью вашего программатора реанимировать мегу48.
Я работаю в CodeVision. Через терминал включаю режим 1 Mhz. Подкидываю проводок от X5 к XTAL1. Выставляю SCK Freq 57600 Hz.И делаю Erase Chip. Превожу програматор в fast режим, и при чтении чипа ошибка. Что я делаю не так?

Попробуйте ещё скинуть частоту ISP. 10кГц будет достаточно для реанимации.
Qwertty
Цитата(ukrman @ Sep 29 2009, 23:15) *
Petka подскажите как с помощью вашего программатора реанимировать мегу48.
Я работаю в CodeVision. Через терминал включаю режим 1 Mhz. Подкидываю проводок от X5 к XTAL1. Выставляю SCK Freq 57600 Hz.И делаю Erase Chip. Превожу програматор в fast режим, и при чтении чипа ошибка. Что я делаю не так?

Стирать как раз необязательно. Надо фьюзы перешивать. И только потом переходить в fast.
ukrman
Цитата
Попробуйте ещё скинуть частоту ISP. 10кГц будет достаточно для реанимации.
А как это сделать?
Цитата
Стирать как раз необязательно. Надо фьюзы перешивать. И только потом переходить в fast.
После стирания я считываю фьюзы и там везде "единички". Как их стереть не пойму
Petka
Цитата(ukrman @ Sep 30 2009, 11:05) *
А как это сделать?
После стирания я считываю фьюзы и там везде "единички". Как их стереть не пойму

1) в поле "SCK freq" выберите 7200
2) ОСТОРОЖНО!!!! фузы стирать не надо! Им надо установить ПРАВИЛЬНОЕ значение.
cvv
я тут обнаружил что я был не прав в плане что STK300 быстрее шьет EEPROM. извиняюсь
ukrman
а если при подключении МК диодик на прогере не горит, то конроллеру всё.можно выкинуть?
Petka
Цитата(ukrman @ Oct 1 2009, 11:30) *
а если при подключении МК диодик на прогере не горит, то конроллеру всё.можно выкинуть?

Нет, надо подать на программируемое устройство питание, проверить подтянут ли reset к питанию.
Метценгерштейн
Дико извиняюсь, но не готов все 63 страницы перечитывать )))
Какой схемой воспользоваться, чтобы повторить программатор- та, что в первой теме? Шью меги под AVReal, вернее собираюсь перейти с пони прога. USB конечно нужен интерфейс
ukrman
да. самый 1-ый пост, то что тебе надо. свежак

Цитата
Нет, надо подать на программируемое устройство питание, проверить подтянут ли reset к питанию.

Прошиваю в панельке, питание беру от прогера, точнее от USB . Ачто если в панельке шью, то обязятелен подтяг резета? Просто я втыкаю другой контроллер, загорается диод. Тут же не горит. И я в каком-то посте писал, что МК был залочен. я пытался разлочить с помощью 1Mhz - режима, баловался в фьюзами. И в какой-то момент он перестал загораться.До этого диод горел. Я просто не пойму как привести мегу48 в рабочее состояние (может я спалил её, а как проверить не знаю,вот и грешу на фюзы) . Да, и соответственно CodeVision выдаёт ошибку по SPI.
Метценгерштейн
есть принципиальная разница по выбору микросхем- FT232BM или FT232RL ? Там просто две папки со схемами. По какой лучше? И, DD2- это АВР у нас, а какой? если мега 8 квадратная, то в ней никак не 24 ноги???
ukrman
Цитата(Метценгерштейн @ Oct 1 2009, 13:31) *
есть принципиальная разница по выбору микросхем- FT232BM или FT232RL ? Там просто две папки со схемами. По какой лучше? И, DD2- это АВР у нас, а какой? если мега 8 квадратная, то в ней никак не 24 ноги???

Принципиальной разницы нет. Люди собирали и на FT232BM и на FT232RL. Все довольны. На RL обвяза меньше и у нас она стоит дешевле. Так что каждый исходит уже из собственных возможностей и соображений. Остальные ноги просто не задействованы, зачем их рисовать на схеме. Посмотрите на печатку и все станет ясно.
Petka
Цитата(ukrman @ Oct 1 2009, 14:07) *
...вот и грешу на фюзы...

Скорее всего вы сбросили в 0 фуз RSTDISBL. Это перевело вывод ресета меги из функции ресета в функцию GPIO.
Если это так, то теперь недоступен режим программирования по "Serial Downloading". Есть только один способ перешить фузы обратно - высоковольтное параллельное. "STK500v2 by Petka" не поддерживает данный режим. Или поменять чип.

Цитата(Метценгерштейн @ Oct 1 2009, 13:44) *
...Шью меги под AVReal, вернее собираюсь перейти с пони прога....

Avreal не поддерживает программаторы серии stk500. Пони прог тоже.
Метценгерштейн
Разобрался со схемой- мегу 8 буду ставить.
Я имел ввиду, что хочу соскочить с LPT порта на USB. И с понипрога на AVReal. Чем плохо, что он не поддерживает stk500 ? Для обычной жизни это как?
Petka
Цитата(Метценгерштейн @ Oct 1 2009, 14:55) *
Разобрался со схемой- мегу 8 буду ставить.
Я имел ввиду, что хочу соскочить с LPT порта на USB. И с понипрога на AVReal. Чем плохо, что он не поддерживает stk500 ? Для обычной жизни это как?

"AvrUsb500 by Petka" это ещё один вариант, основанный на схеме программатора stk500.
Метценгерштейн
Не понял. Так если я его и соберу- этот
"AvrUsb500 by Petka"

он не поддерживает stk500?

Я же его и собрался собирать.
Че-т я запутался
Petka
Цитата(Метценгерштейн @ Oct 1 2009, 15:39) *
Не понял. Так если я его и соберу- этот
"AvrUsb500 by Petka"

он не поддерживает stk500?

Я же его и собрался собирать.
Че-т я запутался

Так распутайтесь:
1) "AvrUsb500 by Petka" основан на Stk500. И использует для обмена в ПК протокол stk500v2.
2) Avreal и Ponyprog НЕ поддерживают протокол stk500v2. По этой причине Avreal и "AvrUsb500 by Petka" вместе не сопрягаются.
3) Протокол stk500v2 поддерживают большинство других программаторов AVR. Например avrdude, AVRStudio, CVAVR. Соответственно "AvrUsb500 by Petka" будет работать с avrdude, AVRStudio, CVAVR и пр.
4) Пробуйте уважать не только своё, но и чужое время. Ознакомьтесь с содержимым предыдущих "63 страниц". На многие вопросы уже неоднократно давались ответы.
Alex7
Здравствуйте.
Собрал программатор мега8 14.74 avrdude всё работает но вроде должно быть быстрее, где подкрутить?
Petka
Цитата(Alex7 @ Oct 2 2009, 13:04) *
Здравствуйте.
Собрал программатор мега8 14.74 avrdude всё работает но вроде должно быть быстрее, где подкрутить?

Переключить в режим fast!
Alex7
Цитата(Petka @ Oct 2 2009, 12:30) *
Переключить в режим fast!

Так вот вроде ж фаст
Petka
Цитата(Alex7 @ Oct 2 2009, 15:45) *
Так вот вроде ж фаст

Хорошо.
А другими программаторами (железными и софтовыми) пробовали?
А шьётся с какой скоростью?
P.S.
Скорее всего это из-за того что at90s в отличии от более новых не умеет программироваться сразу целыми страницами, поэтому значительно падает скорость их программирования. Тут и крутить нечего
Alex7
вот скрин записи, пробовал шить Uniprof на лпт приблизительно в 2раза быстрее.
Petka
Цитата(Alex7 @ Oct 2 2009, 16:37) *
вот скрин записи, пробовал шить Uniprof на лпт приблизительно в 2раза быстрее.

А Унипроф делает при этом очистку (erase?)
Doniak
Извиняюсь если не в тему но
Выше вы писали что не планируете поддержку Xmeg.
А есть ли у вас наработки какие нибудь примеры исходников?
Не подскажете на сколько схоже программирование Хмеги и более ранних AVR (кроме шин программирования).
Petka
Цитата(Doniak @ Oct 3 2009, 13:34) *
Извиняюсь если не в тему...

Атмел обладает большой любовью к изобретению новых протоколов (и интерфейсов), несовместимых с предыдущими. Надоело. Xmega очередное доказательство, что Атмелу наплевать на своих пользователей.
В ближайшее время поддержки XMega в программаторе "by Petka" не планируется. Из-за неперспективности XMega.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.