collapse

* Posts Recentes

Potênciometro 4.7 ou 5 KOhm com switch por Hugu
[Hoje às 00:02]


é preciso ter cuidado com ESD? por Hugu
[Ontem às 18:50]


Valores de alcance de ponta de prova por vasco
[Ontem às 14:28]


Como reproteger as pontas de cobre do ferros de soldar? por vasco
[16 de Dezembro de 2018, 18:53]


Bibliotecas para arduino e drivers de stepper - o problema da 'distracção' por SerraCabo
[14 de Dezembro de 2018, 12:12]


Zener BZW04-105? por brunus
[11 de Dezembro de 2018, 17:34]


Artigo 11, 13 e os restantes por jm_araujo
[10 de Dezembro de 2018, 11:05]


Compra Colectiva Mouser N3-2018 (limite 25 Nov) por Hugu
[10 de Dezembro de 2018, 01:07]


Ajuda para reparar Luzes de LED de Natal por brunus
[09 de Dezembro de 2018, 00:59]


Usar steppers de 5 pontas como se fossem de 4 pontas por SerraCabo
[08 de Dezembro de 2018, 21:18]

Autor Tópico: Repor Fuses do ATMega328  (Lida 2227 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.628
  • 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.396
    • 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.396
    • 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 »