Программатор для AVR.

Когда пришло время "переходить" на AVR , встал вопрос: "А чем программировать?"...

После ознакомления со всеми доступными схемо-техническими решениями, я сделал вывод о самом удобном, для себя - AVR910.

Плюсы: Рекомендовано Atmel'ом. Поддерживается большинством SOFT'a для AVR (CodeVisionAVR). Прошивки обновляются "фанатами" этого программатора - немецкими "друзьями" .... http://mikrocontroller-projekte.de/..... Исходник (вероятно со временем, в связи с обновлением исходника, эта ссылка перестанет работать...) прошивки доступен для скачивания.

Минусы: необходимо программировать кристалл для программатора. (Пишите... чем нибудь помогу... подскажу..)

По схеме с сайта:

Схема с сайта

... я "нарисовал" схему и плату ...рекомендованного кварца на 7,3728 MHz под рукой не оказалось, поэтому поставил, имевшийся в наличии, кварц на 8,0 MHz... и изменил прошивку ( убрал ";" в соответствующих строках исходника... ).

было:

.....................

;******** Chrystals for maximum Baudrates
.equXTAL = 7373; XTAL frequency, Khz (7.3728 Mhz)
;********
.equBAUD = 115200; Data rate, bauds
.equN = 3; for 7.3728 Mhz/115.200Baud

;********
..........................

;********* Baudrates for 8 Mhz Chrystal
;.equXTAL = 8000; XTAL frequency, Khz (8.000 Mhz)
;*********
;.equBAUD = 38400; Data rate, bauds
;.equN = 12; for 8.00 Mhz/38.400 Baud
;*********
;.equBAUD = 19200;Data rate, bauds
;.equN = 25; for 8.00 Mhz/19.200 Baud

;*********
;.equBAUD = 9600; Data rate, bauds ! Not valid for AVRProg, use for avrdude only !
;.equN = 51; for 8.00 Mhz/9.600 Baud
;*********

..............................

стало:

.....................

;******** Chrystals for maximum Baudrates
;.equXTAL = 7373; XTAL frequency, Khz (7.3728 Mhz)
;********
;.equBAUD = 115200; Data rate, bauds
;.equN = 3; for 7.3728 Mhz/115.200Baud

;********
..........................

;********* Baudrates for 8 Mhz Chrystal
.equXTAL = 8000; XTAL frequency, Khz (8.000 Mhz)
;*********
;.equBAUD = 38400; Data rate, bauds
;.equN = 12; for 8.00 Mhz/38.400 Baud
;*********
.equBAUD = 19200;Data rate, bauds
.equN = 25; for 8.00 Mhz/19.200 Baud

;*********
;.equBAUD = 9600; Data rate, bauds ! Not valid for AVRProg, use for avrdude only !
;.equN = 51; for 8.00 Mhz/9.600 Baud
;*********

..............................

.....

Собрал все... прошил... подключил - не работает :-).... оказалось в разъеме перепутал MISO и MOSI... исправил все заработало... вот что получилось:

 

Программатор RS232

...из за замены кварца программатор работает на скорости 19.200 бод, вместо возможных - 115.200 бод... неудобств от этого не испытываю ... :-)

В заключение...

... возникла необходимость делать устройство на AVR с RS232... и вот "переставляя" разъем нульмодемного кабеля COM порта (порт то один на компе), так "натренировал" пальцы рук, что решил повторить эту же конструкцию, но с USB ... для чего купил FT232....и ATtiny2313..... готового примера со схемой и платой в Р-САВ найти в Инете не удалось, поэтому придется все делать самому... :-(

Итак, время пришло...

Схема в P-CAD

Плата в P-CAD

Сначала впаял только FT232 и детали, необходимые для ее запитки...

Плата с FT232 Вид сверху

...93С46 не впаивал, так как интересно былы проверить как работает без нее .... РАБОТАЕТ как написано...нормально :-).

Подключил к РС, "Винда" сразу нашла USB<->COM. Установил предлагаемые на сайте FTDI VCP дрова, получилось, что появился новый COМ. У меня получился COM7, но номер соответсвует первому свободному (не определенному) в системе и может быть от 1 до 256.

