LusoRobótica - Robótica em Português

Sistemas específicos => Arduino / AVR => Tópico iniciado por: almamater em 20 de Novembro de 2010, 18:29

Título: O meu Arduino morreu?
Enviado por: almamater em 20 de Novembro de 2010, 18:29
 :'(

Estou com o famoso erro:

avrdude: stk500_getsync(): not in sync: resp=0x00
avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x51

E não é a porta que está mal escolhida nem a versão do Arduino (328 Duemilanove) no programa de upload (versão 0021): .

Já reinstalei os drivers, liguei/desliguei N vezes e nada... com o mesmo cabo e no  mesmo PC consigo programar outro Arduino que tenho!

Este comprei-o aqui na loja Lusorobita e sempre funcionou bem, aliás a última vez que o arrumei tinha acabado de o programar, não percebo o que se passou que agora não consigo!

A luz de Power está ON e detecta sem problema, qdo vai a fazer o upload a luz pisca como é normal mas depois as luzes RX TX não piscam.. e passado uns 20 segundos dá o tal erro na aplicação! Posso fazer alguma coisa mais?
Título: Re: O meu Arduino morreu?
Enviado por: almamater em 20 de Novembro de 2010, 19:32
Bom.. já comprei outro Arduino aqui na Loja, agora vem um UNO  ::) grrr agora é esperar que chegue! mas deve ser rápido e eficaz segundo a boa experiência que tenho com a Lusorobotica.

Estive a tarde toda a fazer um projecto e qdo ía testar pimba... o Arduino não voltou das trevas  :'(
Título: Re: O meu Arduino morreu?
Enviado por: senso em 20 de Novembro de 2010, 21:31
Troca o atmega de um arduino para o outro, se fizer o mesmo no arduino bom é o atmega que se foi, se não é o ftdi e podes guardar o atmega para fazer um breaduino ou assim.
Título: Re: O meu Arduino morreu?
Enviado por: Cynary em 20 de Novembro de 2010, 21:55
Aconteceu-me uma coisa semelhante recentemente.
Primeiro, a placa USB estava com problemas (soube isso porque ela estava a aquecer muito :S) e para confirmar que era só isso, tentei programar directamente o atmega com um programador que tenho.
No entanto, o meu erro foi pensar que o bootloader permaneceria, visto que foi apagado :S.
Por alguma razão estranha, a placa USB já voltou a funcionar em o.O
Mas não fazia upload para o arduino, visto o bootloader ter sido apagado ...
Tentei reprogramá-lo, mas ao fazê-lo, copiei directamente da internet uns comandos que alteravam os fuses, respectivamente o clock source, e puseram para um clock interno, que o atmega do arduino não tem :S Visto que não tenho um programador em paralelo, nem porta paralela para fazer um, "matei" o atmega xD
No entanto, sei que a porta USB funciona, visto conseguir usar outros atmega na placa do arduino e comunicar por série ...
Para saberes se o problema está na porta ou no atmega, podes fazer o seguinte: vê se tens alguma coisa a sobreaquecer; se tiveres, então o problema deve estar nesse componente. Senão, vê se quando tentas fazer upload para o arduino, a luz de RX pisca por uns breves momentos (é o programador a enviar dados para o atmega). Se piscar, ou o atmega perdeu o bootloader por alguma razão, ou morreu. Se o problema estiver no atmega, podes tentar fazer upload do bootloader (se tiveres um programador), ou podes tentar arranjar um atmega328 com o bootloader do arduino (vendem-se a cerca de 4,5€ ... infelizmente não há na lusorobótica, mas existem outras lojas com eles).
Outra forma de testares se o problema está no atmega ou não é colocar o do arduino UNO no teu antigo.
Título: Re: O meu Arduino morreu?
Enviado por: tr3s em 20 de Novembro de 2010, 22:27
Para quem está com problemas no Arduino, nomeadamente Bootloaders que "estoiraram":

