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

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

ну да, у нее 28, что-то я тупанул ... :-)

QuickWitted
Offline
Зарегистрирован: 30.08.2020

dimax пишет:

Собрал этот программатор, довольно симпатишно вышло:)

Посмотрел на ваше творчество и мне страшно стало.

Одного меня смущает что
1) плата сделана зеркально - как итог закрыт SPI порт ардуины
2) паять ардуину нужно с той же стороны с которой ее ставить.
   особенно радует пайка панельки для меги8
3) светодиоды питаются от тех же пинов наны с которых идет программирование.
   Транзисторы на светодиоды поставить ну никак?
4) питание программируемого мк от ног наны. А если там КЗ?
5) +12в подающееся на мк разведено шедеврально.
   Никто не думал что произойдет когда +5в выключится, и транзистор
   сажающий +12В на землю закроется,
   при этом конденсатор останется с +12В зарядом.
6) Никто не развел шильд с шинным формирователем для прошивки по SPI

Думаю по нормальному развести плату, а не так как у вас...
Как тут к сообщению файлы приложить?
если кто тему ведет - могу выслать по почте....

Jaeger
Jaeger аватар
Offline
Зарегистрирован: 23.03.2018
3) Как показала практика светодиоды не мешают программированию, поэтому и транзисторы не особо нужны, хотя по правильному, лучше подключать светодиоды через буфер или транзистор. Кроме того, светодиоды не несут ни какой информации в параллельном высоковольтном режиме, поскольку эти линии заняты программированием. Вся эта "иллюминация" работает только в SPI и в последовательном высоковольтном режиме и с пропатченной дудой. Особой надобности в этой "иллюминации" нет, поэтому светодиоды можно не ставить, лучше читать сообщения дуды.
4) Это максимально-упрощенная схема программатора с минимум компонентов, правильно, конечно, подавать питание на программируемый мк через ключ с защитой от кз. Но, известно, что кз на выходе пина не приводит к выходу его из строя.
5) Да, на линии RST за счет конденсатора будет какое то время 12 вольт, но эти выводы толерантны к высокому напряжению, думаю ни чего страшного не произойдет. 
 
Если у Вас имеется "продвинутый" вариант схемы данного программатора то сохраните файлы, которыми Вы хотите поделиться, в каком нибудь облаке и оставьте здесь ссылку для скачивания.
QuickWitted
Offline
Зарегистрирован: 30.08.2020

Схему не рисовал. Платы развел в DipTrace, сдал в изготовление, Сегодня (20.10.2020) должны сделать. Напаяю детали, проверю что работает - выложу с фото.

Еще нарисовал шильд для подключения LGT8F328P, с заменой прошивки на LarduinoISP-master
данный программатор шить LGT8F328P будет...

Кто ни будь взял бы на себя подвиг скрестить LarduinoISP-master с текущим ScratchMonkey

Если сложно влезать в исходник, то хотя бы при старте опрашивать адц6 пин
в зависимости от значения выбирать булевскую переменную и в зависимости от того чему
она равна выбирать какой из 2х наборов работает...

Если это сложно, то бут блоки же как-то собирают на платформе ардуино.
Если указать с какого адреса собрать прошивку при компиляции
(две прошивки с двух разных адресов), то разрулить прерывания - к какому из 2х
блоков векторов отдать управление можно на ассемблере (заюзав как флаг какой - нибудь регистр).
тогда все изменения при сборки прошивки из репозитария - это указание с какого адреса компилить.

Jaeger
Jaeger аватар
Offline
Зарегистрирован: 23.03.2018
Сомневаюсь, что за Вас тут кто-то будет совершать подвиги. По мне так не хлопотно загрузить в нану НЕХ ScratchMonkey или НЕХ LarduinoISP-master.   
 
QuickWitted
Offline
Зарегистрирован: 30.08.2020

На соседнем форуме есть ардуино версия asprog

