Универсальный AVR-программатор на Arduino.

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

b707,  обычно критичные к таймингам места программы пишутся на ассемблере, а тут всё на вайринге. Вот и выходит, что с одной версией компилятора получаются одни тайминги, с другой версией уже другие. 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

b707 пишет:

честно говоря. мне не вполне понятно - как это "компилируется, но не работает". Если бы между версиями была какя-то разница, то вообще не компилировалось бы....

сравнить хэксы, отличающиеся места посмотреть дизассемблером и станет всё понятно )))

amphiton
Offline
Зарегистрирован: 28.04.2017

Ну вот решил я сного повторить неудачный с первого раза для меня проект )) У меня в распоряжении 3 ПК, 2 на  Windows 7 и один WIN 10. Запустилась патченная прога только на одном из Пк с Win 7. На других выдавал ошибки что нет DLL ки какой то (сразу не записал не помню какая) , поставил DLL ку  стала выкидывать прогу AVRDUDES .   Так что не только программатор нужно настараивать тут еще проги непонятно почему не стратуют не некоторых ПК.

P.S. Все проги запускал под Админскими правами, да и сам админ с компами на ты ))

Еще заметил момент при чтении фьюз выдает все ноли .

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

amphiton, какие ddl-ки? Для работы нужно всего два файла. avrdude.exe и *.conf Можно взять из архива Jaeger, включаете, находите на какой ком-порт устройство  "село", и дальше в командной строке:

R:\temp>avrdude -p m328p -P com6 -c scratchmonkey_pp  -U flash:r:"test_flash.hex":i

avrdude.exe: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.02s

avrdude.exe: Device signature = 0x1e950f (probably m328p)
avrdude.exe: reading flash memory:

Reading | ################################################## | 100% 5.16s

avrdude.exe: writing output file "test_flash.hex"

avrdude.exe: safemode: Fuses OK (E:FF, H:D9, L:62)

avrdude.exe done.  Thank you.

 

Jaeger
Jaeger аватар
Offline
Зарегистрирован: 23.03.2018

Необязательно использовать пропатченную avrdude, можно использовать и "штатные" дуды, которые идут в составе с оболочками, например: AVRdudess или Burn-o-mat и др. В этом случае выбрать программатор - Atmel STK500V2 in parallel programming mode или другой   Atmel STK500V2 режим. Пропатченная avrdude нужна если хотите чтобы работала лед-индикация состояния программатора (чтение, запись и др), а так же режим TPI для  самых мелких мк. Пробовал на 2х компах с ХР и WIN7.

amphiton
Offline
Зарегистрирован: 28.04.2017

с командной строки чет выдает только фьюзы биты

 

avrdude: Device signature = 0x1e950f (probably m328p)
avrdude: reading flash memory:
 
Reading | ################################################## | 100% 5.60s
 
avrdude: writing output file "test_flash.hex"
avrdude: can't open output file test_flash.hex: Permission denied
avrdude: write to file 'test_flash.hex' failed
 
avrdude: safemode: Fuses OK (E:FD, H:DA, L:FF)
 
avrdude done.  Thank you.
 
 
тут видно что нет доступа к файлу и фьюзы странные
 
amphiton
Offline
Зарегистрирован: 28.04.2017

У меня AVRDUDE похоже чудит только не пойму в чем прикол

 

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

amphiton, фузы у вас правильные, от старой "наны",  но в данной папке у вас нет прав на запись. Доступ делайте средствами операционной системы.

amphiton
Offline
Зарегистрирован: 28.04.2017

Без патчей ( STK500V2 in parallel programming mode) вроде  работает только иногда говорит порт занят, а вот патченный вариант зависает и молчит.

amphiton
Offline
Зарегистрирован: 28.04.2017

По доступу видел поправил, с командной строки на STK500V2 in parallel programming mode работает, на патченной нет.

 

amphiton
Offline
Зарегистрирован: 28.04.2017

Жму ответ а выходят отделные сообщения.

 

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

amphiton пишет:

Жму ответ а выходят отделные сообщения.

А какие должны сообщения выходить? :)

amphiton
Offline
Зарегистрирован: 28.04.2017

dimax пишет:

amphiton, какие ddl-ки? Для работы нужно всего два файла. avrdude.exe и *.conf Можно взять из архива Jaeger, включаете, находите на какой ком-порт устройство  "село", и дальше в командной строке:

R:\temp>avrdude -p m328p -P com6 -c scratchmonkey_pp  -U flash:r:"test_flash.hex":i

avrdude.exe: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.02s

avrdude.exe: Device signature = 0x1e950f (probably m328p)
avrdude.exe: reading flash memory:

