LusoRobótica - Robótica em Português

Sistemas específicos => Arduino / AVR => Tópico iniciado por: edeweld em 26 de Fevereiro de 2017, 04:00

Título: Bootloader com arduino e nhduino uno
Enviado por: edeweld em 26 de Fevereiro de 2017, 04:00
Olá,

Tenho um atmega 328 que o bootloader foi à vida! Pretendo voltar a "queimar" o mesmo no pic. Estive a ler este artigo https://www.arduino.cc/en/Tutorial/ArduinoToBreadboard (https://www.arduino.cc/en/Tutorial/ArduinoToBreadboard). Qual dos métodos aconselham e preferem. O quais as vossas razões?

Prefiro fazer o método de "Minimal Circuit (Eliminating the External Clock)". A questão é que não sei se tenho que remover o atmega do arduino uno que está bom.

Possuo um NHduino Uno, versão mais barata do arduino UNO. http://code.primaryblogs.net/2015/01/03/arduino-clones-ch340-chipsets-and-macosx/ (http://code.primaryblogs.net/2015/01/03/arduino-clones-ch340-chipsets-and-macosx/). Posso utilizar este para aplicar o método de "Minimal Circuit (Eliminating the External Clock)"?

Obrigado
Título: Re: Bootloader com arduino e nhduino uno
Enviado por: jm_araujo em 26 de Fevereiro de 2017, 11:49
Pretendo voltar a "queimar" o mesmo no pic.

Que PIC?
O Arduino usa ATMega, e o bootloader é só para ATMega. Se metes PICs ao barulho é outra fruta.


Os esquemas do "Minimal Circuit" o primeiro (da esquerda) é para programar o bootloader no ATMega. O da direita é para meter programas a partir do software do Arduino. Com o teu NHduino só podes fazer o primeiro, o segundo não consegues porque não dá para tirar o atmega da placa!

Se queres meter o arduino em breadboard, recomendo-te comprar arduinos Nano. EStão ao preço da chuva e poupa-te o trabalho de bootloaders, como ligar ao PC, se tem ou não cristal, teres de ter 5V regulados para alimentar, etc
Os últimos que comprei foram a menos de 2€ cada: https://lusorobotica.com/index.php?topic=8254.msg97854#msg97854
Esse listing do ebay já subiu o preço, mas procurando não deve ser difícil encontrar mais a esse preço.
Título: Re: Bootloader com arduino e nhduino uno
Enviado por: edeweld em 26 de Fevereiro de 2017, 12:02
Não posso chamar pic ao atmega?

Vou fazer o primeiro do Minimal Circuit  com o nhduino.
Após fazer o bootloader no atmega como o posso exprimentar? Posso colocar o mesmo no arduino uno? (gostava de verificar o atmega sem o apllicar no arduno uno, pois nem sempre tenho a placa do arduino uno disponível).

O objectivo é recuperar dois atmega 328 que ficaram com o bootloader "queimado". Emprestei os dois a funcionar e vieram com erro no momento de fazer upload.
Título: Re: Bootloader com arduino e nhduino uno
Enviado por: StrikerofDeath em 26 de Fevereiro de 2017, 12:05
edeweld nao tenho nada contra ti, mas nao achas que umas pesquisas no google resolviam metade das tuas perguntas?

3º link do google:
http://www.instructables.com/id/Burning-the-Bootloader-on-ATMega328-using-Arduino-/

PIC - https://pt.wikipedia.org/wiki/Microcontrolador_PIC
Título: Re: Bootloader com arduino e nhduino uno
Enviado por: edeweld em 26 de Fevereiro de 2017, 12:10
edeweld nao tenho nada contra ti, mas nao achas que umas pesquisas no google resolviam metade das tuas perguntas?

3º link do google:
http://www.instructables.com/id/Burning-the-Bootloader-on-ATMega328-using-Arduino-/

PIC - https://pt.wikipedia.org/wiki/Microcontrolador_PIC

