реклама на сайте
подробности

 
 
> AvrUsb500 by Petka. продолжение, Вариант программатора AVR, доступный для простого изготовления. ч2.
Petka
сообщение Oct 15 2009, 18:08
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 453
Регистрация: 23-08-05
Пользователь №: 7 886



Этот топик является логическим продолжением темы AvrUsb500 by Petka (вариант программатора AVR, доступный для простого изготовления)

На сегодняшний день (октябрь 2009) та тема составляет форумных 65 страниц.

Для облегчения поиска ответов и информации по программатору я создаю новую тему в которой содержится выжимка содержания из старой темы.

Предлагаю продолжить обсуждение программатора в этой теме.

Вопросы по функциональности
Boba Fett
Какие контроллеры можно будет шить данным программатором?
Petka
Все, которые поддерживают программирование через ISP.
Ильмар
Эээ
а вообще то кто то работал с данным программатором с мегой128 ?
Petka
Я работал. Так-же успешно программировались мега2560, мега48, мега8, мега8515, мега8, мега168. других не было под рукой.

bodja74
За какое время шьется и проверяется например мега8 или 16 на таком шнурке?
Petka
30кб прошивки avrdude заливает+проверяет за 18 секунд. соответственно мега 8 зашьётся и проверится ВСЯ за менее 5 секунд.
Carbon
При установке в студии скорости SPI =921,6kHz заливка в Mega16 16кб кода - 11сек. Верификация 7сек.

Alex305
Кто-нить юзал этот девайс в Vista Ult x64?
Roger
Юзаю под vista 32bit проблем нету видется как в AVR Studio так и CVAvr
Andrew Bond
Отчитываюсь: программатор прекрасно шьет и читает из-под Windows 7 x64 !!!
Несколько раз прошивал/читал ATMega8, используя AVRStudio 4.15.

wer_1
Здравствуйте! Собрал ваше устройство , работает прекрасно с вижн и студио, столкнулся теперь с проблемой . Не хочет работать с пони.
Petka
пони не поддерживает протокол stk500v2.

swisst
В соответствии со схемой контроллер питается от 5 V, сигналы выдает 5-ти вольтовые на разъем STK200/300, по сему если будет подключена периферия по SPI, которая расчитана на 3,3 V(карта памяти например), на плате программируемого контроллера, то ей будет кердык. Или я не прав?
Petka
Как показывает практика при наличии токоограничивающих резисторов в программаторе (а они есть) с 3х вольтовой периферией ничего не случается. Но в каждом конкретном случае всё-таки загляните в даташит на эту периферию. Толерантны ли её входы к 5ти вольтам? Есть ли защитные диоды? Разделены ли у Вас резистором MISO контроллера и выход периферии?

ivainc1789
Собрал данный программатор, работает хорошо пока у таргета 5 вольт. Сегодня нужно было залить прошивку в устройство с питанием 3v3 где 4 бит шина LCD разделяема с линиями SPI …
Petka
отключите автоопределение контроллера по уровню линии reset. (делается через терминал)


Вопросы по комплектации
Метценгерштейн
есть принципиальная разница по выбору микросхем- FT232BM или FT232RL ? Там просто две папки со схемами. По какой лучше?
Petka
Принципиальной разницы нет. Люди собирали и на FT232BM и на FT232RL. Все довольны. На RL обвяза меньше и у нас она стоит дешевле. Так что каждый исходит уже из собственных возможностей и соображений.

Ar2rius
Вопрос: а можно FT232BM заменить аналогом FT232BL?
Petka
можно. Это же то же самое только без свинца.

colombo_2007
Вставлю свои пять копеек: напрягает наличие FT232, сотит как все остальное вместе взятое
Igor26
2.6$ в розницу напрягает????
http://shop.efo.ru

Boba Fett
Какой все-таки камень желательно взять для программатора? (Оптимально цена/функционал)
Petka
мега88 если её нет, то мега8

zheka
Скажите а с кварцем 18 Мгц программатор будет работать быстрее чем с 14 МГц?
Petka
Я не заметил разницы.

zheka
Имеется дроссель проволочный на 22 uH - подойдет вместо L1?
Petka
пойдёт если ток не менее 0,5А.

millano
ни как не могу понять....
в индуктивность (SMD) ---- uH это - мкГн или как, и где мона подглятеть эти сокращения на ... и рус. и англ.?
Petka
p - пико, n - нано, u - микро, m - милли, k - кило, M - мега

zheka
Петка, скажите, а если у меня USB кабель с ферритовыми кольцами в концевом отделе, можно выкинуть дроссель из схемы?
Petka
Cтавить дроссель рекомендует производитель мостика USB-COM (FTDI). Без него стабильная работа не гарантируется.