http://forum.easyelectronics.ru/viewtopic.php?t=10947
цитата с форума

Тестовая версия 2.0.0a14
Скетч для arduino(тестировалось на nano с ch340)
Использует ноги
#define ISP_RST   10
#define ISP_MOSI  11
#define ISP_MISO  12
#define ISP_SCK   13

Большое подозрение что оно совместимо с железом из данной ветки

arduino not my
arduino not my аватар
Offline
Зарегистрирован: 28.10.2020

Здравствуйте , есть проблема . Есть у меня голая Атмега 328пу и ее нужно прошить. Ну вот  не задача и, программатора нет. Сорал из ардуины программатор на макетной плате ииииииииииии - нечего .Ошибка

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

Ну а RSTDSBL на mega328 кто нибудь восстанавливал этим HVPP? А то у меня сомнения.

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

Green, да, без проблем :)

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

Этим не пробовал, а STK-500 RSTDSBL устанавливает легко и непринуждённо.

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

ОК, спасибо. Меня что смущает. Вот в DS:

  31.7.  Parallel Programming
  31.7.1.  Enter Programming Mode
    The following algorithm puts the device in Parallel (High-voltage) Programming mode:
    1. Set Prog_enable pins listed in Pin Values Used to Enter Programming Mode of Signal 
      Names section “0x0000”, RESET pin to 0V and VCC to 0V.
    2. Apply 4.5 - 5.5V between VCC and GND.
      Ensure that VCC reaches at least 1.8V within the next 20?s.
    3. Wait 20 - 60us, and apply 11.5 - 12.5V to RESET.
 
Да и вот ещё люди говорят: http://forum.easyelectronics.ru/viewtopic.php?p=9303#p9303
Green
Offline
Зарегистрирован: 01.10.2015

ЕвгенийП пишет:

Этим не пробовал, а STK-500 RSTDSBL устанавливает легко и непринуждённо.


Ну дак, STK-500 это ж фирмА, там всё по честному.)

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

ЕвгенийП пишет:

Этим не пробовал, а STK-500 RSTDSBL устанавливает легко и непринуждённо.

TL866 тоже. Оч. удобно на тиньках заиметь еще одну ногу, а потом программатором быстро вернуть все взат

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

dimax пишет:
Green, да, без проблем :)

Действительно без проблем. Восстанавливает и RSTDISBL, и SPIEN. И зачем такой солидной фирме писать такие глупости с питанием? Непонятно. А я ж такой доверчивый.) Вот и верь после этого людям.)

Lazy70
Offline
Зарегистрирован: 23.03.2022

  Доброго времени суток. Есть пара Atmega 8 из китая, изначально прошиваться через Usbasp они отказались. Собрал данный программатор с целью их оживить. Вроде всё делаю по инструкции  Jaeger, но что-то не получается. Вот ,что пишет Avrdude : 

avrdude.exe: Version 6.3, compiled on Mar 25 2017 at 17:21:44 by Alexander Kuznetsov. Support FT232RL BitBanging mode and ScratchMonkey programmer.
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
Copyright (c) 2007-2014 Joerg Wunsch
Patch #8967 submitted by Alexey Reshetnikov, http://savannah.nongnu.org/patch/?8967
Patch submitted by Matthias Neeracher, http://microtherion.github.io/ScratchMonkey/

System wide configuration file is "C:\Program Files (x86)\AVRDUDESS\avrdude.conf"