Reading | ################################################## | 100% 5.16s

avrdude.exe: writing output file "test_flash.hex"

avrdude.exe: safemode: Fuses OK (E:FF, H:D9, L:62)

avrdude.exe done.  Thank you.

 

Вот  дома нашел dll ку на что ругалась система ftd2xx.dll после подкидывания в систему AVRDUDES выдает ошибку при загрузке приложения 0хс000007b для выхода нажмите ОК.

amphiton
Offline
Зарегистрирован: 28.04.2017

Jaeger пишет:

Необязательно использовать пропатченную avrdude, можно использовать и "штатные" дуды, которые идут в составе с оболочками, например: AVRdudess или Burn-o-mat и др. В этом случае выбрать программатор - Atmel STK500V2 in parallel programming mode или другой   Atmel STK500V2 режим. Пропатченная avrdude нужна если хотите чтобы работала лед-индикация состояния программатора (чтение, запись и др), а так же режим TPI для  самых мелких мк. Пробовал на 2х компах с ХР и WIN7.

Проверил AVRdudess  без патчей на WIN 10 запустилась без вопросов,  ошибок и ругни  на ftd2xx.dll нет,  программа не вылетает. Патчи не идут ((

Jaeger
Jaeger аватар
Offline
Зарегистрирован: 23.03.2018

ftd2xx.dll - это элемент драйвера USB-UART- конвертера на FT232RL. Этот драйвер идет в комплекте с Arduino IDE. Устанавливается автоматом при втыкании конвертера в USB. Патченая дуда может работать с программатором типа Bit-Bang на конвертере FT232RL, поэтому должен быть установлен драйвер. Возможно в этом причина.

amphiton
Offline
Зарегистрирован: 28.04.2017

Jaeger пишет:

ftd2xx.dll - это элемент драйвера USB-UART- конвертера на FT232RL. Этот драйвер идет в комплекте с Arduino IDE. Устанавливается автоматом при втыкании конвертера в USB. Патченая дуда может работать с программатором типа Bit-Bang на конвертере FT232RL, поэтому должен быть установлен драйвер. Возможно в этом причина.

Установил Arduino IDE не помогло  вылетает ошибка програмы  7b, без патчей все ок. Есть еще варианты ??  Бурномат и AVRDUDESS ведут себя с патчами по разному но оба не работают. Я весь путь до запуска и компиляции патчей не проходил, возможно там какие то библиотеки требует что у меня не установлены. Без них похоже не будут патчи идти. Я просто залил ваш hex,до этого программатор вообще мертв был.

Jaeger
Jaeger аватар
Offline
Зарегистрирован: 23.03.2018

Что бы установить драйвер для конвертера на FT232RL нужен сам ковертер или установщик драйвера https://www.ftdichip.com/Drivers/D2XX.htm  

amphiton
Offline
Зарегистрирован: 28.04.2017

Jaeger пишет:

Что бы установить драйвер для конвертера на FT232RL нужен сам ковертер или установщик драйвера https://www.ftdichip.com/Drivers/D2XX.htm

Не в них дело. Поставил драйвера, все так же, только я драйвера раньше вашего сообщения подкинул, и с вашей ссылки тоже запускал не помогает.

 

Jaeger
Jaeger аватар
Offline
Зарегистрирован: 23.03.2018

Скачайте по ссылке из статьи ( 1-й пост) патченную дуду без поддержки Bit-Banga. Должно работать. 

Jaeger
Jaeger аватар
Offline
Зарегистрирован: 23.03.2018

У меня 4 компа, 2 дома, 2 на работе. На всех установлен драйвер на FT232RL - конвертер, поэтому проблем не возникало. Что бы драйвер установился походу нужен и сам конвертер. Попробовал на компе "офисных планктонов", так и есть, как Вы описали. Установщик драйвера не помог.   

amphiton
Offline
Зарегистрирован: 28.04.2017

Jaeger пишет:

У меня 4 компа, 2 дома, 2 на работе. На всех установлен драйвер на FT232RL - конвертер, поэтому проблем не возникало. Что бы драйвер установился походу нужен и сам конвертер. Попробовал на компе "офисных планктонов", так и есть, как Вы описали. Установщик драйвера не помог.   

а вот тут кстати возможно и ответ на вопрос, у меня ардуинка китаец на CH340 , патч похоже только для оригиналов на FT232RL там врятли одинаковая реализация. Что то сразу не подумал .

Для повторяющих нужно сделать пометку патчи для оригинальных Ардуин на FT232RL

 

 

Jaeger
Jaeger аватар
Offline
Зарегистрирован: 23.03.2018

Немного не верно понимаете суть вопроса. Патченная дуда по ссылке из статьи должна работать не зависимо от того какой конвертер USB-UART у вас установлен на ардуине. Дуда по ссылке из поста #48 дополнительно пропатчена для Bit-Bang программатора на FT232RL, что бы она работала нужно предварительно установить FDTI-драйвер. Если у Вас нет устройств на FT232RL используйте дуду по ссылке из статьи.

amphiton
Offline
Зарегистрирован: 28.04.2017

Jaeger пишет:

Немного не верно понимаете суть вопроса. Патченная дуда по ссылке из статьи должна работать не зависимо от того какой конвертер USB-UART у вас установлен на ардуине. Дуда по ссылке из поста #48 дополнительно пропатчена для Bit-Bang программатора на FT232RL, что бы она работала нужно предварительно установить FDTI-драйвер. Если у Вас нет устройств на FT232RL используйте дуду по ссылке из статьи.

Без патча на FT232RL работает !!!! 

 

merlin552
Offline
Зарегистрирован: 19.02.2018

Здравствуйте собрал программатор по Вашей схеме. Не шьется Atmega16 в режиме параллельного программирования хотя чип детектит.

И дуда при прошивке не ругается. Ругается только когда проверку делаю. Куда копать?? И да несмотря на то что фьюзы сбросил другой программатор ее не видит.

Лог дуды.

Detected 1e9403 = ATmega16
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
 
avrdude.exe: AVR device initialized and ready to accept instructions
 
Reading | ################################################## | 100% -0.00s
 
avrdude.exe: Device signature = 0x1e9403 (probably m16)
avrdude.exe: erasing chip
avrdude.exe: reading input file "D:\DOWNLOAD\Firmware\Firmware\lan-tester.hex"
avrdude.exe: input file D:\DOWNLOAD\Firmware\Firmware\lan-tester.hex auto detected as Intel Hex
avrdude.exe: writing flash (14192 bytes):
 
Writing | ################################################## | 100% 2.81s
 
avrdude.exe: 14192 bytes of flash written
avrdude.exe: verifying flash memory against D:\DOWNLOAD\Firmware\Firmware\lan-tester.hex:
avrdude.exe: load data flash data from input file D:\DOWNLOAD\Firmware\Firmware\lan-tester.hex:
avrdude.exe: input file D:\DOWNLOAD\Firmware\Firmware\lan-tester.hex auto detected as Intel Hex
avrdude.exe: input file D:\DOWNLOAD\Firmware\Firmware\lan-tester.hex contains 14192 bytes
avrdude.exe: reading on-chip flash data:
 
Reading | ################################################## | 100% 2.22s
 
avrdude.exe: verifying ...
avrdude.exe: 14192 bytes of flash verified
 
avrdude.exe done.  Thank you.
 
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
 
avrdude.exe: AVR device initialized and ready to accept instructions
 
Reading | ################################################## | 100% -0.00s
 
avrdude.exe: Device signature = 0x1e9403 (probably m16)
avrdude.exe: erasing chip
avrdude.exe: verifying flash memory against D:\DOWNLOAD\Firmware\Firmware\lan-tester.hex:
avrdude.exe: load data flash data from input file D:\DOWNLOAD\Firmware\Firmware\lan-tester.hex:
avrdude.exe: input file D:\DOWNLOAD\Firmware\Firmware\lan-tester.hex auto detected as Intel Hex
avrdude.exe: input file D:\DOWNLOAD\Firmware\Firmware\lan-tester.hex contains 14192 bytes
avrdude.exe: reading on-chip flash data:
 
Reading | ################################################## | 100% 2.21s
 
avrdude.exe: verifying ...
avrdude.exe: verification error, first mismatch at byte 0x0000
             0xff != 0x0c
avrdude.exe: verification error; content mismatch
 
avrdude.exe done.  Thank you.
 
~
Jaeger
Jaeger аватар
Offline
Зарегистрирован: 23.03.2018

Судя по логу дуды запись 14192 байт у Вас прошла успешно (avrdude.exe: 14192 bytes of flash verified), далее выполняете какие то операции, в результате которых чип стирается (avrdude.exe: erasing chip), а затем сверяется с файлом (avrdude.exe: verifying ...). Разумеется будет ошибка на первом же байте (avrdude.exe: verification error, first mismatch at byte 0x0000              0xff != 0x0c ). Какой гуй (GUI, оболочку) используете? Может какие либо галки или переключатели неверно поставлены. Сброс фьзов означает установка их по умолчанию, проверьте на этом же программаторе как установились фьюзы.

merlin552
Offline
Зарегистрирован: 19.02.2018

Фьюзы установились правильные. Оболочку использую как в статье написано AVRDUDESS 2.8. Честно говоря я с контроллерами столкнулся только недавно. Уже три атмеги16 умудрился залочить поэтому и собрал Ваш программатор.

 

Jaeger
Jaeger аватар
Offline
Зарегистрирован: 23.03.2018

Не понятны ваши проблемы. Согласно логу контроллер определяется и шьется, фьюзы устанавливаются. Возможно дело не в программаторе.

merlin552
Offline
Зарегистрирован: 19.02.2018

Вроде разобрался. Прошивка зашла. Теперь еще можно вопрос по фьюзам? Я бит SPIEN сменил (еще когда программировал USBasf)  и соответственно теперь по spi мега недоступна. А сменить не могу так как бит неактивен. Как это можно побороть?

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

1. Вернуть обратно фьюз SPIEN можно только с помощью параллельного программатора.
2. В GUI-оболочке, которую вы используете (AVRDUDESS) могли специально сделать фьюз SPIEN недоступным, чтобы его не трогали.

Попробуйте другие GUI-оболочки (например  AVRDUDE_PROG или SinaProg) или поменяйте фьюз вручную через консоль (программа avrdude.exe). Опять же, всё это только с помощью параллельного программатора.

merlin552
Offline
Зарегистрирован: 19.02.2018

Ну этот программатор как бы паралельный

Jaeger
Jaeger аватар
Offline
Зарегистрирован: 23.03.2018

Попробуйте как здесь, в крайнем посте.

 

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

Попробывал шить в паралельном режиме ATmega328PB (тут обзор этого мк), дудка естессно ругается на сигнатуру, т.к. не знает такого МК. Но с доп.опцией -F всё работает -читает пишет нормально.

 

merlin552
Offline
Зарегистрирован: 19.02.2018

dimax пишет:

Попробывал шить в паралельном режиме ATmega328PB (тут обзор этого мк), дудка естессно ругается на сигнатуру, т.к. не знает такого МК. Но с доп.опцией -F всё работает -читает пишет нормально.

 

А Вы каждый раз припаиваете Мк к плате? А чем снимаете потом? Извините но просто интересно сколько выдержит плата

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

merlin552, корпуса TQFP припаиваю вынужденно, в принципе можно сделать переходник для програматора  по типу такого:

и паять не надо будет. Но я не буду делать, т.к. надобность в паралельном пррограммировании бывает очень редко .  Кладу/снимаю пинцетом, и им-же подталкиваю чип что-б точно спозиционировать, когда он уже начинает "плавать" по дорожкам.  Сколько выдержит не знаю, мне кажется десяток раз должно продержаться. Это была всего лишь вторая пайка.

 

merlin552
Offline
Зарегистрирован: 19.02.2018

Я почему спрашиваю. Я pic в soic корпусе прошиваю при помощи подобной платы только контроллер прижимаю канцерярским зажимом. Очень удобно.

Green
Offline
Зарегистрирован: 01.10.2015

dimax пишет:

...по типу такого:

Может верхнюю часть следовало бы сделать из оргстекла, дабы видеть правильность посадки, не?

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

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

Green
Offline
Зарегистрирован: 01.10.2015

Я так и думал.)

firecast
Offline
Зарегистрирован: 28.07.2019

Интересно, а как реализовать этот программатор на Уно, если А6,А7 на нем нету. Перешивать мегу на внутренний генератор?

firecast
Offline
Зарегистрирован: 28.07.2019

Открыл исходники с гитхаба, нашел схемы в фритзе. Для уно используется сдвиговый регистр :) . Какая банальщина