Lubitel
Чем обусловлена частота кварца, и нельзя ли использовать 12 mГц ? (очень хочется)
Petka
частота кварца выбрана кратной стандартной скорости COM порта 115200. Можно конечно и другие кварцы ставить, но:
а) скорость программирования будет меньше
б) придётся изменить скорость работы по COM порту, и как следствие не всякий софт сможет работать с этим программатором

Lubitel
На сколько я знаю ft 232 требует кварц. А у вас его нет в схеме.
Прокомментируйте пожалуйста.
Petka
У Вас информация по предыдущему поколению чипов. Обвязка чипа ft232R - минимальна.

Azrail
Скажите, на сколько критично наличие екрана на шнуре ЮСБ и его длинна, и меня кабель длинной 70 см (отрезал ответку от удлинителя ЮСБ, шнур без екрана).
Petka
По спецификации ЮСБ без экрана могут эксплуатироваться только LowSpeed USB. т.е. мышки и клавиатуры. FT232 уже НЕ lowspeed.

lameralik
Нашел кварц 18.432 не будет ли косяков с atmega8 она же до 16
Petka
А можно ли есть просроченные сырки?


Вопросы по сборке
Carbon
Связи так и нет. С другими программаторами, студия, увидев stk500 со старой версией, предлагает его проапдейтить. Тут ситуация другая - она его не видит совсем.
Carbon
Разобрался. Принципиальное значение имеет цепочка резисторов R6, R8, R9, связывающая TARGET_RST с RST_ADC. Без них программатор не определяется ни CVAVR ни AVRстудией.
cz0
Цепочка резисторов R7/R12/R13 (обозначения по оригинальной схеме) играет ключевую роль в определении как таргета (точнее наличия его как такового) так и самого программатора. Если контроллер в программаторе не получает с ADC0 нужного значения, он не хочет общаться с программами, возвращая ошибку. Так он ведет себя не только в AVRStudio но и в avrdude.
Petka
Цепочка в моей схеме R6, R8, R9 отвечает за определение наличия программируемого контроллера. При подключении программатора к программируемому контроллеру ДОЛЖЕН загореться светодиод! Если этого не происходит - значит что-то не так в этой цепочке. Так-же при продключении шнура USB к программатору этот светодидод должен шесть раз быстро мигнуть.

Konstantin_M
Зачем нужен(или как используется) вход RST_ADC (ADC2\PC2 у ATMEGA8?) и можно ли обойтись без него ( если это вход)
Petka
Это вход. Он используется для определения подключения программатора к программируемой плате. Всё просто: Периодически измеряется напряжение, если оно в нужном диапазоне, то программатор зажигает светодиод (и разрешается программирование). Можно-ли без него? Можно. А зачем? На готовой печатке он уже разведён.

Serj78
Petka, а можно оставить неподключенным делитель на rst_adc? что он делает?
Petka
Этот вход отвечает за определение подключения к программируемому контроллеру. Без него работать не будет. Надо либо немного поправить прошивку, либо немного поправить схему.


Первоначальная прошивка программатора
jasper
Сделал себе подобную штуку…
Вот только программирование через PonyProg идет крайне медленно.
Чтение 8kB занимает, наверное, минут 20.
...
Это нормальная ситуация? Так и должно быть?
Или это я что-то не то делаю?
Fusion
Да... Так и есть... У меня минут 30 шился... Хорошо, что это только один раз.
Зато сейчас влет все шьет. Pony кажется теперь страшным тормозом. И еще его надо запустить, считать новый файл, прошить - и проверяет он всю флэш. А тут прямо из студии собрал - прошил.

Petka
Кроме понипрога первоначальную прошивку программатора можно сделать с помощью avrdude (он так же поставляется с WinAVR). Для этого:

1) В файл "avrdude.conf" (который лежит там где и "avrdude.exe") в соответствующее место добавить строки:

Код
programmer
  id    = "stk500_by_petka";
  desc  = "AvrUsb500 by Petka, reset=!txd sck=!rts mosi=!dtr miso=!cts";
  type  = serbb;
  reset = ~3;
  sck   = ~7;
  mosi  = ~4;
  miso  = ~8;
;

2) Выполнить команду:
Код
avrdude -p atmega168 -c stk500_by_petka -P \\.\com3 -i 10 -B 10 -b 9600 -U flash:w:mega168.hex   -U hfuse:w:0xDC:m -U lfuse:w:0xD7:m


(Не забудьте поменять "mega168" и "com3" на соответствующие Вашим)
Будут вопросы - задавайте.

konny
И ещё символы "\\.\" в командной строке avrdude, имхо, лишние, avrdude их просто игнорирует.
Petka
эти символы нужны для доступа к компортам номер которых больше 9, например к COM15 (при активном использовании микросхем FT232 количество компортов зарегистрированных в системе часто превышает 10 штук). Если номер компорта односимвольный, то этот префикс можно и не использовать. но лишним он никогда не бывает =)
P.S.
Информация относится вообще к Windows API. Т.е. так надо открывать файл компорта в windows , номер которого больше 9. Написано соответственно в MSDN.