Using Port : COM3
Using Programmer : scratchmonkey_pp
Setting bit clk period : 100.0
avrdude.exe: Send: . [1b] . [01] . [00] . [01] . [0e] . [01] . [14]
avrdude.exe: Recv: . [1b]
avrdude.exe: Recv: . [01]
avrdude.exe: Recv: . [00]
avrdude.exe: Recv: . [10]
avrdude.exe: Recv: . [0e]
avrdude.exe: Recv: . [01]
avrdude.exe: Recv: . [00]
avrdude.exe: Recv: . [0d]
avrdude.exe: Recv: S [53]
avrdude.exe: Recv: C [43]
avrdude.exe: Recv: R [52]
avrdude.exe: Recv: A [41]
avrdude.exe: Recv: T [54]
avrdude.exe: Recv: C [43]
avrdude.exe: Recv: H [48]
avrdude.exe: Recv: M [4d]
avrdude.exe: Recv: O [4f]
avrdude.exe: Recv: N [4e]
avrdude.exe: Recv: K [4b]
avrdude.exe: Recv: E [45]
avrdude.exe: Recv: Y [59]
avrdude.exe: Recv: O [4f]
avrdude.exe: stk500v2_getsync(): found ScratchMonkey programmer
avrdude.exe: Send: . [1b] . [02] . [00] . [02] . [0e] . [03] . [98] . [8e]
avrdude.exe: Recv: . [1b]
avrdude.exe: Recv: . [02]
avrdude.exe: Recv: . [00]
avrdude.exe: Recv: . [03]
avrdude.exe: Recv: . [0e]
avrdude.exe: Recv: . [03]
avrdude.exe: Recv: . [00]
avrdude.exe: Recv: . [02]
avrdude.exe: Recv: . [15]
avrdude.exe: Send: . [1b] . [03] . [00] . [03] . [0e] . [02] . [98] . [1e] . [91]
avrdude.exe: Recv: . [1b]
avrdude.exe: Recv: . [03]
avrdude.exe: Recv: . [00]
avrdude.exe: Recv: . [02]
avrdude.exe: Recv: . [0e]
avrdude.exe: Recv: . [02]
avrdude.exe: Recv: . [00]
avrdude.exe: Recv: . [16]
AVR Part : ATmega8
Chip Erase delay : 10000 us
PAGEL : PD7
BS2 : PC2
RESET disposition : dedicated
RETRY pulse : SCK
serial program mode : yes
parallel program mode : yes
Timeout : 200
StabDelay : 100
CmdexeDelay : 25
SyncLoops : 32
ByteDelay : 0
PollIndex : 3
PollValue : 0x53
Memory Detail :

Block Poll Page Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
---------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
eeprom 4 20 128 0 no 512 4 0 9000 9000 0xff 0xff
Block Poll Page Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
---------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
flash 33 10 64 0 yes 8192 64 128 4500 4500 0xff 0x00
Block Poll Page Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
---------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
lfuse 0 0 0 0 no 1 0 0 2000 2000 0x00 0x00
Block Poll Page Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
---------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
hfuse 0 0 0 0 no 1 0 0 2000 2000 0x00 0x00
Block Poll Page Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
---------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
lock 0 0 0 0 no 1 0 0 2000 2000 0x00 0x00
Block Poll Page Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
---------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
calibration 0 0 0 0 no 4 0 0 0 0 0x00 0x00
Block Poll Page Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
---------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
signature 0 0 0 0 no 3 0 0 0 0 0x00 0x00