Jaeger
Jaeger аватар
Offline
Зарегистрирован: 23.03.2018

Внешний сдвиговый регистр для уно применялся в старой версии. В крайней версии программатора сдвиговый регистр не используется: http://microtherion.github.io/ScratchMonkey/index.html

Dmti
Dmti аватар
Offline
Зарегистрирован: 13.10.2013

Чевонто не получается. Залил в китайскую нану ScratchMonkey.ino файл programmers.txt отредактировал. Дописал в самом начале

scratchmonkey_stk500v2.name=ScratchMonkey (STK500 Mode)
scratchmonkey_stk500v2.communication=serial
scratchmonkey_stk500v2.protocol=stk500v2
scratchmonkey_stk500v2.program.tool=avrdude
scratchmonkey_stk500v2.program.protocol=stk500v2
scratchmonkey_stk500v2.program.extra_params=-P{serial.port} 

scratchmonkey_stk500v2_hvsp.name=ScratchMonkey HVSP (STK500 Mode)
scratchmonkey_stk500v2_hvsp.communication=serial
scratchmonkey_stk500v2_hvsp.protocol=stk500hvsp
scratchmonkey_stk500v2_hvsp.program.tool=avrdude
scratchmonkey_stk500v2_hvsp.program.protocol=stk500hvsp
scratchmonkey_stk500v2_hvsp.program.extra_params=-P{serial.port}