Roger
Дошел до 9 пунка подготовки к прошивке
Modify «fuse bits». (in PonyProg checked bit means ''1').
И тормазнулся! Какие фьзы нужно ставить, точнее какие галочки
Petka
Фузы надо настроить так, что бы контроллер тактовался от внешнего кварца т.е. как написано в документации "Crystal Oscillator".
Ещё надо настроить встренный BOD. "On-chip Brown-out Detection (BOD)"

DVF
Спаял второй девайс. (С первым все ОК). Внешне без ошибок, но при подключении к РС опознается системой на СОМ5, PonyProg показывает затененный СОМ4, ну и соответственно Fault Connect.
Petka
FT232R каждая новая садится на новый КОМ порт. Pony использует только первые 4 КОМ порта. Посмотрите HOWTO.pdf. Там я описал как поменять номер ком порта в Винде.

Lubitel
Непонятно зачем reset меги подсоединяется к Ft232, как это работает???
Petka
Это очевидно, Ватсон! Что бы программировать мегу через Ft232. Само-собой что после программирования эту связь надо убрать. Читайте внимательно howto.pdf, doc.pdf

eXeC001er
подскажите: выводы DCD, DSR, .... нужны только для программирвоания самого кристала в программаторе в работе они никак не участвуют?
Petka
Да, выводы RTS, CTS, DTR и DSR микросхемы FT232 используются только при первоначальной прошивке программатора. При штатной работе они не нужны.
Верно. Если Вы прошьете программатор каким-либо другим способом, то будет достаточно TXD и RXD.

Carbon
Достаточно-ли для работы вашего программатора двух проводков Rx и Tx с FTDI-ки? Именно для работы, так как саму мегу мы заранее можем запрограммировать другим программатором.
Petka
Достаточно.


Вопросы по проверке работоспособности программатора

Roger
При включении свето диод должен мигать несколько раз?
Petka
Так-же при продключении шнура USB к программатору этот светодидод должен шесть раз быстро мигнуть.

RN3QLQ
После подачи питания программатор мигает светодиодом 5-ть раз примерно секунд за 10..12. При подключении к программируемому устройству светодиод постоянно горит.
Пробовал CV и AVRStudio - компилятор не видит программатор! При нажатии несколько раз Enter в Терминале - программатор не отзывается.
Что посоветуете?
Petka
Скорее всего контроллер работает от внутреннего RC 1MHz. А надо от внешнего кварца.
Похоже, что вы фузы не так выставили (или выставили, а прошить забыли).

11111
Моргать при включении должен 5-7 раз?
Petka
Ровно 6 раз.

Настройка программатора через терминал
lve
Не получается выйти в режим настройки
SOS
использую гипертерминал.
Petka
попробуйте в гипертерминале в "параматры ASCII" установить галочку "дополнять символы возврата каретки (CR) переводами строк (LF)"
ещё не забудьте выбрать правильный ком порт, отключить аппаратный контроль потоком и выставить скорость 115200.

lve
Забыл спросить, что означают первые строки -

Код
avrusb500v2-1.2

Enter SW Version Major in hex [2]:
Enter SW Version Minor in hex [a]:
Reset target at connector polarity test(1=on 0=off)[1]:

OK, my SW version is now: 2.0a (hex)
Select 'stk500 by petka' mode. (1=1Mhz 0=Fast)[0]:
Ready. Just close the terminal. No reset needed.

Petka
Первые две строки используетсю студией(и вроде только ей) для определения версии программатора.

Программатор может детектировать наличие подключения к программируемому контроллеру. Делает он путём определения наличия "подтяжки" к VCC линии RESET. Если подключение есть, то программатор зажгет свой единственный светодиод =). Этот тест можно отключить.

andr_doy
…. параметры порта в инспекторе устройств тоже менял ….
Petka
В "инспекторе устройств" ничего менять не надо. Это ни на что не влияет.

dr_jenia
естьопять одна проблемка: тервинал виснет при попытке обращения.
Petka
Прикладываю инструкцию для Виндового гипертерминала.

zheka
Петка, скажите, а что это за "Enter SW version minor"?
Petka
Это версия (минорная часть) прошивки программатора skt500v2. Студия по этой версии отличает что умеет программатор и что не умеет.
P.S.
Умолчательная комбинация "Major/minor" = "2/a"

lve
Это прошивка с управлением Fast / 1мГц - ?
Как управлять переключением режимов - ?
Petka
Зайти терминалом на скорости 115200, на появившийся виртуальный com порт. Несколько раз нажать Enter. Потом программатор выйдет в режим настройки. последним пунктом настройки будет выбор режима (1MHz/fast).


Работа с программатором в различных программах
Ильмар
Этот программатор должен указываться в программах как STK500? или как то подругому?
Petka
stk500v2