Programmer Type : SCRATCHMONKEY_PP
Description : ScratchMonkey in parallel programming mode
Programmer Model: None
avrdude.exe: Send: . [1b] . [04] . [00] . [02] . [0e] . [03] . [90] . [80]
avrdude.exe: Recv: . [1b]
avrdude.exe: Recv: . [04]
avrdude.exe: Recv: . [00]
avrdude.exe: Recv: . [03]
avrdude.exe: Recv: . [0e]
avrdude.exe: Recv: . [03]
avrdude.exe: Recv: . [00]
avrdude.exe: Recv: . [00]
avrdude.exe: Recv: . [11]
avrdude.exe: Send: . [1b] . [05] . [00] . [02] . [0e] . [03] . [91] . [80]
avrdude.exe: Recv: . [1b]
avrdude.exe: Recv: . [05]
avrdude.exe: Recv: . [00]
avrdude.exe: Recv: . [03]
avrdude.exe: Recv: . [0e]
avrdude.exe: Recv: . [03]
avrdude.exe: Recv: . [00]
avrdude.exe: Recv: . [02]
avrdude.exe: Recv: . [12]
avrdude.exe: Send: . [1b] . [06] . [00] . [02] . [0e] . [03] . [92] . [80]
avrdude.exe: Recv: . [1b]
avrdude.exe: Recv: . [06]
avrdude.exe: Recv: . [00]
avrdude.exe: Recv: . [03]
avrdude.exe: Recv: . [0e]
avrdude.exe: Recv: . [03]
avrdude.exe: Recv: . [00]
avrdude.exe: Recv: . [00]
avrdude.exe: Recv: . [13]
Hardware Version: 0
Firmware Version Master : 2.00
avrdude.exe: Send: . [1b] . [07] . [00] . [02] . [0e] . [03] . [94] . [87]
avrdude.exe: Recv: . [1b]
avrdude.exe: Recv: . [07]
avrdude.exe: Recv: . [00]
avrdude.exe: Recv: . [03]
avrdude.exe: Recv: . [0e]
avrdude.exe: Recv: . [03]
avrdude.exe: Recv: . [00]
avrdude.exe: Recv: 2 [32]
avrdude.exe: Recv: [20]
Vtarget : 5.0 V
SCK period : 0.1 us