в меню выбрал программатор ScratchMonkey (STK500 Mode). И при заливке через программатор получаю ошибку

 avrdude: ser_open(): can't open device "(serial.port)": Не удается найти указанный файл.

Как я понял не видит программатор. Может кто подскажет в чем дело?

Иде 1.8.5v виндовс семерка.

b707
Offline
Зарегистрирован: 26.05.2017

уберите строчку 6 и строчку 13, указывать девайс в параметрах не нужно, ИДЕ само это делает, когда к аврдуде обращается

Dmti
Dmti аватар
Offline
Зарегистрирован: 13.10.2013

Я уже так пробовал ошибка та же.

ignat_dim@mail.ru (не проверено)

Доброй ночи.

Пытаюсь повторить проект. Задача оживить Атмегу8. Плата АрдуиноНано(328P+CH340) прошивку и копилировал в Arduin IDE 1.6.5, и в  1.8.9, и заливал готовую из поста #48. Таргет Atmega8, подключение ISP,  но не могу считать MCU, постоянно ошибка

>>>: avrdude -u -c scratchmonkey -P COM3 -p m8
WARNING: Unable to detect MCU

avrdude.exe: stk500v2_command(): command failed
avrdude.exe: initialization failed, rc=-1
             Double check connections and try again, or use -F to override this check.
