collapse

* Posts Recentes

O que é isto ? por SerraCabo
[12 de Abril de 2024, 14:20]


Amplificador - Rockboard HA 1 In-Ear por almamater
[11 de Abril de 2024, 20:46]


Emulador NES em ESP32 por dropes
[10 de Abril de 2024, 15:30]


Meu novo robô por josecarlos
[29 de Março de 2024, 18:30]


Bateria - Portátil por almamater
[25 de Março de 2024, 22:14]


Escolher Osciloscópio por jm_araujo
[06 de Fevereiro de 2024, 23:07]


TP4056 - Dúvida por dropes
[31 de Janeiro de 2024, 14:13]


Leitura de dados por Porta Serie por jm_araujo
[22 de Janeiro de 2024, 14:00]


Distancia Cabo por jm_araujo
[08 de Janeiro de 2024, 16:30]


Laser Engraver - Alguém tem? por almamater
[16 de Dezembro de 2023, 14:23]

Autor Tópico: Repor Fuses do ATMega328  (Lida 3663 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline Capeleiro

  • Mini Robot
  • *
  • Mensagens: 127
Repor Fuses do ATMega328
« em: 09 de Outubro de 2010, 11:42 »
Construí um programador com base num Arduino e com ele resolvi tentar gravar bootloaders, enviar programas sem bootloader, e explorar um pouco mais. Foi então que experimentei alterar os fuses do chip para trabalhar com o clock interno de 8MHz, o que até correu bem. Mas então decidi colocar a fonte de clock de origem do Arduino (cristal de 16MHz) e enganei-me e coloquei como External Clock, ou seja, coloquei todos os fuses a zeros.

O problema é que agora não consigo enviar nada para o ATMega pois recebo a seguinte mensagem:
Citar
avrdude: Device signature = 0x000000
avrdude: Yikes!  Invalid device signature.
         Double check connections and try again, or use -F to override this check.

Quando tento repor os fuses para qualquer valor os bytes continuam a zeros:
Citar
C:\Users\Rodrigo>avrdude -p m328p -P com3 -c avrisp -b 19200 -F -U lfuse:w:0x62:
m -U hfuse:w:0xD9:m -U efuse:w:0xFF:m -U lock:w:0xFF:m

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.12s

avrdude: Device signature = 0x000000
avrdude: Yikes!  Invalid device signature.
avrdude: Expected signature for ATMEGA328P is 1E 95 0F
avrdude: reading input file "0x62"
avrdude: writing lfuse (1 bytes):

Writing |                                                    | 0% 0.00s ***faile
d;
Writing | ################################################## | 100% 0.31s

avrdude: 1 bytes of lfuse written
avrdude: verifying lfuse memory against 0x62:
avrdude: load data lfuse data from input file 0x62:
avrdude: input file 0x62 contains 1 bytes
avrdude: reading on-chip lfuse data:

Reading | ################################################## | 100% 0.02s

avrdude: verifying ...
avrdude: verification error, first mismatch at byte 0x0000
         0x62 != 0x00
avrdude: verification error; content mismatch

avrdude: safemode: lfuse changed! Was 62, and is now 0
Would you like this fuse to be changed back? [y/n] n
avrdude: safemode: Fuses OK

avrdude done.  Thank you.

O que estou a fazer mal? Existe alguma forma de contornar o problema?

Offline amando96

  • Mini Robot
  • *
  • Mensagens: 1.631
  • MAC address? But I have windows...
    • Projects, News, Blog, Tutorials
Re: Repor Fuses do ATMega328
« Responder #1 em: 09 de Outubro de 2010, 12:57 »
Ligaste lá o cristal externo?

Offline Capeleiro

  • Mini Robot
  • *
  • Mensagens: 127
Re: Repor Fuses do ATMega328
« Responder #2 em: 09 de Outubro de 2010, 13:13 »
Ligaste lá o cristal externo?
Liguei tal como no Arduino, o problema deve estar aí então.
O datasheet manda ligar de forma diferente, mas como é que posso gerar a frequência?
(figura 8-4. da página 35)

Offline Njay

  • Mini Robot
  • *
  • Mensagens: 3.598
    • Tróniquices
Re: Repor Fuses do ATMega328
« Responder #3 em: 09 de Outubro de 2010, 14:10 »
Se escolheste "External clock" agora ele só funciona com um clock gerado no exterior a entrar pelo pino XTAL1, com o pino XTAL2 sem estar ligado a nada. Tens que arranjar/fazer um gerador de clock (oscilador de onda quadrada), podes fazer por exemplo com um 555 (alimentado a 5V) ou usar um AMPOP ou umas portas lógicas (há milhentos circuitos na net). Se tiveres outro arduino(breaduino tb o podes pôr a gerar uma onda quadrada para servir de clock.
« Última modificação: 09 de Outubro de 2010, 14:12 por Njay »

Offline Capeleiro

  • Mini Robot
  • *
  • Mensagens: 127
Re: Repor Fuses do ATMega328
« Responder #4 em: 09 de Outubro de 2010, 15:11 »
Obrigado. No datasheet dizem que a frequência deve ser entre 0 e 20MHz. Qual a frequência mínima que vai fazer funcionar, só para ter uma ideia?

Offline Njay

  • Mini Robot
  • *
  • Mensagens: 3.598
    • Tróniquices
Re: Repor Fuses do ATMega328
« Responder #5 em: 09 de Outubro de 2010, 15:50 »
O clock tem que ser umas 4 vezes superior à velocidade máxima (bitrate) com que o avrdude vai programar. Usa pelo menos umas centenas de KHz, se não funcionar acho que podes configurar o avrdude para ficar mais lento (vê o manual).

Offline Capeleiro

  • Mini Robot
  • *
  • Mensagens: 127
Re: Repor Fuses do ATMega328
« Responder #6 em: 09 de Outubro de 2010, 17:33 »
Ok, obrigado Njay

EDIT: Já agora, também posso definir o pin CLKO de outro ATmega como output do clock de sistema e ligá-lo ao XTAL1, não é?
« Última modificação: 09 de Outubro de 2010, 18:46 por Capeleiro »