avrdude.exe: Send: . [1b] . [08] . [00] ! [21] . [0e] - [2d] . [0e] . [1e] . [0f] . [1f] . [2e] > [3e] / [2f] ? [3f] N [4e] ^ [5e] O [4f] _ [5f] n [6e] ~ [7e] o [6f] . [7f] f [66] v [76] g [67] w [77] j [6a] z [7a] k [6b] { [7b] . [be] . [fd] . [00] . [01] . [00] . [00] . [00] . [00] S [53]
avrdude.exe: Recv: . [1b]
avrdude.exe: Recv: . [08]
avrdude.exe: Recv: . [00]
avrdude.exe: Recv: . [02]
avrdude.exe: Recv: . [0e]
avrdude.exe: Recv: - [2d]
avrdude.exe: Recv: . [00]
avrdude.exe: Recv: 2 [32]
avrdude.exe: Send: . [1b] . [09] . [00] . [08] . [0e] [20] d [64] . [00] . [05] . [01] . [0f] . [02] . [00] Y [59]
avrdude.exe: Recv: . [1b]
avrdude.exe: Recv: . [09]
avrdude.exe: Recv: . [00]
avrdude.exe: Recv: . [02]
avrdude.exe: Recv: . [0e]
avrdude.exe: Recv: [20]
avrdude.exe: Recv: . [00]
avrdude.exe: Recv: > [3e]
avrdude.exe: Send: . [1b] . [0a] . [00] . [03] . [0e] . [02] * [2a] . [01] 5 [35]
avrdude.exe: Recv: . [1b]
avrdude.exe: Recv: . [0a]
avrdude.exe: Recv: . [00]
avrdude.exe: Recv: . [02]
avrdude.exe: Recv: . [0e]
avrdude.exe: Recv: . [02]
avrdude.exe: Recv: . [00]
avrdude.exe: Recv: . [1f]
avrdude.exe: AVR device initialized and ready to accept instructions

Reading | avrdude.exe: stk500hv_read_byte(.., signature, 0x0, ...)
avrdude.exe: stk500hv_read_byte(): Sending read memory command: avrdude.exe: Send: . [1b] . [0b] . [00] . [02] . [0e] + [2b] . [00] 7 [37]
avrdude.exe: Recv: . [1b]
avrdude.exe: Recv: . [0b]
avrdude.exe: Recv: . [00]
avrdude.exe: Recv: . [03]
avrdude.exe: Recv: . [0e]
avrdude.exe: Recv: + [2b]
avrdude.exe: Recv: . [00]
avrdude.exe: Recv: . [00]
avrdude.exe: Recv: 6 [36]
avrdude.exe: stk500hv_read_byte(.., signature, 0x1, ...)
avrdude.exe: stk500hv_read_byte(): Sending read memory command: avrdude.exe: Send: . [1b] . [0c] . [00] . [02] . [0e] + [2b] . [01] 1 [31]
avrdude.exe: Recv: . [1b]
avrdude.exe: Recv: . [0c]
avrdude.exe: Recv: . [00]
avrdude.exe: Recv: . [03]
avrdude.exe: Recv: . [0e]
avrdude.exe: Recv: + [2b]
avrdude.exe: Recv: . [00]
avrdude.exe: Recv: . [01]
avrdude.exe: Recv: 0 [30]
################avrdude.exe: stk500hv_read_byte(.., signature, 0x2, ...)
avrdude.exe: stk500hv_read_byte(): Sending read memory command: avrdude.exe: Send: . [1b] . [0d] . [00] . [02] . [0e] + [2b] . [02] 3 [33]

avrdude.exe: Recv: . [1b]
avrdude.exe: Recv: . [0d]
avrdude.exe: Recv: . [00]
avrdude.exe: Recv: . [03]
avrdude.exe: Recv: . [0e]
avrdude.exe: Recv: + [2b]
avrdude.exe: Recv: . [00]
avrdude.exe: Recv: . [02]
avrdude.exe: Recv: 2 [32]
################################## | 100% 0.43s

avrdude.exe: Device signature = 0x000102
avrdude.exe: Expected signature for ATmega8 is 1E 93 07
avrdude.exe: reading input file "0xe1"
avrdude.exe: writing lfuse (1 bytes):

Writing | avrdude.exe: stk500hv_write_byte(.., lfuse, 0x0, ...)
avrdude.exe: stk500hv_write_byte(): Sending write memory command: avrdude.exe: Send: . [1b] . [0e] . [00] . [05] . [0e] ' [27] . [00] . [e1] . [00] . [05] . [dd]
avrdude.exe: Recv: . [1b]
avrdude.exe: Recv: . [0e]

avrdude.exe: Recv: . [00]
avrdude.exe: Recv: . [02]
avrdude.exe: Recv: . [0e]
avrdude.exe: Recv: ' [27]
avrdude.exe: Recv: . [00]
avrdude.exe: Recv: > [3e]
################################################## | 100% 0.00s

avrdude.exe: 1 bytes of lfuse written
avrdude.exe: Send: . [1b] . [0f] . [00] . [03] . [0e] . [02] * [2a] . [05] 4 [34]
avrdude.exe: Recv: . [1b]
avrdude.exe: Recv: . [0f]
avrdude.exe: Recv: . [00]
avrdude.exe: Recv: . [02]
avrdude.exe: Recv: . [0e]
avrdude.exe: Recv: . [02]
avrdude.exe: Recv: . [00]
avrdude.exe: Recv: . [1a]
avrdude.exe: verifying lfuse memory against 0xe1:
avrdude.exe: load data lfuse data from input file 0xe1:
avrdude.exe: input file 0xe1 contains 1 bytes
avrdude.exe: reading on-chip lfuse data:

Reading | avrdude.exe: stk500hv_read_byte(.., lfuse, 0x0, ...)
avrdude.exe: stk500hv_read_byte(): Sending read memory command: avrdude.exe: Send: . [1b] . [10] . [00] . [02] . [0e] ( [28] . [00] / [2f]
avrdude.exe: Recv: . [1b]
avrdude.exe: Recv: . [10]
avrdude.exe: Recv: . [00]
avrdude.exe: Recv: . [03]
avrdude.exe: Recv: . [0e]
avrdude.exe: Recv: ( [28]
avrdude.exe: Recv: . [00]
avrdude.exe: Recv: . [04]
avrdude.exe: Recv: * [2a]
################################################## | 100% 0.00s

avrdude.exe: verifying ...
avrdude.exe: verification error, first mismatch at byte 0x0000
0x04 != 0xe1
avrdude.exe: verification error; content mismatch
avrdude.exe: Send: . [1b] . [11] . [00] . [03] . [0e] . [02] * [2a] . [0d] " [22]
avrdude.exe: Recv: . [1b]
avrdude.exe: Recv: . [11]
avrdude.exe: Recv: . [00]
avrdude.exe: Recv: . [02]
avrdude.exe: Recv: . [0e]
avrdude.exe: Recv: . [02]
avrdude.exe: Recv: . [00]
avrdude.exe: Recv: . [04]
avrdude.exe: Send: . [1b] . [12] . [00] . [03] . [0e] ! [21] . [0f] . [0f] % [25]
avrdude.exe: Recv: . [1b]
avrdude.exe: Recv: . [12]
avrdude.exe: Recv: . [00]
avrdude.exe: Recv: . [02]
avrdude.exe: Recv: . [0e]
avrdude.exe: Recv: ! [21]
avrdude.exe: Recv: . [00]
avrdude.exe: Recv: $ [24]
avrdude.exe: Send: . [1b] . [13] . [00] . [03] . [0e] . [02] * [2a] . [0c] ! [21]
avrdude.exe: Recv: . [1b]
avrdude.exe: Recv: . [13]
avrdude.exe: Recv: . [00]
avrdude.exe: Recv: . [02]
avrdude.exe: Recv: . [0e]
avrdude.exe: Recv: . [02]
avrdude.exe: Recv: . [00]
avrdude.exe: Recv: . [06]

avrdude.exe done. Thank you.

  Может кто-чево подскажет или выбросить и не мучиться.

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Скорее всего они Б/У и прошиты под использование (тактирование) от кварца. Подкинь кварц и должны нормально прошиться USBasp-ом. Мне пара таких атмег8 приходило с али.

Lazy70
Offline
Зарегистрирован: 23.03.2022

Пробовал и с кварцем, и не с одним. Там всё дело что не правильно читается фьюзы и сигнатура. В сети находил, что параллельным программатором, прошивались правильные фьюзы и контроллер оживал. 

Поскольку для того, чтобы сделать другой программатор, нужны тоже микроконтроллеры, а их сейчас нет под рукой, и неясно когда будут, а ардуино под рукой была, сделал этот. Но тема заглохла, а жаль. В радиолюбительской практике не часто нужен параллельный программатор, и иметь такой недорогой и доступный было-бы неплохо. Тема заглохла и на радиокоте. Жаль.

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

Тема не заглохла, а просто больше нечего в ней обсуждать)   У меня например, после того, как разобрались с особенностью версий IDE в начале темы никаких проблем не возникало PS: после сборки этого программатора  его функционирование надо проверить на заведомо исправном МК. 

Lazy70
Offline
Зарегистрирован: 23.03.2022

Так нету заведомо исправного.

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

dimax пишет:

Jaeger, залил ваш хекс - работает! Про "програматор-г@вно"  беру слова назад - можно делать ;) Напишите ещё в ветке радиокота, что б народ знал.

интересно, у меня под версией 1.6.5_r5 компилируется в размер 12704 И, сам же отвечу, добавил снятие напряжения digitalWrite(HVSP_VCC, LOW) и размер как учили )))

Sur
Offline
Зарегистрирован: 02.09.2015

Спасибо за информацию, схему и саму тему, восстановил фьюзы нано (на трупе выпаивал резистор подтяжки ресета и кварц). Сопротивлений по шинам данных, как видите, не использовал.

Vitek54
Offline
Зарегистрирован: 09.01.2021

 

собрал я этот прграмматор установил ардуино уно потом Monkey, программаторы появились 5 шт, залил скетч как в посте у кота, а дальше не знаю как связать sinаProg, я новичок в ардуино, атмега328Р 5 шт лежат, помогите только поподробней.