Далее впаял ATtiny2313 с обвесом..... и через "старый" программатор "прошил" FUSE и собственно программу...

Программирование

Как шить FUSE и собствеенно, программа взята с сайта http://mikrocontroller-projekte.de/ , прога (hex) , прога (asm)

для удобства выкладываю FUSE, которые нужно изменить:

Название FUSE
Было
Стало
"Галочки"
CKSEL0
0
1

CKSEL1

0
0
v
CKSEL2
1
1
CKSEL3
0
1
SUT0
0
0
v
SUT1
1
1
CKDIV8
0
1
v

...вообще говоря, каждый программатор по своему "организует" доступ пользователя к FUSE - битам... так, в CV - к каждому биту, а в AVR_PROG - к группе бит, с выводом текстовых пояснений и т.д., главное чтобы, в результате изменений FUSE - бит, контроллер был настроен на работу - от внешнего резонатора, без деления на 8, в диапазоне 3...8 МГц... и "длинным" сбросом...

все это очень подробно "разжевано", с рисунками, на вышеуказанном сайте... изложение материала на НЕМЕЦКОМ не мешает :-)... а вот здесь - по-русски..

...пропускаю процесс "поиска", мучений с разъемом... и т.д :-)

разъем

...получилось вот что -

AVR910_USB

 

 

Это работающий вариант. Оставлюсь на некоторых "тонкостях".

I.

Встроенный программатор в CV_AVR работать "отказался", девайс "видит", но ID не распознает. На мой взляд это связано с тем, что скорость работы программатора возросла до 115200 бод, а для CV (пробовал на v1.24.6.) это много, если это так, то в новых версиях все должно работать (исправят китайские братья).

С AVR_PROG v1.40 работает без проблем... Единственно, надо понимать, что "горячее" подключение к USB косается только виртуального COM - порта (FT232) и не распространяется на подключение программатора к этому порту. (порт инициализируется ("занимается") при каждом подлючени, а программой это обрабатывается как ошибка в работе с потом... если я ошибаюсь - поправте... :-) )

Другими словами, если при работающей программе программатора, отключить-подключить шнур USB (переставить в другое гнездо, например), то возникнет ошибка и придется перезапускать программу.

При этом, на отключение питания программатора ( припитании его от "программируемой" схемы) реакция "нормальная", ошибки не возникает.

возникла проблема - USB установился как COM7, в CV_AVR, в установках, старший COM - 6.... изменил номер на 2-ой, у меня он оказался свободным.... включил и результата не увидел...дело в том, что в CV_AVR программа программатора запускается в любом случае, даже при отключенном программаторе, а вот AVR_PROG из состава AVR Studio более корректна. Запустив ее я увидел требуемый результат - программатор обнаружен.

ВЫВОД: Как и предполагалось (об этом написано) память (93С46) при работе FT232 в режиме виртуального порта (VCP) НЕ НУЖНА.

II.

Скорость программирования напрямую зависит от скорости работы COM порта. При переходе со скорости 19200 на 115200 бод, скорость программирования увеличилась раз 1,5...2 раза. Время программирования с верификацией ATmega8 "под завязку" (8 кб), специально записал 0xAA во все ячейки, составило 8 (восемь)!!!!! секуннд, и 14 сек для 19200. (программатор AVR_PROG v1.40). Для справки: распространенная схема на AVR910-USB на двух AT90S2313 (avr309) шьет AT90S2313 (2 кб) - 1 мин.

III.

Скорость программирования зависит от программы программатора. Так для 19200 AVR_PROG v1.40 пишет без верификации за 9 сек., а CV_AVR то же самое, на той же скорости - за 38 сек!!! (chip erase делал перед каждым опытом :-) )

IV.

Задумался над вопросом о целесообразности питания программатора от программируемой схемы. При работе от COM порта выбора не остается, поэтому и вопрос не возникал. А при работе через USB - можно от него и питать. Что лучше не определился, оставил от USB. ....появятся мысли и аргументы - напишу :-)

 