Estás à vontade! Eu gosto de criticas construtivas  ;) :D
Já tinha passado por tópicos como esse, mas resolvi questionar antes de "queimar" pois será a primeira vez que vou fazer isto.
Título: Re: Bootloader com arduino e nhduino uno
Enviado por: jm_araujo em 26 de Fevereiro de 2017, 12:17
Não posso chamar pic ao atmega?
Por mim até lhe podes chamar "querido", mas não é correto.  ;D

São processadores de marcas diferentes (ok, a Microchip comprou a Atmel, mas ainda são diferentes), com arquiteturas diferentes, com instruções diferentes, ambientes de desenvolvimento diferentes, portanto se queres ser correto não podes.
O termo genérico é "microcontrolador" ou abreviado "micro".

Alegoria:
Era o mesmo que um mecânico chamar a todos os carros "Fiat", independentemente se eram mesmo Fiat, Renault, Opel ou Mercedes. As peças não dão de uns nos outros! O termo correto é chamar pela marca certa, ou usar "automóvel" ou abreviado "auto" ou "carro".

Citar
Após fazer o bootloader no atmega como o posso exprimentar? Posso colocar o mesmo no arduino uno? (gostava de verificar o atmega sem o apllicar no arduno uno, pois nem sempre tenho a placa do arduino uno disponível).
Se tens um Uno com socket para o ATMega, depois de programar o bootloader podes meter o mesmo no socket e deve funcionar normalmente. Mas nesse caso deves usar o bootloader normal para cristal de 16MHz: Segues o guia "Minimal Circuit" mas no ponto 5 usas o bootloader para cristal de 16MHz, e já não podes usar o arduino sem cristal como no 2º diagrama do "Minimal".

Senão precisas de um conversor USB-TTL Série, que é o que a placa do arduino sem ATMega faz no 2º diagrama.. Ou então compras um como os que estão no link da minha resposta junto aos Nano V3.
Título: Re: Bootloader com arduino e nhduino uno
Enviado por: edeweld em 26 de Fevereiro de 2017, 12:57
Não posso chamar pic ao atmega?
Por mim até lhe podes chamar "querido", mas não é correto.  ;D

São processadores de marcas diferentes (ok, a Microchip comprou a Atmel, mas ainda são diferentes), com arquiteturas diferentes, com instruções diferentes, ambientes de desenvolvimento diferentes, portanto se queres ser correto não podes.
O termo genérico é "microcontrolador" ou abreviado "micro".

Alegoria:
Era o mesmo que um mecânico chamar a todos os carros "Fiat", independentemente se eram mesmo Fiat, Renault, Opel ou Mercedes. As peças não dão de uns nos outros! O termo correto é chamar pela marca certa, ou usar "automóvel" ou abreviado "auto" ou "carro".
Aprendido, atmega != pic  :D

Citar
Após fazer o bootloader no atmega como o posso exprimentar? Posso colocar o mesmo no arduino uno? (gostava de verificar o atmega sem o apllicar no arduno uno, pois nem sempre tenho a placa do arduino uno disponível).
Se tens um Uno com socket para o ATMega, depois de programar o bootloader podes meter o mesmo no socket e deve funcionar normalmente. Mas nesse caso deves usar o bootloader normal para cristal de 16MHz: Segues o guia "Minimal Circuit" mas no ponto 5 usas o bootloader para cristal de 16MHz, e já não podes usar o arduino sem cristal como no 2º diagrama do "Minimal".

Senão precisas de um conversor USB-TTL Série, que é o que a placa do arduino sem ATMega faz no 2º diagrama.. Ou então compras um como os que estão no link da minha resposta junto aos Nano V3.

Neste link https://www.arduino.cc/en/Tutorial/ArduinoToBreadboard (https://www.arduino.cc/en/Tutorial/ArduinoToBreadboard), no ponto 1 "Download this hardware configuration archive: breadboard-1-6-x.zip, Breadboard1-5-x.zip or Breadboard1-0-x.zip depending on which IDE you use." Qual arquivo utilizo? Estou a utilizar a versão 1.8.1. do arduino, tem haver com isso certo?
Título: Re: Bootloader com arduino e nhduino uno
Enviado por: LVirtual em 26 de Fevereiro de 2017, 13:05
IDE é a abreviatura da plataforma de software que usas para desenvolver e compilar o codigo que envias para o teu "PIC" ;)

