collapse

* Links de Robótica

* Posts Recentes

[Projecto] Bomba Airsoft por jm_araujo
[Hoje às 16:54]


Palavras Cruzadas por Njay
[Hoje às 15:47]


Apresentação por Tech_JA
[Hoje às 09:19]


Medir Agua que está no Poço por filjoa
[21 de Setembro de 2017, 20:58]


URGENTE - display de 7 segmentos com backpack por helderjsd
[20 de Setembro de 2017, 12:30]


Preços e fabricantes de pcb por Sérgio_Sena
[19 de Setembro de 2017, 10:20]


Isaac Asimov - I, Robot por senso
[18 de Setembro de 2017, 03:41]


ic SL440 da Plessey? por senso
[16 de Setembro de 2017, 13:11]


Compra Colectiva RS-Amidata por brunus
[15 de Setembro de 2017, 22:31]


Ideias para construir um quadrúpede simples por zordlyon
[15 de Setembro de 2017, 10:18]

Autor Tópico: Repor Fuses do ATMega328  (Lida 1776 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.627
  • 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.088
    • 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.088
    • 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 »