Flashar Bootloader no Atmega, atraves do Arduino (http://lusorobotica.com/index.php/topic,427.0.htm)
Título: Re: O meu Arduino morreu?
Enviado por: almamater em 20 de Novembro de 2010, 22:48
Aconteceu-me uma coisa semelhante recentemente.
Primeiro, a placa USB estava com problemas (soube isso porque ela estava a aquecer muito :S) e para confirmar que era só isso, tentei programar directamente o atmega com um programador que tenho.
No entanto, o meu erro foi pensar que o bootloader permaneceria, visto que foi apagado :S.
Por alguma razão estranha, a placa USB já voltou a funcionar em o.O
Mas não fazia upload para o arduino, visto o bootloader ter sido apagado ...
Tentei reprogramá-lo, mas ao fazê-lo, copiei directamente da internet uns comandos que alteravam os fuses, respectivamente o clock source, e puseram para um clock interno, que o atmega do arduino não tem :S Visto que não tenho um programador em paralelo, nem porta paralela para fazer um, "matei" o atmega xD
No entanto, sei que a porta USB funciona, visto conseguir usar outros atmega na placa do arduino e comunicar por série ...
Para saberes se o problema está na porta ou no atmega, podes fazer o seguinte: vê se tens alguma coisa a sobreaquecer; se tiveres, então o problema deve estar nesse componente. Senão, vê se quando tentas fazer upload para o arduino, a luz de RX pisca por uns breves momentos (é o programador a enviar dados para o atmega). Se piscar, ou o atmega perdeu o bootloader por alguma razão, ou morreu. Se o problema estiver no atmega, podes tentar fazer upload do bootloader (se tiveres um programador), ou podes tentar arranjar um atmega328 com o bootloader do arduino (vendem-se a cerca de 4,5€ ... infelizmente não há na lusorobótica, mas existem outras lojas com eles).
Outra forma de testares se o problema está no atmega ou não é colocar o do arduino UNO no teu antigo.


Yep, a luz RX pisca umas 3 vezes mas a TX nem sinal, será que vale a pena tentar fazer o processo que o tr3s referiu?  Neste momento o outro Arduino que tenho e a funcionar é um ATMEGA 168, posso testar este ATMEGA328 nele a ver se acontece o mesmo?
Título: Re: O meu Arduino morreu?
Enviado por: CBX em 20 de Novembro de 2010, 22:51
sim
Título: Re: O meu Arduino morreu?
Enviado por: GnGz em 20 de Novembro de 2010, 23:15
Faz isso, mas para matares dois na mesma cajadada poe o 164 na placa : vez se a placa tá boa ou se
é o mcu.


Cumps :D
Título: Re: O meu Arduino morreu?
Enviado por: almamater em 20 de Novembro de 2010, 23:21
prefiro meter o 328 (supostamente estragado) na placa do 168 que está boa  :P
Título: Re: O meu Arduino morreu?
Enviado por: almamater em 20 de Novembro de 2010, 23:40
Pouca sorte.. é mesmo o MCU, pelo menos na board boa tb não funcionou e devolveu o mesmo erro e as luzes portaram-se da mesma forma.

Não sei se quero arriscar em meter o MCU 168 bom na placa onde estava o 328 estragado  ::) é melhor estar quieto! Tb já comprei um arduino é esperar que para a semana chegue! Raios
Título: Re: O meu Arduino morreu?
Enviado por: CBX em 20 de Novembro de 2010, 23:44
não tens nada a perder em tentar flashar o bootloader no 328...
Título: Re: O meu Arduino morreu?
Enviado por: Cynary em 20 de Novembro de 2010, 23:47
Se tiveres um programador à mão, tenta colocar o bootloader no MCU .. só não faças o mesmo erro que eu e ponhas os fuses configurados para clock interno xD
Senão, e quiseres recuperar esse arduino, encomenda um atmega com bootloader incluído. Coloca o atmega168 na placa do atmega estragado. Se este funcionar, então o atmega novo que receberes vai pôr o teu arduino a funcionar. Se não funcionar, o atmega que encomendares dá para substituir o 168 xD.
É um risco, mas no máximo gastas uns 5€+portes ...
Título: Re: O meu Arduino morreu?
Enviado por: Njay em 21 de Novembro de 2010, 01:21
Ainda tenho mega328 com arduino (5,40€ c/ portes). Mas a questão é que se o LED do arduino (o do pino 18) pisca quando se faz um reset, o bootloader do mega deveria estar bom.