IDE= Interface Development Enviroment.

conforme a plataforma usada nem todos os "codigos" sacados da net podem servir sem pequenos ajustes nas suas funçoes.

que software estas a usar para a programação?
Título: Re: Bootloader com arduino e nhduino uno
Enviado por: jm_araujo em 26 de Fevereiro de 2017, 13:21
Neste link https://www.arduino.cc/en/Tutorial/ArduinoToBreadboard (https://www.arduino.cc/en/Tutorial/ArduinoToBreadboard), no ponto 1 "Download this hardware configuration archive: breadboard-1-6-x.zip, Breadboard1-5-x.zip or Breadboard1-0-x.zip depending on which IDE you use." Qual arquivo utilizo? Estou a utilizar a versão 1.8.1. do arduino, tem haver com isso certo?

Esse é um nível de detalhe em que o tempo que demoro a encontrar a resposta no google ou a testar versões é igual ao que tu demorarias. Como o projeto não é meu, adivinha quem é que vai fazer esse trabalho? ;)

Não te esqueças depois de partilhar aqui a solução para quando surgir alguém com a mesma dúvida!
Título: Re: Bootloader com arduino e nhduino uno
Enviado por: Njay em 26 de Fevereiro de 2017, 16:08
Se esses AVRs estiverem bons e tinham bootloaders gravados, para os poderes reprogramar tens que meter um cristal e respectivos condensadores. Um dos passos envolvidos na programação do bootloader Arduino UNO é mudar a configuração para apenas funcionar com cristal por isso uma vez programado um destes bootloaders, reprogramar o chip implica usar um cristal. Há internamente alguma espécie de "máquina de estados" que controla a programação, e essa máquina usa a mesma fonte de clock do chip.
Título: Re: Bootloader com arduino e nhduino uno
Enviado por: edeweld em 26 de Fevereiro de 2017, 16:44
Boas,

Não tive sucesso e estou na fase de troubleshoooting. Fiz este doc com os passos que fiz: https://drive.google.com/file/d/0BzlNeCfGh2GVTXdWeUNBTUVnNVE/view?usp=sharing (https://drive.google.com/file/d/0BzlNeCfGh2GVTXdWeUNBTUVnNVE/view?usp=sharing)

Reparei que mesmo não importando "breadboard-1-6-x.zip, Breadboard1-5-x.zip or Breadboard1-0-x.zip" consigo fazer todos os passos. Por isso devo estar a fazer algo de errado.
Alguma sugestão?
Título: Re: Bootloader com arduino e nhduino uno
Enviado por: edeweld em 26 de Fevereiro de 2017, 16:45
Se esses AVRs estiverem bons e tinham bootloaders gravados, para os poderes reprogramar tens que meter um cristal e respectivos condensadores. Um dos passos envolvidos na programação do bootloader Arduino UNO é mudar a configuração para apenas funcionar com cristal por isso uma vez programado um destes bootloaders, reprogramar o chip implica usar um cristal. Há internamente alguma espécie de "máquina de estados" que controla a programação, e essa máquina usa a mesma fonte de clock do chip.

O objectivo é fazer o burn bootloader sem cristal.
Título: Re: Bootloader com arduino e nhduino uno
Enviado por: Njay em 26 de Fevereiro de 2017, 16:55
Um AVR virgem, que nunca foi programado, podes programar sem cristal. Se o AVR já teve um bootloader gravado, a única hipótese de o programar é com um cristal... quer queiras quer não, não tens outra hipótese.
Título: Re: Bootloader com arduino e nhduino uno
Enviado por: edeweld em 26 de Fevereiro de 2017, 17:01
Um AVR virgem, que nunca foi programado, podes programar sem cristal. Se o AVR já teve um bootloader gravado, a única hipótese de o programar é com um cristal... quer queiras quer não, não tens outra hipótese.