protek
Еще вопрос в АВЕР СТУДИИ нет платформы STK500v2
Petka
Попробуйте в студии выбрать просто "stk500".

Ar2rius
а что делать когда Студия просит обновить ПО STK500?
Petka
Отказывать.

Anybody
Недавно обновил AVRStudio до версии 4.16, и теперь при старте она хочет его обновить. Нужно ли это делать или просто забить.
Petka
Делать этого нельзя. Однако, что-бы она больше не беспокоилась и не тревожила своими напоминаниями можно зайти терминалкой на программатор и поменять версию на бОльшую.


Функциональность вывода «1MHz»


Serj78
И еще- с ножки С0 идет меандр с частотой 146 КГЦ!!!! и фронты его дрожат по фазе. (должно быть вроде 1 мгц?)
Petka
Сейчас посмотрел исходники. Да, на выводе должна быть частота порядка 150кГц.
lve
Все прекрасно работает, частота примерно 166 кГц.
usta
на X5 присутствует меандр с частотой 150 кГц.

afsh
Видимо, какая-то нестыковка в софте ATMega88. Я взял осциллограф и все смотрю, частота на выводе 1 Мгц - 0,1474 Мгц
Petka
Такая и должна быть. "1МГЦ" это условность. Главное наличие меандра.

Konstantin_M
Кстати как там этот мегагерц формируется, если не лень, конечно опять к проге возвращаться?
Petka
Настраивается таймер. В обработчике инвертируется заданный пин. Вот и весь меандр. Само-собой получается не мегагерц, а значительно меньше. но это не принципиально. Для спасения АВРок с неправильно выставленными фузами тактирования годится.

DVF
У данного программатора есть выход 1МГц. Как с его помощью можно воскресить МК - ATmega32? и подробнее, пожалуйста, если можно?
GDI
Подать этот 1МГц на вход внешнего тактирования МК, обычно это XTAL1, подробнее можно почитать в даташите на ваш контроллер в разделе о внешнем тактировании. Затем программатором исправить фьюзы на правильные.

Andrew Bond
...я только начинаю осваивать контроллёры. Расскажите пожалуйста, для чего нужен сигнал 1 МГц и как этим пользоваться? Вроде им можно восстановить неправильно прошитые фьюзы? Как это сделать и восстанавливает он бит SPIEN?
Petka
1) иногда пользователи неправильно зашивают фузы, определяющие способ тактирования АВРки. Например пользователь расчитывал на встроенный RC генератор, а запрограммировал фузы на внешний кварц или внешний генератор. тогда после ресета АВРка не сможет запустится, т.к. снаружи тактирование не подаётся. Поэтому не работает и дальнейшая перепрошивка чипа. Если подать ожидаемое внешнее тактирование, то АВРка снова может программироваться.
2) фуз SPIEN соответственно таким образом поправить не получится т.к. он СОВСЕМ отключает возможность программирования по ISP. Будьте внимательны.

vladumur
Может неправильно применил вывод 1 Мгц? я подсоединял вывод 1Мгц к xtal1-9пин.
Petka
Правильно.
На самом деле генерация меандра на выводе "1Mhz" софтовая. поэтому там меандр ~100кГц. укажите в студии более низкую (например 125кГц)частоту контроллера и попробуйте повторить эксперимент.


Если по какой-либо причине собираем прошивку для программатора сами
11111
Если Вас не затруднит, с этого момента подробнее. Как самому поменять в прошивке используемые пины
Petka
скачиваете и устанавливаете winavr.
скачиваете последнюю версию исходников.
в файле "analog.h" меняете #define RESETADC на номер АЦП к которому подключен делитель с ресета.
в файле "led.h" букву порта и номер пина, куда подключен светодиод.
в файле "spi.h" аналогичным образом настраиваете куда подключены сигналы "TG_SCK", "TG_MISO", "TG_RESET" и "TG_MOSI".
в файле "makefile" прописываете свой чип и свой кварц.
потом в каталоге с исходниками запускаете через консоль "make".
получаете прошивку.

Petka
Советую собрать HEX самому, тем более, это достаточно просто:
1) установить WinAVR.
2) в makefile выбрать свой камень и частоту кварца
3) выполнить "make all" и HEX файл готов.

sergey_kkks
Каким компилятором нужно компилировать программу?
Petka
gcc (winavr).

FCK
А если снизить частоту до 57600, тогда точность будет по КодВижну 0,2%
Petka
В том-то и дело что на stk500v2 заложена стандартная частота 115200. 57600 это уже будет отклонением от стандартных настроек, и например кодвиженовский проггер не сможет работать с этим железом.

ShuraX
По поводу BAUDRATE вопросик. Я так понял для моего кварца (16МГц) необхоимо поставить 38400?
Хотя сейчас он у меня стоит 115200 и прекрасно связывается и отвечает.
Petka
Считаем вместе:

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%), то можно оставить скорость такой.