Ah, e o mega tem clock interno, e isso não impede que se programe o chip. O teu problema Cynary, se realmente o há, deve ser outro.

Dá para fazer um teste simples ao FTDI, fazendo um "loopback". Isto consiste em retirar o mega e pôr um fio a ligar o TX com o RX (nos pinos do socket do mega). Aí é abrir o hyperterminal e configurar a COM do arduino para 8 data bits, 1 stop bit, no parity, flow control none, 9600 bps. Depois, ao escrever no terminal e se o FTDI estiver bom, o que se escreve deve aparecer. Repetir o teste sem o fio ligado entre o TX e o RX só para garantir que não há "coisas estranhas" no procedimento de teste. Se o arduino passar este teste é muito provavel que o FTDI esteja bom, pelo menos a parte de TX/RX série (podem ao menos usá-lo como conversor USB<->série). O FTDI tem outros pinos que poderão estar estragados; o único que me lembro agora que pode fazer com que não consigam gravar programas no arduino apesar de passar o teste da porta série que descrevi é o de reset, mas sempre dá para fazer um reset manual e continuar a usar o arduino.
Título: Re: O meu Arduino morreu?
Enviado por: Cynary em 21 de Novembro de 2010, 13:14
Isso é estranho ...
É assim, antes de colocar os fuses para usar o clock interno de 8MHz, ele funcionava (dava para programar com o programador que tenho).
Depois, deixou de dar resposta.
A placa FTDI não é o problema visto conseguir utilizá-la para comunicações série, e até o pino de reset funciona.
Eu lembro-me de ler algures que o atmega usado no arduino não tem um clock interno de 8MHz ... e não estou a ver que outro problema tenha (nem como resolvê-lo, visto o arduino não responder ao programador :/)
Título: Re: O meu Arduino morreu?
Enviado por: CBX em 21 de Novembro de 2010, 13:22
ao configurar os fuses, por acidente não desactivaste o isp?
Título: Re: O meu Arduino morreu?
Enviado por: Njay em 21 de Novembro de 2010, 13:39
O mega que vem com o arduino vem configurado para usar o cristal externo para clock, mas internamente continua a ter um gerador de clock de 8MHz, só que não está selecionado.

Se ele está com o clock interno e não consegues programá-lo com o programador que tens, pode ser que esse programador esteja a tentar programar demasiado depressa (bit rate). A velocidade a que enfias bits no AVR durante a programação tem que ser inferior a 1/3 da do clock do AVR; normalmente o software dos programadores permite controlar a velocidade de programação.
Título: Re: O meu Arduino morreu?
Enviado por: Cynary em 21 de Novembro de 2010, 16:43
Duvido que o problema seja do programador, visto conseguir programar outros microcontroladores a 8MHz perfeitamente ...
CBX: Pelo que vi na datasheet, o único bit dos fuses que podia desactivar o ISP é SPIEN. No entanto, este continuou programado ...
O micro-controlador deixou de responder após alterar os fuses com este comando:

Citar
avrdude -p m8 -P /dev/ttyUSB0 -c avrisp -b 19200 -e -U lock:w:0x3F:m -U lfuse:w:0xc4:m -U hfuse:w:0xd9:m

deste site: http://ntsdt.net/2009/08/22/burning-the-arduino-bootloader/ (http://ntsdt.net/2009/08/22/burning-the-arduino-bootloader/)
Título: Re: O meu Arduino morreu?
Enviado por: CBX em 21 de Novembro de 2010, 18:10
já agora qual é o atmega?

