Estou usando um Arduino UNO para programar uma imagem hexadecimal pré-compilada em um ATTINY45, usando o avrdude no diretório IDE do Arduino, no Windows 7. O Uno tem o esboço do ISP carregado no diretório de exemplos e funciona - o LED de pulsação pulsa bem.
No lado do hardware, eu tenho essa configuração , exceto que o ATTINY é montado em superfície, soldado a uma prancha de surf com todos os seus pinos verificados e soldados com um voltímetro. Eu uso uma faixa de pinos de cabeçalho, segurada à mão para fazer com que os pinos toquem na prancha de surf, para obter os sinais do Uno para o ATTINY.
Aqui estão as linhas de comando, que tirei de olhar para a saída de depuração do IDE:
REM set the fuse for 8MHz, so the ISP programmer can work
C:\Progra~1\Arduino\hardware\tools\avr\bin\avrdude -CC:\Progra~1\Arduino\hardware/tools/avr/etc/avrdude.conf -v -v -v -v -pattiny45 -cstk500v1 -P\\.\COM7 -b19200 -e -Uefuse:w:0xff:m -Uhfuse:w:0xdf:m -Ulfuse:w:0xe2:m
REM load the program
C:\Progra~1\Arduino\hardware\tools\avr\bin\avrdude -CC:\Progra~1\Arduino\hardware/tools/avr/etc/avrdude.conf -v -pattiny45 -cstk500v1 -P\\.\COM7 -b19200 -Uflash:w:firefly.hex:i
REM set fuse for 1MHz, as the project requires
C:\Progra~1\Arduino\hardware/tools/avr/bin/avrdude -CC:\Progra~1\Arduino\hardware/tools/avr/etc/avrdude.conf -v -pattiny45 -cstk500v1 -P\\.\COM7 -b19200 -e -Uefuse:w:0xff:m -Uhfuse:w:0xdf:m -Ulfuse:w:0x62:m
-Tento executá-los separadamente, mas sempre recebo este erro:
avrdude: Device signature = 0x000000
avrdude: Yikes! Invalid device signature.
Double check connections and try again, or use -F to override
this check.
mas às vezes o número é ff0000 ou ffff00 ou ffffff
Eu li que "o Arduino usa uma versão ligeiramente modificada do avrdude para fazer upload de esboços para a placa do Arduino. A versão padrão consulta a assinatura do dispositivo da placa de uma maneira não compreendida pelo gerenciador de inicialização, resultando neste erro". Isso significa que o uso do Arduino avrdude com um novo chip ATTINY, sem carregador de inicialização, também causaria o mesmo erro? Em outras palavras, o avrdude modificado é incapaz de consultar um chip AVR não carregado pelo boot do Arduino?
Ou esse erro significa simplesmente que não tenho um bom contato entre todos os meus pinos do programador e o ATTINY?
E, as configurações de fusível são realmente necessárias? O Uno pode programar o flash para um funcionamento em funcionamento a 1 MHz e, assim, poupar alguns passos?
(Eu compraria apenas um programador "real", mas preciso obter esse código nos próximos dois dias e estou em uma parte rural da Nova Escócia)
-carduino
não usa o stk500. Apenas tente fazer o upload do programa de piscada para o attiny do IDE. Dessa forma, você pode ver a linha de comando correta na parte inferior, se você habilitar "saída detalhada" nas configurações.
-c avrisp
. Eu acho que você pode programá-lo em 1 MHz sem problemas.