Relato: Problemas de upload em um Arduino StandAlone.

Ola,
Resolvi por uma ideia em prática e já partir tendo em vista o dispositivo final não depender de uma placa Arduino completo, comprei alguns ATmega328P e gravei o bootloader usando o Arduino como SPI, até aqui tudo bem.
Montei o ATmega328P e os componentes necessários em uma protoboard.
Gravei o bootloader em um ATmega328P (chip).
E um adaptador USB PL2303HX para fazer a comunicação com bootloader.
Na IDE do arduino carreguei o exemplo blink, e fiz o upload, finalizou com o led picando. Perfeito.
Re liguei o Arduino Uno como SPI e gravei mais dois chips, sem problemas.
Voltei o PL2303HX e ao fazer o upload do blink, não aconteceu nada, segundos depois começou a aparecer as mensagens de erro. Gravação do bootloader não deu certo?
Teste com outro chip, continua com os erros.
Teste com o primeiro chip, também da erro.
Mudando os valores do delay() no blink, e ao fazer o upload, mesmo com os erros, o led piscam mais rápido. Ou seja, o binário do sketch foi transferido para o chip.

OBS.: até aqui, estava resetando manualmente logo depois de iniciar o upload.

Removi o chip original da placa Arduino Uno e coloquei um dos ATMega328p que havia gravado.
Upload feito com sucesso. Então não e problema com o bootloader.
Será com a montagem no protoboard?
Removi o chip da placa, deixando o soquete vazio, e conectei o GND, TX e RX.
E ao fazer o upload resetando manualmente ocorreram os mesmo erros que com o PL2303.
Ligando também o reset da placa Arduino, dessa vez o upload foi completado sem erros.
Então e isso, o PL2303 também precisa enviar o comando de reset, mas como?
Voltando ao esquema do Arduino Uno, o reset e feito o DTR via um capacitor.
O PL2303 que tenho não tem o DTR o disponivel no header.
Olhando o datasheet do PL2303 e outros artigos na Internet, o DTR e pino 2.
Troquei o reader de 5 pinos com um de 6 pinos e com muita paciência soldei um fiozinho no pino 2 e no pino flutuante extra do header.
Mas, continua dando o erro a o fazer o upload, mas agora da para ver que o reset esta funcionado, o led pisca 3 vezes, as vezes picas diferente e mesmo com o erro as vezes o programa e carregado.
Estava fazendo o testes no Debian Linux, será que e problema no Linux?
Liguei a maquina Windows 10, depois de resolver o problema com o driver do PL2303, tentei fazer o Upload, também ocorrem erros.
Já havia testado o PL2303 usando o Serial Monitor e juntando o TX e RX, assim o que fosse transmitido iria retornar para tela, e estava fazendo isso.
Em algum momento, vi que precisava testar se o ATmega328p estava enviado os dados, então usei o Sketch ASCII table. Gravei ele em um dos ATMega328p usando a placa Arduino.
E colocando no protobord, ligando e abrindo o Serial Monitor, a tal tabela ASCII apareceu.
Transmissão ok.
Será que esta recebendo corretamente?
Fazer a serial repetir o que foi recebido, um programa de eco. Achei um pronto, foi só copiar e colocar transferir.
Funcionando perfeito no protoboard, pelo meno para dados pequenos. Mas ao testar com um texto mais logo, a eco aparecia menor, faltando letras no meio da "frase".
Problema de buffer não deve ser, a falha sempre ocorreria na mesma posição (após um reste), mas não era isso que estava ocorrendo.
Ao testar o PL2303 junto o TX e RX, o texto também aparecia cortado.
E agora, e o único adaptador USB para Serial que tenho.
Mas tenho em algum lugar um conversor RS232 para TTL, achei ele, só que precisava remover alguma modificação e colocar o sinal de DTR.
Conversor RS232 para TTL arrumado e DTR adicionado.
Mas o problema para fazer o upload continuam. Só que as tentativas ocorrem mais rápido.
Copiei do esquema do Arduino Uno essa parte da serial, então tem resistores de 1k nos pinos 2 (RX) e 3 (RX), ligando direto o RX do conversor no pino 3, o upload ocorreu sem problemas.
Esse conversor RS232 para TTL não e dos melhores, usa um 74HC04 para fazer a conversão, o que não o integrado correto para fazer isso. O nível lógico do pino 3 através do resistor e mais coisas pelo caminho pode estar reduzindo a voltagem para abaixo do que 74HC04 entendo como nível alto.
Então, passei o Sábado e o Domingo nessa empreitada.

A expectativa era para ter no Sábado o circuito que iria trabalhar montando no protoboard.

Alguns do erros que estava obtendo:

Sketch uses 1950 bytes (6%) of program storage space. Maximum is 32256 bytes.
Global variables use 200 bytes (9%) of dynamic memory, leaving 1848 bytes for local variables. Maximum is 2048 bytes.
avrdude: stk500_loadaddr(): (a) protocol error, expect=0x14, resp=0x53

avrdude: stk500_paged_write(): (a) protocol error, expect=0x14, resp=0x65
avrdude: stk500_cmd(): programmer is out of sync
...
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_loadaddr(): (a) protocol error, expect=0x14, resp=0x56

avrdude: stk500_paged_load(): (a) protocol error, expect=0x14, resp=0x56
avrdude: stk500_cmd(): programmer is out of sync
avr_read(): error reading address 0x0000
    read operation not supported for memory "flash"
avrdude: failed to read all of flash memory, rc=-2
avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x56
avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x56


***
Sketch uses 1950 bytes (6%) of program storage space. Maximum is 32256 bytes.
Global variables use 200 bytes (9%) of dynamic memory, leaving 1848 bytes for local variables. Maximum is 2048 bytes.

avrdude: stk500_getparm(): (a) protocol error, expect=0x14, resp=0x53
avrdude: stk500_initialize(): (a) protocol error, expect=0x14, resp=0x65
avrdude: initialization failed, rc=-1
         Double check connections and try again, or use -F to override
         this check.

avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x72
avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x72

***
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_cmd(): programmer is out of sync
avr_read(): error reading address 0x0000
    read operation not supported for memory "flash"
avrdude: failed to read all of flash memory, rc=-2
avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x20
avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x20

Uma foto da montagem

Ola,
Acabei comprando um adaptador USB para Serial TTL que usa o chip CH340G, e fiz uma modificação adicionando o pino do DTR (Reset).
E esta fazendo o upload do sketch sem problemas.

O adaptador foi comprado na loja Soldafria, por R$12,98.