Vamos por partes  :o ;D
"AVR is a family of microcontrollers developed by Atmel beginning in 1996. These are modified Harvard architecture 8-bit RISC single-chip microcontrollers." Portanto, é o meu atmega 328P, certo?

Este AVR já teve o bootloader e como começou a dar o erro, que por acaso é igual ao que está no artigo que partilhei, comecei a pesquisar sobre como fazer o burnbootloader. Como encontrei o artigo da própria arduino.cc fiquei com esperanças que fosse possível "queimar" o mesmo sem o cristal. Pondo isto, o veredito final é que preciso do cristal, das resistências e do condensador (como nesta montagem https://www.arduino.cc/en/uploads/Tutorial/BreadboardAVR.png (https://www.arduino.cc/en/uploads/Tutorial/BreadboardAVR.png)). Certo?
Título: Re: Bootloader com arduino e nhduino uno
Enviado por: Njay em 26 de Fevereiro de 2017, 17:16
Sim, o ATmega328P é um AVR (tem um core de CPU AVR, para ser mais preciso :)).

A resistência deve ser a do /RESET mas normalmente não é precisa.

Há mtos anos fiz esta cena em anexo, para estas e outras situações em que preciso de fazer um teste rápido, e que apelidei carinhosamente de "meu cristal de guerra" :) (que inclusivé já "safou" algumas pessoas na tua situação). O pino do meio, de ligar ao GND do circuito, está soldado à caixa do cristal e aos 2 condensadores (de 22pF). Usei um de 4MHz porque era o que tinha à mão na altura, mas quem quiser replicar isto para esta aplicação é melhor usar um cristal de 16MHz, porque com o de 4MHz é preciso ter velocidades de programação mais baixas (pode-se programar um AVR com velocidades penso que até 1/2 da velocidade do seu clock).
Título: Re: Bootloader com arduino e nhduino uno
Enviado por: jm_araujo em 26 de Fevereiro de 2017, 19:23
Há mtos anos fiz esta cena em anexo, para estas e outras situações em que preciso de fazer um teste rápido, e que apelidei carinhosamente de "meu cristal de guerra" :) (que inclusivé já "safou" algumas pessoas na tua situação). O pino do meio, de ligar ao GND do circuito, está soldado à caixa do cristal e aos 2 condensadores (de 22pF). Usei um de 4MHz porque era o que tinha à mão na altura, mas quem quiser replicar isto para esta aplicação é melhor usar um cristal de 16MHz, porque com o de 4MHz é preciso ter velocidades de programação mais baixas (pode-se programar um AVR com velocidades penso que até 1/2 da velocidade do seu clock).

Grande dica esse cristal já com condensadores! Acho que é a primeira vez que vejo essa ideia, e o jeitaço que dá para "debugar" micros! 5*
Título: Re: Bootloader com arduino e nhduino uno
Enviado por: edeweld em 26 de Fevereiro de 2017, 20:10
Sim, o ATmega328P é um AVR (tem um core de CPU AVR, para ser mais preciso :)).

A resistência deve ser a do /RESET mas normalmente não é precisa.

Há mtos anos fiz esta cena em anexo, para estas e outras situações em que preciso de fazer um teste rápido, e que apelidei carinhosamente de "meu cristal de guerra" :) (que inclusivé já "safou" algumas pessoas na tua situação). O pino do meio, de ligar ao GND do circuito, está soldado à caixa do cristal e aos 2 condensadores (de 22pF). Usei um de 4MHz porque era o que tinha à mão na altura, mas quem quiser replicar isto para esta aplicação é melhor usar um cristal de 16MHz, porque com o de 4MHz é preciso ter velocidades de programação mais baixas (pode-se programar um AVR com velocidades penso que até 1/2 da velocidade do seu clock).

Grande dica. Vou fazer o mesmo! Depois coloco foto do "tanque"  ;D
Tenho uma coisa destas (emprestada) http://imgur.com/a/60Oqn (http://imgur.com/a/60Oqn) Posso fazer o burn bootloader com isto? (Desculpem a falta de termos técnicos mas ainda estou no início :D