Вопросы про модификацию «by Petka»
Давно назрела необходимость описать что же такое "AvrUsb500 by Petka" и чем же отличается от других "USB" программаторов.

1)
Вопрос:
В чём ключевое отличие схемотехники "AvrUsb500 by Petka" от прочих программаторов, построенных по схеме (USB->COM + AVR) например от tuxgraphics?
Ответ:
В схеме программатора кроме линий RX/TX от USB преобразователя подключены так-же линии RTS, CTS, DTR, DSR. Причём подключение сделано совместимым с распространёнными "COM-port bit-bang programmer" программами (например PonyProg, avrdude).
Вопрос:
И что это даёт?
Ответ:
а) Это даёт возможность запрограммировать кристалл AVR, входящий в программатор, без использования другого программатора. (Решение проблемы "Курицы и яйца"). Это очень полезно для тех, у кого нет под рукой другого программатора AVR (новички в AVR или те кто лишился LPT порта).
б) Это избавляет от дополнительного разъёма (для программирования программатора), что позволяет сделать очень компактную печатную плату (размером с брелок).

2)
Вопрос:
Чем отличается прошивка в "AvrUsb500 by Petka" от Tuxgraphics?
Ответ:
а) Прошивка "AvrUsb500 by Petka" была сделана на основе исходников Tuxgraphics.
б) К оригинальной прошивке была добавлена возможность менять расположение всех внешних сигналов (для удобства создания своей разводки платы)
в) добавлена возможность задавать свою скорость UART.
г) добавлена возможность задавать свою частоту кварца.
д) добавлена возможность конфигурировать режим 1Mhz/fast через компорт
е) добавлена возможность использования mega48 в программаторе за счёт отключения консольного режима при компиляции для mega48.

3)
Вопрос:
Что ещё сделано в "AvrUsb500 by Petka"?
Ответ:
а) Сделана разводка печатных плат для схемотехники "AvrUsb500 by Petka". Прилагаются готовые разводки (для удобного изготовления печатных плат в домашних условиях) как для ft232rl, так и для ft232bm.
б) Каждая топология рассчитана для односторонней печатной платы. Нет необходимости делать перемычки или совмещать шаблоны.
в) Сделаны готовые фотошаблоны в PDF как для лазерно-утюгового метода, так и для фоторезистивных технологий.

Qwertty
Собственно вопрос - как изменение схемотехники вызвало уменьшение программы?
Petka
Изменена не только схемотехника, но и прошивка. При компиляции под M48 отключается терминальный режим.

Carbon
….По схеме от tuxgrafix первой версии ….
Petka
Прошивка сделана для моей схемы (схема отличается от tuxgraphics). как минимум не совпадает разпиновка на разъём программирования.


Cz0
Метод, предложены Вами куда интересней, потому что позволяет шить контроллер штатными средствами без костылей типа битбанга....Идея ясна. Ваш вариант - всего лишь разновидность serial bit banging, посмотрев конфигурацию avrdude нашел много различных вариантов, в том числе и тот, что у вас, обзывается sipprog (он же ponyser). Остается вопрос: почему в настройках понипрога Вы инвертируете rts dtr и cts? Потому, что соотв. выходы FT232 инвертированы?
Petka
В оригинальной схеме ponyser уровни +12в, -12в (RS232) с помошью диодов, резисторов, стабилитронов преобразуются соответственно в +5в и 0в. (а ft232 делает 0в и +5в соответственно ) Отсюда и инверсия.

Lubitel
На схеме (на выходном разъеме) Обозначение Jtag сигналов. Планируется ли его реализовать?
Petka
У меня в планах нет, может кто-нибудь другой попробует?

lve
Былоб здорово добавить Плис Altera (JTAG), обычно используется ByteBlasterMV и т.п., еще
есть USB blaster.
Petka
Не на этом железе.
Огромный плюс этого программатора в том что его очень просто собрать в домашних условиях (односторонняя печатка, наличие шаблонов для "лазерного утюга" и для "фоторезиста", можно спрограммировать АВРку без программатора, минимум деталей, не надо (под/на)страивать, соответствие спецификации USB, и поддержка "фирменного" протокола stk500v2, открытость исходников, стандартные драйвера). Если пытаться сделать из этого программатора нечто больше, то многие достоинства могут потеряться =(.

GDI
А почему бы не сделать генерацию 1МГц сигнала аппаратным ШИМом, например с ноги PD5(PD6, PB1), если у вас там мега48? Судя по схеме из первого поста темы, все эти ножки свободны.
Petka
Можно, ножки свободны. Более того, в программе заложена возможность использовать аппаратный ШИМ. Но плата уже разведена. Может в будущих ревизиях этот вывод и будет выведен
Go to the top of the page
 
+Quote Post
76 страниц V  « < 6 7 8 9 10 > »   
Start new topic
Ответов (105 - 119)
simer
сообщение Nov 11 2009, 15:04
Сообщение #106


Участник
*

Группа: Участник
Сообщений: 19
Регистрация: 22-01-08
Пользователь №: 34 312



Petka, а когда планируется выход новой версии прошивки? Можно туда добавить мигание светодиодом при активности?
Go to the top of the page
 
+Quote Post
Petka
сообщение Nov 11 2009, 15:19
Сообщение #107


Профессионал
*****

Группа: Свой
Сообщений: 1 453
Регистрация: 23-08-05
Пользователь №: 7 886



Цитата(simer @ Nov 11 2009, 18:04) *
Petka, а когда планируется выход новой версии прошивки? Можно туда добавить мигание светодиодом при активности?

1) На днях появится прошивка с новой фичей, сейчас занимаюсь её отладкой.
2) Можно. А зачем?
Go to the top of the page
 
