LusoRobótica - Robótica em Português
Sistemas específicos => Arduino / AVR => Tópico iniciado por: Sovietico em 04 de Dezembro de 2015, 19:43
-
Boas malta,
Ontem experimentei programar o meu primeiro ATMega328. Ate a data so tinha programado em PIC.
Decidi seguir o tutorial do senso e quando chegou à parte de programar fiz as ligações todas e aqui começaram os problemas:
1. Liguei MISO a MISO, MOSI a MOSI e por ai alem.
2. Tenho um cristal externo de 16MHz com condensadores de 22pF a ligar ao GND.
3. Nao mexi nos fuses e os micros sao completamente novos e comprados em loja física no Porto.
4. Consigo ler uma target voltage de 5V mas obtenho o erro "Unablebto entre programming mode" quando faco read signature.
Alguém consegue ajudar a solucionar o problema?
-
Pull up no reset?
Decoupling dos pinos de alimentação?
-
10k dos 5V ao pino de reset.
Nao tinha nada nos pinos de VCC, GND e AREF.
-
Não convém os fios entre o chip e o programador terem mais de 20 - 25cm.
Um erro comum é trocar o MISO com o MOSI, verifica isso com muita atenção.
Um chip virgem não precisa de cristal, mas não faz mal lá estar.
Que programador estás a usar?
-
As conexoes estão bem feitas: Miso para miso e mosi para mosi. Verifiquei isso uma dezena de vezes.
O programador e um AVRISP mkii.
So que eu acho que ele já não estão bom porque segundo o que me disseram, ja andaram a trocar o flat cable.
Posto isto eu pergunto, mesmo que tenha trocado os pinos miso e mosi (da primeira vez liguei pela ficha e so depois e que liguei direto a PCB) o programador queimaria? Ele continuou a dar os dois leds verdes...
Eu tinha o cristal porque queria testar se o LCD tinha um comportamento melhor a essa frequencia. Basta o F_CPU 16000000LU para definir o cristal? Nao tenho que mexer nos fuses?
-
Trocar miso mosi e sck já aconteceu muitas vezes e nunca fritou.
Se tiveres iposes de testar outro programador, ou com arduino 2009.
-
Tens de mudar os fuses sim, para Ext crystal, sem bootloader e BOD a 4.3v, para o 328p com 16Mhz fica assim:
http://www.engbedded.com/fusecalc/ (http://www.engbedded.com/fusecalc/)
Low:0xFF
High: 0xD9
Extended: 0xFC
-
O UNO original tem os fuses:
Efuse: 05
Hfuse: DE
Lfuse: FF
Ao colocar estes fuses ficará com BOD 2.7V, oscilador externo, 8..16MHz, slowly rising power.
O Atmega328P costuma ter duas assinaturas diferentes, pelo que podem dar erro na programação deles por não os reconhecer.
Neste caso costumo editar um ficheiro de configuração (avrdude) e altero a assinatura para a lida.
-
As conexoes estão bem feitas: Miso para miso e mosi para mosi. Verifiquei isso uma dezena de vezes.
O programador e um AVRISP mkii.
So que eu acho que ele já não estão bom porque segundo o que me disseram, ja andaram a trocar o flat cable.
Posto isto eu pergunto, mesmo que tenha trocado os pinos miso e mosi (da primeira vez liguei pela ficha e so depois e que liguei direto a PCB) o programador queimaria? Ele continuou a dar os dois leds verdes...
Se meteres 1 resistência de uns 100 Ohm em série com o MOSI e MISO não deve queimar nem degradar nada (para o dio123: lá porque não frita logo, não quer dizer que não fica degradado). Se estiver trocado o problema é que ficam 2 saídas ligadas "uma contra a outra" e qualquer diferença de estado ou tensão de alimentação faz circular uma corrente alta entre as 2 saídas (se uma estiver a high e outra a low cria um curto na alimentação), degradando/destruindo o circuito interno do pinos. O programador pode já ter essas resistências, não sei.
-
Boas,
Desde já obrigado pelos conselhos. O que vou fazer então vai ser o seguinte:
1. Vou tentar alterar os fuses para os do Senso. Confesso que gostaria de aprender mais sobre isso mas estou numa corrida contra o tempo e se esses funcionarem vou adiar a leitura sobre o assunto. Consigo altera-los sem ler a assinatura? Porque eu acho que ele me deu o mesmo erro quando mudei para o menu Fuses (sem certezas porque já estava com a cabeça noutro lado).
2. Vou colocar a resistência de 220ohm (é a mais baixa que tenho) entre o MISO e o MOSI e testar outro programador.
3. Vou comprar outro ATmega de 28 ou 40 pinos (ainda não sei qual) e testar sem utilizar clock externo. Já que o 328p tem problemas nas assinaturas não me custa tentar isto.
Não queria voltar ao PIC até porque no meu último ano de mestrado vou ter de trabalhar com Atmel.
-
Mas que atmega é que estás a usar afinal?
A assinatura do 328 é diferente do 328p, agarra no chip e lê o que lá está.
-
Mas que atmega é que estás a usar afinal?
A assinatura do 328 é diferente do 328p, agarra no chip e lê o que lá está.
É um 328p senso
-
Só para deixar registado, troquei o programador por um comprado novo e original e funcionou sem problemas 8)