[UPDATE 1]
Já descobri o nome da coisa  :P AVR USBASP Programmer.
Segui os passos deste tutorial http://tutorial.cytron.com.my/2011/12/19/burning-arduino-bootloader-with-avr-usbasp/ (http://tutorial.cytron.com.my/2011/12/19/burning-arduino-bootloader-with-avr-usbasp/), mas recebo este output no final:
Código: [Seleccione]
avrdude: warning: cannot set sck period. please check for usbasp firmware update.
avrdude: warning: cannot set sck period. please check for usbasp firmware update.
 ***failed; 
avrdude: WARNING: invalid value for unused bits in fuse "efuse", should be set to 1 according to datasheet
This behaviour is deprecated and will result in an error in future version
You probably want to use 0xfd instead of 0x05 (double check with your datasheet first).
avrdude: warning: cannot set sck period. please check for usbasp firmware update.
avrdude: warning: cannot set sck period. please check for usbasp firmware update.

Já tentei actualizar o avrdude ou o usbasp mas não consegui. Supostamente está tudo actualizado.
Estou a googlar pelo aviso "avrdude: WARNING: invalid value for unused bits in fuse "efuse", should be set to 1 according to datasheet
This behaviour is deprecated and will result in an error in future version" e parece que é uma incompatibilidade, devido às várias versões existentes.

Alguem já experimentou com este avr usbasp programmer'
Título: Re: Bootloader com arduino e nhduino uno
Enviado por: jm_araujo em 26 de Fevereiro de 2017, 20:31
Isso tem algum nome/marcação?
Título: Re: Bootloader com arduino e nhduino uno
Enviado por: senso em 26 de Fevereiro de 2017, 20:34
Diz-se programar..
É programar,  idealmente a ideia é tudo menos queimar coisas..
Título: Re: Bootloader com arduino e nhduino uno
Enviado por: Tech_JA em 27 de Fevereiro de 2017, 07:32
Njay,
o teu "cristal de guerra" é tão simples mas é de uma extrema utilidade. Nunca me passou pela cabeça fazer algo parecido (ando sempre com os condensadores e o cristal às voltas) mas agora já sei o que fazer :D

Parabéns pela invenção e obrigado pela partilha!
Título: Re: Bootloader com arduino e nhduino uno
Enviado por: edeweld em 27 de Fevereiro de 2017, 23:03
Boas,

Estou a fazer tudo conforme o artigo https://www.arduino.cc/en/Tutorial/ArduinoToBreadboard (https://www.arduino.cc/en/Tutorial/ArduinoToBreadboard) mas recebo este erro para o ATmega328-PU:
Código: [Seleccione]
avrdude: Yikes!  Invalid device signature.
         Double check connections and try again, or use -F to override
         this check.

E para o ATmega328P-PU tenho este erro:
Código: [Seleccione]
***failed; 
avrdude: verification error, first mismatch at byte 0x0000
         0xfd != 0x05
avrdude: verification error; content mismatch

As configurações são:
Programmer: Arduino as ISP
Board: Arduino Duemilanove or Nano w/ ATmega328
Título: Re: Bootloader com arduino e nhduino uno
Enviado por: Njay em 27 de Fevereiro de 2017, 23:59
Meteste o cristal e os condensadores? Os fios do arduino para o chip não podem ser mto compridos, tenta manter mais curto que 15cm, qto mais curto melhor.

Os "ressonadores" são uma espécie de cristal com muito menos precisão e muitos já vêm com os condensadores integrados, portanto têm 3 patas.
Título: Re: Bootloader com arduino e nhduino uno
Enviado por: edeweld em 28 de Fevereiro de 2017, 00:04
Aqui vai foto da montagem: https://drive.google.com/file/d/0BzlNeCfGh2GVTWhuSWFPMXNkSDg/view?usp=sharing (https://drive.google.com/file/d/0BzlNeCfGh2GVTWhuSWFPMXNkSDg/view?usp=sharing)
Título: Re: Bootloader com arduino e nhduino uno
Enviado por: Hugu em 04 de Março de 2017, 01:28
Há mtos anos fiz esta cena em anexo, para estas e outras situações em que preciso de fazer um teste rápido, e que apelidei carinhosamente de "meu cristal de guerra" :) (que inclusivé já "safou" algumas pessoas na tua situação). O pino do meio, de ligar ao GND do circuito, está soldado à caixa do cristal e aos 2 condensadores (de 22pF).
tinha ficado melhor se o pino do ground ficasse numa das pontas.. ou nem por isso? (nao estou a ser ironico)