+Quote Post
simer
сообщение Nov 11 2009, 16:36
Сообщение #108


Участник
*

Группа: Участник
Сообщений: 19
Регистрация: 22-01-08
Пользователь №: 34 312



Цитата(Petka @ Nov 11 2009, 17:19) *
...
2) Можно. А зачем?


Ну для наглядности что-ли smile.gif все равно светодиод есть уже. Глазу приятнее и видно что прошивается smile.gif
Кстати, для диагностики удобнее будет сделать мигание при активности MISO, тем что если камень дохлый мигать не будет ничего.

P.S. А название фичи в новой прошивке секрет пока? smile.gif

Сообщение отредактировал simer - Nov 11 2009, 16:38
Go to the top of the page
 
+Quote Post
Petka
сообщение Nov 11 2009, 17:19
Сообщение #109


Профессионал
*****

Группа: Свой
Сообщений: 1 453
Регистрация: 23-08-05
Пользователь №: 7 886



Цитата(simer @ Nov 11 2009, 19:36) *
Глазу приятнее и видно что прошивается smile.gif

А программа-программатор не наглядно показывает, программируется или нет?
Цитата
P.S. А название фичи в новой прошивке секрет пока? smile.gif

Терпение.
Go to the top of the page
 
+Quote Post
kokaradik
сообщение Nov 12 2009, 09:37
Сообщение #110


Участник
*

Группа: Участник
Сообщений: 16
Регистрация: 14-07-09
Пользователь №: 51 247



собрал, зашил прогер, перемычку перекинул. при включении мигает, при подключении камня - горит диод. но понипрог не хочет видетьsad.gif ошибк 24
помогите плизsad.gif
я новичок rolleyes.gif
Go to the top of the page
 
+Quote Post
simer
сообщение Nov 12 2009, 10:15
Сообщение #111


Участник
*

Группа: Участник
Сообщений: 19
Регистрация: 22-01-08
Пользователь №: 34 312



Цитата(kokaradik @ Nov 12 2009, 11:37) *
собрал, зашил прогер, перемычку перекинул. при включении мигает, при подключении камня - горит диод. но понипрог не хочет видетьsad.gif ошибк 24
помогите плизsad.gif
я новичок rolleyes.gif


PonyProg не поддерживает этот программатор для прошивки таргета
Go to the top of the page
 
+Quote Post
kokaradik
сообщение Nov 12 2009, 14:51
Сообщение #112


Участник
*

Группа: Участник
Сообщений: 16
Регистрация: 14-07-09
Пользователь №: 51 247



все работает и очень быстро! спасибо, Petka!!!!!
Go to the top of the page
 
+Quote Post
IURY
сообщение Nov 13 2009, 10:03
Сообщение #113





Группа: Участник
Сообщений: 6
Регистрация: 11-11-09
Пользователь №: 53 554



Подскажите, как надо правильно?
Я развел свою платку и изменил расположение сигналов
в порту C контроллера.
Изменил выводы в analog.h и spi.h,
а также контроллер и частоту в Makefile.
После компиляции получаю ошибку:

Compiling C: main.c
avr-gcc -c -mmcu=atmega8 -I. -gdwarf-2 -DF_CPU=7372800UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=./main.lst -std=gnu99 -Wundef -MMD -MP -MF .dep/main.o.d main.c -o main.o
In file included from main.c:13:
timeout.h:12:1: warning: "F_CPU" redefined
<command-line>: warning: this is the location of the previous definition
main.c:816:1: error: macro "_cpl" requires 3 arguments, but only 2 given
main.c: In function '__vector_9':
main.c:816: error: '_cpl' undeclared (first use in this function)
main.c:816: error: (Each undeclared identifier is reported only once
main.c:816: error: for each function it appears in.)
make.exe: *** [main.o] Error 1

Сообщение отредактировал IURY - Nov 13 2009, 10:29
Go to the top of the page
 
+Quote Post
Petka
сообщение Nov 13 2009, 12:00
Сообщение #114


Профессионал
*****

