• Welcome to LusoRobótica - Robótica em Português.
 

Bootloader com arduino e nhduino uno

Started by edeweld, 26 de February de 2017, 04:00

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

edeweld

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. 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/. Posso utilizar este para aplicar o método de "Minimal Circuit (Eliminating the External Clock)"?

Obrigado

jm_araujo

Quote from: edeweld on 26 de February de 2017, 04:00
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.

edeweld

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.

StrikerofDeath

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

edeweld

Quote from: StrikerofDeath on 26 de February 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

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.

jm_araujo

#5
Quote from: edeweld on 26 de February de 2017, 12:02
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".

Quote
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.

edeweld

Quote from: jm_araujo on 26 de February de 2017, 12:17
Quote from: edeweld on 26 de February de 2017, 12:02
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

Quote from: jm_araujo on 26 de February de 2017, 12:17
Quote
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, 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?

LVirtual

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?
"O defeito mais grave dos humanos, aquele que coloca mais obstáculos à sua evolução, é a crença profundamente arreigada na infalibilidade dos seus raciocínios e dos seus pontos de vista."

jm_araujo

Quote from: edeweld on 26 de February de 2017, 12:57
Neste link 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!

Njay

#9
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.

edeweld

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

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?

edeweld

Quote from: Njay on 26 de February 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.

O objectivo é fazer o burn bootloader sem cristal.

Njay

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.

edeweld

Quote from: Njay on 26 de February 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.

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). Certo?

Njay

#14
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).