Ja agora como é esse teste rapido que fazes com o teu cristal de guerra? ou como se debuga? (debugar que tipo de erros?)

jm_araujo: acho que o edeweld nao quer comprar nada, mesmo que só custe 1€, acho que só quer recuperar os atmegas e insiste na gravação sem o cristal porque nao deve ter nenhum por perto :P

Se "nao" podes gravar os atmegas sem o cristal e nao podes remover no arduino/clone e gravar la os teus atmegas, entao fornece o sinal do clock a partir do teu NHarduino..

(acho que dá para gravar sem cristal, ja vi algures uma configuração e uns sketchs proprios para conseguir instalar um bootloader externamente e sem recurso a um cristal externo)

edeweld: Mas queres os atmegas com o clock interno activado? tens preferencia em algum bootloader?

(só reparei agora que este topico ja parou no dia 27Fev e que os ficheiros de partilha ja nao estao disponiveis..  ??? )  é por isso mesmo que as pessoas deviam usar links de partilha permanentes e nao temporários.. uma pessoa fica às moscas e só apanha metade :/

Mas smp conseguiste meter o bootloader nos atmegas? usaste o "avr usbasp programmer", ou foi externamente sem o cristal externo?


Diz-se programar..
É programar,  idealmente a ideia é tudo menos queimar coisas..
programar ou gravar.. (qual preferem ou que termologia costumam usar?)
De facto queimar já é puxar uma termonologia pra uma situação que nao tem nada haver, entendo que o calão de queimar/burn é usada no sentido de gravar algo como os cd/dvs e pelo processo envolvido na gravação deles é que se tenha começado a usar essa termonologia do queimar para algo que estamos a gravar.. mas queimar micros, é mais para associar à destruição deles do que ao acto de programá-los..

Edeweld: tb é estranho quereres queimá-los quando disseste no inicio, que te tinhas dois atmegas com o os bootloaders queimados. E nao é queimando duas vezes seguidas que os vais recuperar! ;D lol

mas..
(https://cdn-learn.adafruit.com/assets/assets/000/003/548/medium800/learn_arduino_burnbootloader.gif?1448059448)
Título: Re: Bootloader com arduino e nhduino uno
Enviado por: Njay em 06 de Março de 2017, 23:27
Há mtos anos fiz esta cena em anexo, para estas e outras situações em que preciso de fazer um teste rápido, e que apelidei carinhosamente de "meu cristal de guerra" :) (que inclusivé já "safou" algumas pessoas na tua situação). O pino do meio, de ligar ao GND do circuito, está soldado à caixa do cristal e aos 2 condensadores (de 22pF).
tinha ficado melhor se o pino do ground ficasse numa das pontas.. ou nem por isso? (nao estou a ser ironico)

Por acaso já esteve (2 pinos numa ponta trocados), mas agora tenho usado mais assim, tenho umas placas que já têm 3 pinos femeas para levar este cristal. De qualquer forma na matriz de contactos podes meter a pata de GND "para trás" e enfiá-la no rail GND - bem melhor do que aquela fiarada toda como recomendam no tutorial do site do Arduino que Edweld deixou no 1º post...

Citar
Ja agora como é esse teste rapido que fazes com o teu cristal de guerra? ou como se debuga? (debugar que tipo de erros?)

É quando alguém tá com problemas em gravar o bootloader e não está a usar cristais (às vezes entre várias tentativas mudam só os fuses e depois já não conseguem gravar sem cristal, ou não sabem que para regravar (recuperar) é preciso um). Chego lá enfio o cristal na matriz e sabemos logo se era ou não esse o problema.