Группа: Свой
Сообщений: 1 453
Регистрация: 23-08-05
Пользователь №: 7 886



Цитата(IURY @ Nov 13 2009, 13:03) *
Подскажите, как надо правильно?

main.c:816:1: error: macro "_cpl" requires 3 arguments, but only 2 given
main.c: In function '__vector_9':
main.c:816: error: '_cpl' undeclared (first use in this function)

где-то ошиблись в описании портов.
Go to the top of the page
 
+Quote Post
IURY
сообщение Nov 13 2009, 12:27
Сообщение #115





Группа: Участник
Сообщений: 6
Регистрация: 11-11-09
Пользователь №: 53 554



Цитата(Petka @ Nov 13 2009, 17:00) *
где-то ошиблись в описании портов.

Если я выбираю atmega48, то компиляция успешна.

Обозначил(в исходниках ничего не трогал, кроме контроллера и частоты) :
PC5 - mosi
PC4 - rst_adc
PC3 - target_rst
PC2 - miso
PC1 - sck
Atmega8
7372800 Hz
Go to the top of the page
 
+Quote Post
кт315
сообщение Nov 13 2009, 15:41
Сообщение #116





Группа: Участник
Сообщений: 9
Регистрация: 13-11-09
Пользователь №: 53 605



собрал ваш программатор на FT232BL и атмеге8. Атмегу прошил другим программатором от протоса. приподаче питания моргает, при подлючении камня загорается светодиод. На выходе 1 мГц не наблюдаю ни какой частоты. Она должна там присутствовать всё время? У протоса она там присутствует всё время, как тест правильной работы. И естественно соде вижен его не видит.
Go to the top of the page
 
+Quote Post
Petka
сообщение Nov 13 2009, 20:36
Сообщение #117


Профессионал
*****

Группа: Свой
Сообщений: 1 453
Регистрация: 23-08-05
Пользователь №: 7 886



Цитата(IURY @ Nov 13 2009, 15:27) *
Если я выбираю atmega48, то компиляция успешна.

Обозначил(в исходниках ничего не трогал, кроме контроллера и частоты) :
PC5 - mosi
PC4 - rst_adc
PC3 - target_rst
PC2 - miso
PC1 - sck
Atmega8
7372800 Hz

запакуйте zip'ом исходники, и выкладывайте сюда, посмотрю что там не собирается.

Цитата(кт315 @ Nov 13 2009, 18:41) *
...приподаче питания моргает, при подлючении камня загорается светодиод. На выходе 1 мГц не наблюдаю ни какой частоты. Она должна там присутствовать всё время?

Нет, частота там присутствует только в режие "1MHz" по умолчанию программатор работает в режиме "fast".
Цитата
И естественно соде вижен его не видит.

Ничего естественного. При правильной сборке программатор работает сразу. Пробовали заходить терминалкой на порт программатора (как написано в FAQ)?
Go to the top of the page
 
+Quote Post
IURY
сообщение Nov 14 2009, 03:43
Сообщение #118





Группа: Участник
Сообщений: 6
Регистрация: 11-11-09
Пользователь №: 53 554



Цитата(Petka @ Nov 14 2009, 01:36) *
запакуйте zip'ом исходники, и выкладывайте сюда, посмотрю что там не собирается.

Выкладываю исходники, которые компилировал.
Прикрепленные файлы
Прикрепленный файл  source.zip ( 25.61 килобайт ) Кол-во скачиваний: 16775
 
Go to the top of the page
 
+Quote Post
Petka
сообщение Nov 14 2009, 09:43
Сообщение #119


Профессионал
*****

Группа: Свой
Сообщений: 1 453
Регистрация: 23-08-05
Пользователь №: 7 886



Цитата(IURY @ Nov 14 2009, 06:43) *
Выкладываю исходники, которые компилировал.

Ваша правда.
Моя недоработка. Обновите файл "gpio.h"
Прикрепленные файлы
Прикрепленный файл  gpio.zip ( 776 байт ) Кол-во скачиваний: 233
 
Go to the top of the page
 
+Quote Post
Petka
сообщение Nov 15 2009, 11:02
Сообщение #120


Профессионал
*****

Группа: Свой
Сообщений: 1 453
Регистрация: 23-08-05
Пользователь №: 7 886



Доброго времени суток!
После продолжительной работы выкладываю на общее обсуждение следующую версию прошивки программатора.
Основное и единственное отличие новой версии - поддержка "printf - отладки".
Что это такое? При отладке программ зачастую необходимо знать, в какой стадии выполнения находится программа. Закончила ли подпрограмма вычисления или нет? Чему равно значение некоторой внутренней переменной? В каком порядке выполняются составные части алгоритма и прочие задачи.
Большую часть этих задач позволяет решить аппаратный отладчик. Однако не у всех есть возможность использования аппаратных отладчиков. Цена, дополнительные разъёмы, программная поддержка отладчика, неудобство или неумение использования - всё это может препятствовать использованию аппаратных отладчиков.
Что предлагается взамен? Многие в качестве альтернативы используют для отладки debug_printf, "my_printf", библиотечный printf. Вставляя в интересующие точки своих программ для контроллеров что-то типа:
Код
printf("test point #1");


