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)
fonte
-c avrisp
. Eu acho que você pode programá-lo em 1 MHz sem problemas.-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.Respostas:
Soldava fios nos pads para garantir que a conexão estava boa e os usava para programação a partir do Uno. Em seguida, o programador trabalhou, sem nenhuma edição nas linhas de comando, conforme publicado na pergunta. Corri algumas variações e fui capaz de responder todas as minhas perguntas, e mais algumas além:
O erro "Caramba! Assinatura inválida do dispositivo" estava sendo causado por mau contato entre o programador (Uno) e os pinos ATTINY.
Não tinha nada a ver com o carregador de inicialização não estar no novo microcontrolador. O novo chip ATTINY45 não precisa de um gerenciador de inicialização para o programador em circuito funcionar.
O Uno pode programar o ATTINY45 configurado para qualquer uma de suas velocidades, 1 MHz ou 8 MHz. As configurações de fábrica são boas e não exigem troca dos fusíveis.
Ambas as versões avrdude trabalhavam para programação - a 6.1 no site do autor e a modificada no IDE do Arduino.
avrdude programa pode através do Uno usando qualquer um
-c avrisp
,-c arduino
ou-c stk500v1
, não importa qual.Uma pequena pergunta que não pude responder foi a que velocidade os programas Uno estavam (velocidade de comunicação entre os pinos de E / S e o microcontrolador do Arduino piscando). Está relacionado à velocidade da porta serial? Mas acabou não sendo pertinente para responder a esse problema. Alguém mais pode perguntar se é curioso o suficiente.
fonte
Eu tive exatamente esse problema. Se o ATtiny estiver configurado para relógio externo, o ArduinoISP não poderá programá-lo sem um cristal externo. Conectou um cristal de 16 MHz e 2 capacitores e funcionou perfeitamente.
(Consegui definir ATtiny para o relógio interno, remover o cristal e depois trabalhei perfeitamente sem o cristal.)
fonte
Adicione a placa e sua descrição do fusível a partir do que já está definido e ele funcionará.
Para adicionar apenas
C:\Program Files\Arduino\hardware\arduino\avr\boards.txt
e adicionar a descrição do quadro.Eu usei.
fonte