ATTiny85 não funciona após gravar o gerenciador de inicialização

8

Estou tendo um problema com o meu ATTiny85. Devo mencionar que uso o Arduino como um provedor de serviços de Internet para programá-lo.

Meu ATTiny funcionou bem até que eu decidi que precisava aumentar a velocidade do clock de 1MHz para 20MHz, então selecionei ATTiny85 a 20MHz no menu Boards e cliquei em Tools> Burn Bootloader. Mas isso foi estúpido, já que agora meu ATTiny não funciona mais. Não consigo enviar esboços e, se eu tentar, recebo esta mensagem:

avrdude: Yikes! Invalid device signature. Double check connections and try again, or use -F to override this check.

Então, minha pergunta para você seria: existe uma maneira de redefinir o que eu fiz? Ou melhor ainda, fazê-lo funcionar em 20MHz?

Calin
fonte
2
Você se lembra dos valores de fusível que definiu? Ainda pode estar na tela se você rolar um pouco para cima. Você não pode definir um ATtiny85 para 20MHz com o oscilador interno, conectou uma fonte de relógio?
jippie
Não, eu não conectei uma fonte de relógio. Acabei de gravar o carregador de inicialização com um attiny de 20 mhz selecionado como placa (e, é claro, com o attiny conectado ao arduino).
Calin
Eu tenho outro arduino, existe uma maneira de redefinir os fusíveis usando-o?
Calin
Por que você precisaria de outro Arduino? Pelo que entendi, você transformou seu ATtiny em um tijolo, não seu Arduino. A mensagem de erro na sua pergunta aponta na mesma direção: O Arduino está OK. Se você estiver em dúvida sobre o seu Arduino, desconecte tudo, exceto o USB, e programe o Blinkexemplo. Se isso funcionar bem, você poderá retornar ao seu ArduinoISP (acredito que seja o nome do programador que você estava usando).
jippie
2
Sem saber as configurações exatas dos fusíveis que você usou, não podemos ter certeza do que você realmente fez. Na verdade, se você ajustou o relógio para 20MHz, tudo o que você precisa fazer é conectar uma fonte de relógio externa, seja um cristal, ressonador ou pulso de outro circuito, desde que a fonte de relógio externa seja 20MHz.
Kurt E. Clothier

Respostas:

10

Eu suspeito que você configurou os fusíveis do controlador para usar uma fonte de relógio externa , pois é impossível fazer o oscilador interno funcionar a 20MHz. Você pode dar vida nova ao seu controlador conectando um sinal de relógio ao pino 2 CLKIe tentar redefinir o relógio para o relógio RC interno de 8MHz.

Na verdade, existe uma versão 'fixa' do ArduinoISP que possui uma saída de relógio no pino digital 9. Eu não testei essa saída de relógio pessoalmente, mas vale a pena tentar. Portanto, além das conexões que você já tem entre o Arduino e o ATtiny, conecte o pino digital 9 do Arduino ao ATtiny85 pino 2 (CLKI). Em seguida, tente programar o relógio RC interno de 8 MHz.

Se você verificar as folha de dados capítulo 'fontes do relógio' 6.2 para detalhes.

Um método alternativo é usar um programador de alta tensão, que pode ser facilmente improvisado usando um Arduino .

BTW: Uma coisa semelhante acontecerá quando você selecionar uma fonte de relógio RC <1MHz , nesse caso, o relógio do controlador ficará muito lento para o software ArduinoISP padrão.

jippie
fonte
Obrigado! Então, preciso de uma fonte de energia de 12V para fazer isso (que atualmente não tenho). Vou ver o que posso fazer para improvisar. Existe algum problema se a fonte estiver um pouco acima de 12v?
Calin #
@Calin Como você está falando sobre "12V"? Você pode danificar o chip com muita facilidade ... Alguns resistores podem ser usados ​​para diminuir a tensão para 12V. Veja isso: electronics.stackexchange.com/questions/25038/…
Kurt E. Clothier,
Ok obrigado! Vou tentar amanhã, já que agora é quase meia-noite. Vou mantê-lo atualizado!
Calin #
Experimente as opções da fonte de relógio externa da minha resposta antes de fritar acidentalmente o controlador com uma voltagem muito alta. A alta tensão deve estar entre 11,5 e 12,5V (capítulo 20.7.1 na folha de dados).
usar o seguinte código
1
Obrigado! A versão "fixa" do ArduinoISP me ajudou a resolver meu problema! Carreguei a versão fixa no Arduino, desconectei o Arduino e conectei o ATTiny normalmente, mas com o pino 9 do Arduino conectado ao pino 2 do ATTiny (como você sugeriu). Depois disso, abri o Arduino IDE e selecionei ATTiny85 (com relógio interno de 8 MHz) como minha placa e ArduinoISP como programador. Cliquei em Ferramentas> Gravar Bootloader e tudo deu certo. Depois disso, carreguei novamente o esboço original do ArduinoISP do diretório Examples e pude programar o ATTiny novamente usando meu Arduino como programador.
Calin #
5

Como o @jippie disse, isso é simplesmente uma questão de aplicar uma fonte de clock externa (na verdade, não importa se a fonte do clock é 20MHz ou não, ela só precisa atingir 1MHz ou mais para gerenciar a velocidade de programação SPI do ArduinoISP).

Como uma alternativa à versão do ArduinoISP mencionada acima, você pode experimentar o ScratchMonkey , que além da geração de clock também executa o software SPI para lidar com outros problemas de clock. A menos que você tenha conseguido desativar o seu pino de redefinição, não deve haver razão para recorrer à programação de alta tensão.

microtherion
fonte