Код
printf("internal var 'speed' = %i \n", speed);


Обычно вывод функций printf настраивается на uart. Однако это тоже требует некоторых накладных расходов: дополнительные разъёмы, выделенный uart специально для отладки, требования к частоте тактирования.
Предлагается использовать для вывода отладочного "printf" пины контроллера, которые используются для его программирования (MOSI, MISO, SCK). Всё равно на стадии отладки программатор уже подключен к чипу, есть все необходимые разъёмы и подключения. Штатный uart при этом в большинстве случаев останется свободным!

Осталось выбрать 3х-проводный интерфейс для передачи данных от чипа к программатору. Для себя я выбрал следующие требования к интерфейсу:
1) Интерфейс должен быть полностью синхронным. (Снимаем требования к частоте контроллеров. Контроллеры могут спать, снижать свою частоту и т.д.)
2) Интерфейс должен быть дуплексным. (Хочется не только получать данные, но и отправлять)
3) Любая сторона может на неограниченное время приостановить обмен (с обоих сторон контроллеры, которые могут производить передачу данных в фоновом, низкоприоритетном процессе). При этом передаваемые данные не должны разрушаться. Как результат этого требования обмен данными должен происходить на максимальной скорости, которую могут обеспечить ОБЕ стороны.
4) В протоколе должно быть заложено выделение границ слов в передаваемом битовом потоке.

Из известных мне протоколов ни один не смог удовлетворить вышеперечисленным требованиям.
Пришлось изобретать велосипед протокол. Что получилось и предлагаю обсудить:
Протокол называется "abd-протокол". В нём используются 3 линии:
"a" - линия тактирования. Для мастера выход, для слэйва вход.
"b" - возвратная линия тактирования. Для мастера вход, для слэйва выход.
"d" - двунаправленная линия данных. Является как входом так и выходом для двух сторон. Между мастером и слэйвом должен быть подключен последовательный токоограничивающий резистор, для обеспечения надёжной работы в моменты переключения выводов вход/выход.

Мастер наблюдает за состоянием линии "b". Если линия "b" переключилась в то же состояние, что и линия "a", - значит слэйв уже принял свой бит данных на линии "d", переключил линию на выход и выдал очередной свой бит на линию "d". После этого мастер может прочитать очередной бит от слэйва и выставить на передачу очередной свой бит. После этого мастер переводит состояние линии "a" в состояние, противоположное линии "b". И процесс повторяется заново.
Это общая идея обмена. Теперь детали: данные передаются в каждую сторону как на возрастающем фронте клоков, так и на спадающем. По одному фронту передаётся очередной бит в сдвиговый регистр приёмника, а по другому фронту выдаётся признак конца слова (тот момент, когда из сдвигового регистра можно читать данные). Кроме того в протокол заложена возможность остановить клоки, когда данных ни у мастера ни у слэйва нет. Более подробное описание содержится в исходниках (Файлы "abd.c" и "abd.h").

Этот протокол был реализован, оттестирован на моделях, а затем и в реальном железе. В программатор "by Petka" добавлена реализация слэйва протокола "abd".
Итого:
Для того, чтобы добавить в свою программу возможность отладки, надо в список компилируемых файлов проекта добавить "abd.c" и "abd_putchar.c". В main добавить:

Код
#include "abd_putchar.h"

FILE abd_file = FDEV_SETUP_STREAM(abd_master_putchar, NULL, _FDEV_SETUP_WRITE);

int main(void){
    stderr = stdout = stdin = &abd_file;

Всё.
Теперь в любом месте можно просто писать:
Код
        printf("Hello World! №%i\n", num);
        num++;

В прикрепленном к посту файле "abd_demo.zip" демка использования.

Как увидеть получившийся "Hello World!" ?
Прошиваете чип. Открываете терминалкой ком порт программатора, замыкаете перемычку "1Mhz" (программатор должен быть в режиме "fast"). И наблюдаете свой "Hello World!"!
Исходник сделан для winavr. С небольшими доработками будет работать и для любого другого компилятора. Скоро выложу портированные версии для других компиляторов.
Прикрепленные файлы
Прикрепленный файл  abd_demo.zip ( 6.1 килобайт ) Кол-во скачиваний: 297
 
Go to the top of the page
 
+Quote Post

76 страниц V  « < 6 7 8 9 10 > » 
Reply to this topicStart new topic
4 чел. читают эту тему (гостей: 4, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 2nd September 2025 - 09:10
Рейтинг@Mail.ru


Страница сгенерированна за 0.01676 секунд с 7
ELECTRONIX ©2004-2016