pelo comando deduzo que seja um atmega8, se for tenta gravar estes fuses:

Código: [Seleccione]
-U lfuse:w:0xe1:m -U hfuse:w:0xd9:m
é o default
Título: Re: O meu Arduino morreu?
Enviado por: Cynary em 21 de Novembro de 2010, 18:30
Oops, copiei directamente do site xD
O atmega é o atmega328p, e coloquei o -m328p para corrigir isso, esqueci-me foi de alterar aqui.
E já tentei alterar os fuses para o default, mas como disse, ele não responde ao programador!
Título: Re: O meu Arduino morreu?
Enviado por: CBX em 21 de Novembro de 2010, 18:43
cola aqui o erro que dá...
Título: Re: O meu Arduino morreu?
Enviado por: Cynary em 21 de Novembro de 2010, 18:51
Citar
avrdude: stk500v2_command(): command failed
avrdude: stk500v2_command(): unknown status 0xc9
avrdude: stk500v2_program_enable(): cannot get connection status
avrdude: initialization failed, rc=-1
avrdude: AVR device initialized and ready to accept instructions
avrdude: Device signature = 0x000000
avrdude: Yikes!  Invalid device signature.
avrdude: Expected signature for ATMEGA328P is 1E 95 0F
avrdude: NOTE: FLASH memory has been specified, an erase cycle will be performed
         To disable this feature, specify the -D option.

(dá-me este erro quando uso a flag -F para ignorar a assinatura do aparelho)
Título: Re: O meu Arduino morreu?
Enviado por: CBX em 21 de Novembro de 2010, 18:57
estas a usar windows ou linux?

confirma a porta
Título: Re: O meu Arduino morreu?
Enviado por: Cynary em 21 de Novembro de 2010, 19:15
Estou a usar linux.
A porta confirma-se porque programei lá outro atmega e funcionou bem (além disso, acho que o erro seria outro se tivesse posto a porta errada).
É assim, eu lembro-me de ler que o atmega do arduino não tem oscilador interno ... não me lembro é onde li isso, e faz sentido, visto que a única coisa especial daqueles fuses é o facto de passar a usar o interno ...
Título: Re: O meu Arduino morreu?
Enviado por: Njay em 21 de Novembro de 2010, 20:08
Todos os AVR têm oscilador interno. Como disse, no arduino ele não está é selecionado (está seleccionado o oscilador com cristal externo).
Título: Re: O meu Arduino morreu?
Enviado por: senso em 21 de Novembro de 2010, 20:24
Atenção que não dá para mudar fuses usando bootloader, só com um programador a sério.
Pois, como já disseram baixa para o minimo a velocidade de programação, o fuse que activa e desactiva o botão do reset tambem não se pode mexer se não o ISP deixa de funcionar pois precisa do pino do reset para colocar o avr no modo de programação.
Título: Re: O meu Arduino morreu?
Enviado por: almamater em 23 de Novembro de 2010, 19:44
Ah !!! Já chegou o meu Arduino Uno!!   ;D  ;D a ver se não o estrago desta vez!

Entretanto caiu-me a moedinha relativamente ao que está estragado..  há uns dias estava a montar o Arduino + Motorshield + 4Pilhas e liguei-o à USB para afzer Upload do programa, azar dos azares, o fio + das pilhas soltou-se da breadboard e sem ninguem lhe tocar vai cair exatamente no buranco do arduino dos +5v  ??? 

O arduino parece que "foi abaixo" mas depois testei o programa e correu tudo bem... por isso nem liguei! mas deve ter sido disso... enfim, acontece
Título: Re: O meu Arduino morreu?
Enviado por: Orion em 26 de Novembro de 2010, 18:06
Já vi essas mensagens também. O led verde de PWM ligava, mas o rx e o tx, pouco ou nada faziam. E o pc não detectava o arduino ou quando detectava dizia "dispositivo desconhecido". Experimentei noutro pc e nada... Experimentei num terceiro pc e simplesmente deu... Fez automaticamente a pesquisa e instalação das drivers. Fiz o upload de mensagens simples como
void setup() {}
void lood() {}