В мануале https://microtherion.github.io/ScratchMonkey/  in connection diagram нет упоминания об атмеге8 ни в ISP, ни в HVSP, ни в HVPP. Может я зря стараюсь, этого не умеет?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

ignat_dim@mail.ru пишет:

>>>: avrdude -u -c scratchmonkey -P COM3 -p m8

Во всех трёх выделенных  кусочках пробел не нужен.

ignat_dim@mail.ru (не проверено)

это лог из пропатченного AVRDUDESS 2.11 Эксперементировал из GUI.

Вот еще смог поймать в дебаг консоли:

SPI AC [0] 53 [0] 0 ![0] 0 [0]
Retrying in limp mode 2 (62.50kHz).
SPI AC [0] 53 [0] 0 ![0] 0 [0]
Retrying in limp mode 3 (31.25kHz).
SPI AC [0] 53 [0] 0 ![0] 0 [0]
Retrying in limp mode 4 (15.63kHz).
SPI AC [0] 53 [0] 0 ![0] 0 [0]
Retrying in limp mode 5 (7.81kHz).
SPI AC [0] 53 [0] 0 ![0] 0 [0]
Retrying in limp mode 6 (3.91kHz).
SPI AC [0] 53 [0] 0 ![0] 0 [0]
Retrying in limp mode 7 (1.95kHz).
SPI AC [0] 53 [0] 0 ![0] 0 [0]

 

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

ignat_dim@mail.ru пишет:

В мануале https://microtherion.github.io/ScratchMonkey/  in connection diagram нет упоминания об атмеге8 ни в ISP, ни в HVSP, ни в HVPP. Может я зря стараюсь, этого не умеет?

А ничего, что  и я  писал, и Jaeger в #48 писал что с мегой8 всё отлично при компиляции в любой IDE? С готовой прошивкой из #48 тем более всё гарантированно работает.

ignat_dim@mail.ru (не проверено)

Ничего. Еще раз спрошу, при подклчениии по SPI (без какой-либо высоковольной части) у Вас получалось успешно читать сигнатуру или фьюзы... (у меня не получается, хотя USBasp в той-же дуде это делает, МК живой и не залоченый). Судя по выводу в дебаг, программатор рабочий, но не видит МК. Конечно, я мог накосячить, перепроверю в ...тый раз.

 Здесь  в крайнем посте автор пишет:
Так как ScratchMonkey мультирежимный программатор, то его, естественно, можно использовать для реанимации "залоченных" мк, которые перестали отвечать SPI программаторам в результате ошибочной установки фьюзов. Для многовыводных мк используем параллельный режим, для маловыводных (<20) используем высоковольтный последовательный.

Помогите пожалуйста разобраться, как подключить атмегу8 к интерфесу HVSP.  Или речь идет только о тини?

Jevega
Jevega аватар
Offline
Зарегистрирован: 27.12.2016

С каких пор Мега8 стала "маловыводным" контроллером?