Пока вот что: ..может показаться, что возникает проблема если программируемая схема питается от 3,3 (2,7или 1,8) вольт, а от программатора подаются 5 вольтовые сигналы, но проблемы нет... верхний предел напряжения питания, и допустимого на выводах, практически всех МК от Atmel , 5.5 вольт... все будет нормально работать... за то, при питании программатора от USB , если возникла переполюсовка питания на программируемой схеме - программатора эта переполюсовка не коснется...хотя, есть вероятность подачи отрицательного, относительно "массы" напрядения -5 вольт на выводы МК в программаторе, что, наверняка ее из строя выведет.... :-( ....не знаю... надо подумать....

01.07.06г. Ну что же, особенности появились! :-).....

Как известно, после окончания программирования, выводы SPI программатора переводятся в высокоимпендансное (Z) состояние, и, таким образом, ни как не мешают работе МК в схеме. Другими словами, отключение программатора от программируемой схемы не требуется. Но!!!!! Важно то, что состояние выводов (Z) будет таковым только до ВЫКЛЮЧЕНИЯ питания программатора. Как только программатор будет обесточен, то состояние выводов SPI программатора станет активным (каким 0 или 1 не знаю, не проверял) и заблокирует работу МК основной схемы. Если программатор питается от программируемой схемы, то питание программатора снимается одновременно со снятием питания всей схемы. И, следовательно, ничего "особенного" не происходит. Если же программатор (как сейчас у меня) притается от USB, и после окончания программирования снимается питание (расстыковывается кабель USB ), то программируемый МК "подвешивается".

 

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

10.07.06г. Особенности продолжаются!!!!

Оказалось, что при отсутвия напряжения на выводах питания AVR, микросхема ушпешно запитывается через "информационные" входы. То есть, если запитать ATtiny2313 от программируемой схемы, то при отключении питания "tiny" будет "подпитываться" от FT232 через выводы UART. Даже зеленый сведодиод "еле тлеет", но НЕ ГАСНЕТ! И что, главное, при возобновлении питания прогр.схемы не происходит СБРОСА "tiny". "Tiny" не выходит в режим, и "подвешивает" программируемую схему..

А при питании от USB начитаеться "борьба" между напряжением питания программируемой схемы и напряжением USB через выводы SPI. У меня это выражается в устойчивом изменении результата измерения ADC. Правда на единицу младшего разряда, но разница есть! То есть, работа прогр.схемы зависит от того подключен к ней программатор или нет. При работе с COM вариантом таких проблем не было... Грустно.

Решить проблему можно, на мой взляд, "переходом" на питание от прогр.схемы с "огранизацией" гарантированного сброса "tiny", или гальванической развязки "tiny" и FT232 по выводам UART.

Я, по-прежнему, "питаю" программатор от USB, но окончательную проверку работы схемы провожу при отключенном программаторе. Лень победить невозможно!!!! P.S. На "горячее" подключение/отключение программатора прогр.схема ни как не реагирует! :-)

V.

Подключение памяти 93С46 позволяет менять идентификацонные номера виртуального порта. По умолчанию, в саму FT232 "зашито" VID- 0403 и PID-6001 ,и без 93С46 эти идентификаторы изменить нельзя, поэтому если к РС одновременно подключить два устройства на FT232, то возникнет ошибка - два одинаковых устройства... Ни на что больше установка 93C46 не влияет, и выигрыша ни какого не дает.

 

В связи, с тем, что AT90S2313 все менее и менее доступны (видимо выпуск прекращен..) - скоро "переделаю" плату AVR910-COM под ATtiny2313....

"Переделал" плату COM под ATtiny2313.... :-)

Плата в PCAD

Вывод "RES_TINY" используется только при программировании собственно программатора.

 

 

Повторение и распространение только приветствуется :-)..

Кто не хочет паять сам - пишите, сделаю на заказ. (за дорого :-) )

(C)STAS633

27.05.06-03.08.06г.

Главная

Hosted by uCoz