e pronto, começou a funcionar na boa... Sinceramente ainda não sei o que de facto se passou, mas...
Título: Re: O meu Arduino morreu?
Enviado por: senso em 26 de Novembro de 2010, 22:34
Isso provavelmente são drivers mal instalados e depois fazem loops infinitos sempre a mandar coisas por serial que entope o USB e o vosso computador fica todo baralhado, isso regra geral carregar no reset para fazer o upload do programa chega bem.
Título: Re: O meu Arduino morreu?
Enviado por: Henriqueneves em 08 de Janeiro de 2011, 14:59
desculpem lá estar outra vez a falar do tópico, mas aconteceu exatamente o mesmo ao meu arduino UNO, quais são realmente os procedimentos?
Título: Re: O meu Arduino morreu?
Enviado por: GnGz em 08 de Janeiro de 2011, 15:06
desculpem lá estar outra vez a falar do tópico, mas aconteceu exatamente o mesmo ao meu arduino UNO, quais são realmente os procedimentos?

Antes funcionava ?
Título: Re: O meu Arduino morreu?
Enviado por: Henriqueneves em 08 de Janeiro de 2011, 15:15
nunca chegou a funcionar isso é que é estranho :-[ :-[
Título: Re: O meu Arduino morreu?
Enviado por: senso em 08 de Janeiro de 2011, 15:47
Instalas-te o driver que está na pasta Drivers do IDE do Arduino?
Já experimentas-te outro cabo USB ou outra porta USB?
Título: Re: O meu Arduino morreu?
Enviado por: Henriqueneves em 08 de Janeiro de 2011, 15:53
Sim, o do Arduino UNO e tb já experimentei mudar de cabo mas o resultado é o mesmo, alguem sabe como fazer um re-clock ao atmel?de forma barata?
Título: Re: O meu Arduino morreu?
Enviado por: senso em 08 de Janeiro de 2011, 16:16
Re-clock?
Antes funcionava, deixou de funcionar porque?
O que é que efectivamente não funciona?
Título: Re: O meu Arduino morreu?
Enviado por: CBX em 08 de Janeiro de 2011, 17:07
provavelmente está a falar em gravar outro bootloader, para isso precisas de um programador, o mais barato é um programador pela porta paralela: http://www.arduino.cc/en/Main/ParallelProgrammer (http://www.arduino.cc/en/Main/ParallelProgrammer)
Título: Re: O meu Arduino morreu?
Enviado por: Henriqueneves em 08 de Janeiro de 2011, 18:16
o que penso que me esteja a acontecer é o que aconteceu ao almamater, pois o que me aparece sempre é:
avrdude: stk500_getsync(): not in sync: resp=0x00
avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x51

Re-clock?
Antes funcionava, deixou de funcionar porque?
O que é que efectivamente não funciona?

O arduino nunca chegou a funcionar, recebi quarta de manhã e passei a tarde a tentar fazer o upload mas a resposta era sempre a mesma.
o que penso que não funciona é o atmega, pois se o esperado é 0x14 e a resposta é de 0x51, penso que seja dai.
Já agora a led TX nunca piscou e a RX penso que 3x durante o upload.
Título: Re: O meu Arduino morreu?
Enviado por: GnGz em 08 de Janeiro de 2011, 18:19
Compraste onde?
Título: Re: O meu Arduino morreu?
Enviado por: Henriqueneves em 08 de Janeiro de 2011, 20:03
esqueçam já resolvi
Título: Re: O meu Arduino morreu?
Enviado por: jorge_rc em 08 de Janeiro de 2011, 20:35
Mas, já agora partilha o teu problema e ta soluçao, pode ser útil  ;)


Abraço
Título: Re: O meu Arduino morreu?
Enviado por: senso em 08 de Janeiro de 2011, 21:10
Provavelmente drivers por instalar, placa mal escolhida, ou porta COM errada.