Jump to content

    

Petka

Свой
  • Content Count

    1438
  • Joined

  • Last visited

Everything posted by Petka


  1. Этот топик является логическим продолжением темы 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 Можно, ножки свободны. Более того, в программе заложена возможность использовать аппаратный ШИМ. Но плата уже разведена. Может в будущих ревизиях этот вывод и будет выведен
  2. мультикаст в данной задаче не поможет? а TTL=1 ? Хотя нет, TTL=1 не поможет. Проверил. Роутер TTL не уменьшает.
  3. AvrUsb500 by Petka. продолжение

    Цитата(74LS00 @ Aug 21 2016, 22:43) ... Вопрос Готовая прошивка есть под 7.3728 кварц и мегу 168 ? ... Нет. Цитата(74LS00 @ Aug 21 2016, 22:43) ... Вопрос Или опять собирать. Соберётся, но работать не будет. Те версии, что я собирал для кварца 7,3727 были "особенные". Для того, что бы программатор успевал на малой частоте выполнять нужную работу была выкинута часть расширенного функционала и проведена мелкая оптимизация. Если ОЧЕНЬ надо, то попробую найти те исходники. Но как говорится без гарантий =)
  4. Цитата(john1770 @ Feb 2 2016, 08:24) Дискавери у меня есть . Хотелось собрать Versaloon Можно перешить "дискавери" в "Versaloon".
  5. AvrUsb500 by Petka. продолжение

    Цитата(makaroff @ Dec 7 2015, 15:30) Petka, спасибо и за программатор и за то, что до сих пор отвечаете на вопросы. Стал использовать Atmel Studio 7. Всё удобно в ней и замечательно. И шьётся в ней всё очень быстро. Одна беда - постоянно, перед прошивкой, вылазит сообщение: ... Проверьте номиналы резисторов в программаторе.
  6. AvrUsb500 by Petka. продолжение

    Цитата(makaroff @ Dec 3 2015, 13:09) ... The signature of the attached tool is AVRISP_2, which is unexpected. В крайней прошивке программатора сигнатура исправлена. Обновите прошивку.
  7. Посоветуйте проц ARM

    Цитата(mantech @ Oct 15 2015, 13:30) Странно, вообще-то это противоречит спецификации усб, которая обязывает устройства обеспечивать обратную совместимость.. Ага, и USB видеокарта тоже на 1.1 должна работать? =)
  8. Косяк у Кейла

    Цитата(zltigo @ Oct 11 2015, 19:44) Вам просто следовало-бы наконец понять, что "do-while-zero" является сама по себе ненужным трюком и еще в каких-то "эквивалентах" не нуждается. ... Согласен, конструкция не нужна при одном или нескольких нижеследующих случаях. 1) Если в работе используется только один компилятор. (IAR к примеру) 2) Если в работе используется только одна архитектура. (ARM к примеру) 3) Если в работе участвует только один человек. (С высокой культурой программирования) 4) Если в работе не требуется следовать стандартам индустрии. (MISRA C к примеру) 5) Если в работе не требуется использовать макросы-как-функции. (Для целей отладки, например) 6) Если в работе используется компилятор с полностью отключенной оптимизацией, или настолько древний, что константы в условиях не обрабатываются на стадии компиляции. 7) Если в работе принято не признавать своих заблуждений.
  9. Косяк у Кейла

    Цитата(den_po @ Oct 11 2015, 17:52) Ну то есть что вы сначала оспаривали мои слова, а потом с ними согласились, это мой провал? Ну ок, "гуру" меня размазал. ... Не утруждайтесь. Это такой стиль. Или как принято говорить: двойные стандарты. Когда я в этой теме просил "гуру" дать ссылки на подтверждение своих голословных заявлений (http://electronix.ru/forum/index.php?s=&showtopic=130098&view=findpost&p=1361284) , то "гуру" не соизволил ничего ответить по существу дела. Вместо этого "гуру" зачем-то приплёл не относящийся к делу пустой "for(;;)" прекрасно понимая что это совсем не эквивалент do-while-zero конструкции. Забавно получилось, что "гуру" вместо признания своей ошибки начал загонять себя ещё глубже, ссылаясь на "творца Си" Денниса Ритчи. Однако, "гуру" забыл что в сеть попали исходники самых первых трансляторов. По исходникам становится очевидно, что конструкция for вообще отсутствовала в первом компиляторе а для циклов "творец" использовал while. P.S. Будьте добрее. Всем хороших выходных.
  10. Цитата(_Mikhail_ @ Sep 18 2015, 16:35) К сожалению, в GCC такого не нашел ( Буду пока смотреть в сторону скрипта линковки Как было сказано выше можно на регионы памяти назначать целиком единицы линковки. К примеру всё из startup.o размещать во внутренней памяти а всё остальное во внешней.
  11. Цитата(_Mikhail_ @ Sep 18 2015, 09:24) Может кто подскажет, как сказать линковщику, что есть внешняя RAM? Использую LPCXpresso 7.9.0. В настройках проекта (MCU setting) добавил соответствующую секцию, но не помогает. При линковке сообщение, что не хватает внутреннего ОЗУ... Во внешнее линковать и не пытается. Гуглить "скрипт линкера".
  12. Косяк у Кейла

    Цитата(zltigo @ Aug 31 2015, 23:49) ... Ты откуда взял это выражение с двойными скобками? Я лет 30 назад из K&R - просто другого не было ничего и с ТЕХ ПОР ТАК ПИШУ. Сейчас скачал 3 издание, там на вскидку попытался найти но все уже какое-то причесанное под учебник с явными операторами сравнения. ... Тут такое дело... Код от "Самого" Ритчи: https://github.com/mortdeus/legacy-cc/blob/...120c/c11.c#L219 И не надо фантазировать на пустом месте по поводу скобок. P.S. Так я от Вас и не получил подтверждения Ваших слов про: "...ибо while(константа) принципиально ошибочное выражение,..." Получил только очередные фантазии про цикл for(;;), которого ВООБЩЕ не было в первых компилаторах Си. А while был. И автор языка для циклов использовал именно while.
  13. Косяк у Кейла

    Цитата(zltigo @ Aug 29 2015, 00:43) Вы, очевидно не поверите, Очевидно, тут не вопрос веры. Цитатано компилятор скобки не "выкинет", он выполнит НЕ РАССУЖДАЯ предписанные ими действия. С пробелами еще проще - их игнорирование описано стандартом, так-что компилятор де-юре не думает, что кто хотел сказать пробелами. Сказали "А", говорите и "Б". Если "лишние" пробельные символы компилятор может удалять(игнорировать) без предупреждений, то и валидные конструкции "while(0)", "for(;;)", "#if 0", по той-же самой логике транслятор должен обрабатывать согласно стандарту "НЕ РАССУЖДАЯ". Что бы не уводить обсуждение в сторону прошу подкрепить или опровергнуть Ваше заявление Цитата...Да и сам трюк, увы, грязноват, ибо while(константа) принципиально ошибочное выражение, хотя из-за его распространенности... Откуда вы это взяли? Есть какой-то стандарт где это описано? Отраслевые инструкции? Исследования? В книжке какой-то прочитали? Бложик? Твиттер? Сплетни? С удовольствием ознакомлюсь с источником такой информации.
  14. Косяк у Кейла

    Цитата(zltigo @ Aug 28 2015, 22:22) Не смотря на то, что Вам так забавно, все так и происходит, если активизировать полный набор warnings. По умолчанию - не ругается. Резюме: "вменяемый компилятор" по умолчанию не выдаёт предупреждение на вполне законную конструкцию. Плюсик к IAR Systems. ЦитатаНе давать, а ПРЕДУПРЕЖДАТЬ, что написанная программистом конструкция была бессмысленна и компилятор нее выкинул, но может программист не пожалевший времени на нажатие кнопок, все-же рассчитывал на какой-то другой эффект??? В качестве литературной гиперболы: в конструкции: Кодr = (a * b) + (c * d); тоже есть "лишние конструкции", которые транслятор "выкинет". Например, скобки вообще "лишние". Да и пробелы совсем не нужны. Может программист "все-же рассчитывал этими скобками на какой-то другой эффект"? Резюме: наличие широкого спектра предупреждений в трансляторах это хорошо. Но порою производители "инструментов" немного перегибают палку. P.S. Модераторам: из топика имеет смысл обсуждение конструкции do-while-zero вынести в отдельную тему.
  15. Косяк у Кейла

    Цитата(zltigo @ Aug 28 2015, 21:55) Это просто борьба с потенциальной ошибкой, котороая ДЕЙСТВИТЕЛЬНО имеет очень большую вероятность быть сделанной. Вот по этой причине и пошли на соглащение, что тут уж все способы хороши. 1) С точки зрения стандарта Си конструкция do-while-zero не является "Implementation-Defined Behavior", "Undefined behavior" или пр. Так что поводов "давать по рукам" программисту никаких нет. 2) Уважаемый Вами инструмент от "IAR Systems" имеет возможность проверять в том числе и правила "MISRA C". Было бы забавно наблюдать что на единственно возможную конструкцию согласно правилам "MISRA C" транслятор при проверке будет выдавать предупреждение.
  16. Косяк у Кейла

    Цитата(zltigo @ Aug 28 2015, 17:46) .... Да и сам трюк, увы, грязноват, ибо while(константа) принципиально ошибочное выражение, хотя из-за его распространенности большинство компиляторописателей забили на предупреждение .... Что-то задело меня это безапелляционное утверждение. Для Си-программистов встраиваемых систем группа "энтузиастов" из индустрии разработала стандарт "MISRA C". Приведу небольшую выдержку из стандарта редакции 2004 года. ЦитатаRule 19.4 (required): C macros shall only expand to a braced initialiser, a constant, a string literal, a parenthesised expression, a type qualifier, a storage class specifier, or a do-while-zero construct. [Koenig 82–84] These are the only permitted uses of macros. Storage class specifiers and type qualifiers include keywords such as extern, static and const. Any other use of #define could lead to unexpected behaviour when substitution is made, or to very hard-to-read code. In particular macros shall not be used to define statements or parts of statements except the use of the do-while construct. Nor shall macros redefine the syntax of the language. All brackets of whatever type ( ) { } [ ] in the macro replacement list shall be balanced. The do-while-zero construct (see example below) is the only permitted mechanism for having complete statements in a macro body. The do-while-zero construct is used to wrap a series of one or more statements and ensure correct behaviour. Note: the semicolon must be omitted from the end of the macro body. For example: Код/* The following are compliant */ #define PI 3.14159F /* Constant */ #define XSTAL 10000000 /* Constant */ #define CLOCK (XSTAL/16) /* Constant expression */ #define PLUS2(X) ((X) + 2) /* Macro expanding to expression */ #define STOR extern /* storage class specifier */ #define INIT(value){ (value), 0, 0} /* braced initialiser */ #define CAT (PI) /* parenthesised expression */ #define FILE_A "filename.h" /* string literal */ #define READ_TIME_32() \ do { \     DISABLE_INTERRUPTS (); \     time_now = (uint32_t)TIMER_HI << 16; \     time_now = time_now | (uint32_t)TIMER_LO; \     ENABLE_INTERRUPTS (); \ } while (0) /* example of do-while-zero */ /* the following are NOT compliant */ #define int32_t long /* use typedef instead */ #define STARTIF if( /* unbalanced () and language redefinition */ #define CAT PI /* non-parenthesised expression */ Так что если заниматься программированием для встраиваемых систем, такая нотация макросов является не только "допустимой", но и обязательной (с точки зрения MISRA C).
  17. Цитата(zltigo @ Aug 12 2015, 22:51) Хреново. Что делать будем?
  18. Cortex-M7

    Цитата(scifi @ Jul 1 2015, 16:26) Код    /* copy-init variables */     memcpy(&__data_start__, &__etext, &__data_end__ - &__data_start__);     /* zero-init variables */     memset(&__bss_start__, 0, &__bss_end__ - &__bss_start__); Та же проблема, но теперь вынесена в libc. 1) Какие гарантии, что memset не рассчитывает на заранее инициализированную/очищенную область памяти? 2) При оптимизации LTO будет ли вообще этот memset как вызов libc или цикл очистки будет "заинлайнен"? Всё это меня очень сильно смущает. Есть ли какие-нибудь гарантированные способы обойти эти неоднозначности? (без АСМа)
  19. Cortex-M7

    Цитата(zltigo @ Jul 1 2015, 12:49) ... Ну а на кортексе даже startup на C пишется естественно. ... Как вы умудряетесь в startup на C делать очистку секции "bss" (инициализированые нулями данные)? У меня это единственная часть, которая делается инлайн-ассемблером. Если делать на Си, то код обнуления области памяти не всегда корректно работает (зависит от компилятора). Видимо, компилятор рассчитывает на изначально нулевое значение переменной счётчика, что не так на стадии стартапа.
  20. Cortex-M7

    Цитата(DmitryM @ Apr 26 2015, 08:58) Не согласен, вот например, smartfusion2. И это не монстр от xilinx or altera with cortex-a9(x2). Согласен, классный чип. Внешние конфигурашки не нужны, даже старшие чипы не требуют никаких радиаторов, встроенный кортекс выбирает команды на частоте 160 МГц (это Ксении на заметку, что не только у япошек есть быстрый флеш для контроллеров) Шина процика выведена в ПЛИС, что позволяет сделать практически любое количество необходимой периферии. 100 дополнительных ШИМов? Легко! Столько же УАРТов? Можно! Десятки аппаратных умножителей позволят решать целочисленные задачи DSP. Мне понравилось.
  21. AvrUsb500 by Petka. продолжение

    Цитата(wockman @ Nov 16 2014, 00:18) Подскажите плиз где скачать последнию прошивку и печатку, а то что то полазил и не нашел, не хочется всю ветку опять просматривать. тут в первом посте: http://electronix.ru/forum/index.php?showtopic=42679 под строкой "Актуальные на 8 июля 2009 года документы:"
  22. Цитата(nanorobot @ Nov 14 2014, 20:45) вроде что то стало доходить: должно быть три файла: один хекс с частями для обоих ядер, и два ELF , по одному для каждого ядра, для отладки. Да, самый разумный вариант. ЦитатаНо как сие получить - пока все равно загадка. Сначала отделите мухи от котлет. Сделайте два "проекта" всё что относится к M0 в один, остальное в другой. Если будут сложности по сборке каждого проекта - обращайтесь. Потом с помощью objcopy и srecord можно всё это поместить в один хекс. Начните с раздельных ELF.
  23. Цитата(nanorobot @ Nov 13 2014, 22:12) Не считал этот момент принципиальным, ибо нынешний скрипт линкера дает оба формата. Но если нужно выбрать что то одно, я предпочел бы elf. Хм. Скрипт линкера не даёт вообще никаких выходных файлов. Вообще он к выходным форматам отношения не имеет. Если нужно получить один общий HEX, то лучший способ - ознакомиться с у утилитами objcopy и srecord Общий elf имеет смысл получать только для целей отладки. Т.к. для M0 ядра у вас отладочной информации в HEX скорее всего не содержится, то преобразование HEX -> ELF ИМХО бессмысленно. П.С. Опишите подробнее, что у вас имеется, и что вы хотите сделать. Что вы называете "проектом"? Для меня "проект" в разделе "opensource" это, например, Makefile.
  24. Цитата(nanorobot @ Nov 12 2014, 14:16) В сухом остатке: - Как прилинковать файл? - Да так же, как и все остальные! Этот файл, по оношению к проекту, сторонний. Вот как то и нужно линкеру указать путь к нему, адрес линковки и т.п. Как это сделать - об этом и был вопрос Назревает вопрос: Что вы хотите получить на выходе "объединения" кода от двух ядер? Один общий HEX файл или один общий elf файл?