|
AvrUsb500 by Petka. продолжение, Вариант программатора AVR, доступный для простого изготовления. ч2. |
|
|
|
Oct 15 2009, 18:08
|
Профессионал
    
Группа: Свой
Сообщений: 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 Можно, ножки свободны. Более того, в программе заложена возможность использовать аппаратный ШИМ. Но плата уже разведена. Может в будущих ревизиях этот вывод и будет выведен
|
|
|
|
|
 |
Ответов
(105 - 119)
|
Nov 11 2009, 15:04
|
Участник

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

|
Petka, а когда планируется выход новой версии прошивки? Можно туда добавить мигание светодиодом при активности?
|
|
|
|
|
Nov 11 2009, 16:36
|
Участник

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

|
Цитата(Petka @ Nov 11 2009, 17:19)  ... 2) Можно. А зачем? Ну для наглядности что-ли  все равно светодиод есть уже. Глазу приятнее и видно что прошивается  Кстати, для диагностики удобнее будет сделать мигание при активности MISO, тем что если камень дохлый мигать не будет ничего. P.S. А название фичи в новой прошивке секрет пока?
Сообщение отредактировал simer - Nov 11 2009, 16:38
|
|
|
|
|
Nov 11 2009, 17:19
|
Профессионал
    
Группа: Свой
Сообщений: 1 453
Регистрация: 23-08-05
Пользователь №: 7 886

|
Цитата(simer @ Nov 11 2009, 19:36)  Глазу приятнее и видно что прошивается  А программа-программатор не наглядно показывает, программируется или нет? Цитата P.S. А название фичи в новой прошивке секрет пока?  Терпение.
|
|
|
|
|
Nov 12 2009, 09:37
|
Участник

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

|
собрал, зашил прогер, перемычку перекинул. при включении мигает, при подключении камня - горит диод. но понипрог не хочет видеть  ошибк 24 помогите плиз я новичок
|
|
|
|
|
Nov 12 2009, 10:15
|
Участник

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

|
Цитата(kokaradik @ Nov 12 2009, 11:37)  собрал, зашил прогер, перемычку перекинул. при включении мигает, при подключении камня - горит диод. но понипрог не хочет видеть  ошибк 24 помогите плиз я новичок  PonyProg не поддерживает этот программатор для прошивки таргета
|
|
|
|
|
Nov 12 2009, 14:51
|
Участник

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

|
все работает и очень быстро! спасибо, Petka!!!!!
|
|
|
|
|
Nov 13 2009, 10:03
|
Группа: Участник
Сообщений: 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
|
|
|
|
|
Nov 13 2009, 12:27
|
Группа: Участник
Сообщений: 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
|
|
|
|
|
Nov 13 2009, 15:41
|
Группа: Участник
Сообщений: 9
Регистрация: 13-11-09
Пользователь №: 53 605

|
собрал ваш программатор на FT232BL и атмеге8. Атмегу прошил другим программатором от протоса. приподаче питания моргает, при подлючении камня загорается светодиод. На выходе 1 мГц не наблюдаю ни какой частоты. Она должна там присутствовать всё время? У протоса она там присутствует всё время, как тест правильной работы. И естественно соде вижен его не видит.
|
|
|
|
|
Nov 13 2009, 20:36
|
Профессионал
    
Группа: Свой
Сообщений: 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)?
|
|
|
|
|
Nov 14 2009, 03:43
|
Группа: Участник
Сообщений: 6
Регистрация: 11-11-09
Пользователь №: 53 554

|
Цитата(Petka @ Nov 14 2009, 01:36)  запакуйте zip'ом исходники, и выкладывайте сюда, посмотрю что там не собирается. Выкладываю исходники, которые компилировал.
Прикрепленные файлы
source.zip ( 25.61 килобайт )
Кол-во скачиваний: 16775
|
|
|
|
|
Nov 14 2009, 09:43
|
Профессионал
    
Группа: Свой
Сообщений: 1 453
Регистрация: 23-08-05
Пользователь №: 7 886

|
Цитата(IURY @ Nov 14 2009, 06:43)  Выкладываю исходники, которые компилировал. Ваша правда. Моя недоработка. Обновите файл "gpio.h"
Прикрепленные файлы
gpio.zip ( 776 байт )
Кол-во скачиваний: 233
|
|
|
|
|
Nov 15 2009, 11:02
|
Профессионал
    
Группа: Свой
Сообщений: 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. С небольшими доработками будет работать и для любого другого компилятора. Скоро выложу портированные версии для других компиляторов.
|
|
|
|
|
  |
4 чел. читают эту тему (гостей: 4, скрытых пользователей: 0)
Пользователей: 0
|
|
|