LusoRobótica - Robótica em Português

Sistemas específicos => Arduino / AVR => Tópico iniciado por: c3dr1c em 27 de Março de 2012, 13:26

Título: Sanguino
Enviado por: c3dr1c em 27 de Março de 2012, 13:26
Boas pessoal.

Tou frustrado... nao consigo fazer upload de arquivos po meu sanguino.

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

Flashei o bootloader 0018 no sanguino. Nao foi a versao mais recente, porque dava erro de sync. Pode tar relacionado?

O led piscam normalmente...

Abraços
Título: Re: Sanguino
Enviado por: zordlyon em 27 de Março de 2012, 13:58
Pode ser o tipo de atmega que selecionas te nas opções ou entao a porta COM, normalmente costuma dar esses sintomas...

experimenta selecionar os outros tipos de "arduino" nas opções...
Título: Re: Sanguino
Enviado por: c3dr1c em 27 de Março de 2012, 14:42
Ja tentei e nada. é mesmo frustante. é que nao faço a minma do que pode ser.

Se calhar tenho de tentar flshar o bootloader mais recente de novo...
Título: Re: Sanguino
Enviado por: rsoares em 27 de Março de 2012, 15:11
Mudas-te as config´s dos fusiveis para o bootloader ?
Título: Re: Sanguino
Enviado por: c3dr1c em 27 de Março de 2012, 16:57
O que sao os fusiveis? Fiz o processo que estava descrito aqui:

http://reprap.org/wiki/Burning_the_Sanguino_Bootloader_using_Arduino_as_ISP (http://reprap.org/wiki/Burning_the_Sanguino_Bootloader_using_Arduino_as_ISP)

Ja flashei de novo com o 0018. A versao sanguino 0023 da erro de sync na mesma.
MAs continuo a nao conseguir fazer upload...

Título: Re: Sanguino
Enviado por: rsoares em 27 de Março de 2012, 17:06
A tua board tem botao reset ?
Título: Re: Sanguino
Enviado por: c3dr1c em 27 de Março de 2012, 17:12
Yap, inclusive exoperimentei carregar no botao enquanto fazia upload, 10 segundos, e outras maneiras mais que apareceiam na net e zero.

 
Título: Re: Sanguino
Enviado por: rsoares em 27 de Março de 2012, 17:25
Em  "Tools>Boards> " encontras o sanguino ?
Título: Re: Sanguino
Enviado por: CBX em 27 de Março de 2012, 17:34
nunca consegui gravar nada noutro micro controlador com o arduino a servir de programador, muito menos gravar fuses, não tens outro programador?
Título: Re: Sanguino
Enviado por: c3dr1c em 27 de Março de 2012, 17:57
Yap ta la sanguino e ta escolhida essa opção.

Porta COM3 com 9600 baudrate.


Posso arranjar o AVRdude ne?

Epa que desespero.
Título: Re: Sanguino
Enviado por: zedlav em 27 de Março de 2012, 18:34
Se tens o bootloader do Sanguino-0018r2_1_4.zip então o bauderate está a 38400 configurado na source.
Título: Re: Sanguino
Enviado por: c3dr1c em 27 de Março de 2012, 19:51
Ja mudei o baudrate e da o mesmo...

Ja revi as ligações todas e isto tem tudo pa bater certo.
Tenho de ver se vos mostro as ligações para darem a vossa opiniao.

Se calhar vou tentar com o avrstudio. engenei-me no post anterior, nao era avrdude lool :P
Título: Re: Sanguino
Enviado por: zedlav em 27 de Março de 2012, 20:05
O atmega era virgem ;D?

Pode ser fuse bits.
Título: Re: Sanguino
Enviado por: c3dr1c em 27 de Março de 2012, 20:08
Yap era virgem. Ainda nao percebi que será isso dos fuse bits... Vou pesquisar um pouco.

Será que tenho de utilizar um cristal de 20mhz em vez de 16mhz?
Título: Re: Sanguino
Enviado por: zedlav em 27 de Março de 2012, 20:15
Claro que é fuse bits. 16mhz?? Se assim for tens de configurar os fuse bits.
Título: Re: Sanguino
Enviado por: CBX em 27 de Março de 2012, 20:19
é igual, os fuses para os 16mhz são os mesmos para os 20mhz

não vai adiantar usar o avrstudio, o bootloader é um ficheiro já compilado.

faz dowload do ultimo firmware do arduinoISP, coincidência ou não a ultima versão é de hoje e funciona no arduino 1.0: https://github.com/adafruit/ArduinoISP (https://github.com/adafruit/ArduinoISP)

depois pegas no avrdude e tentas gravar o .hex do bootloader
Título: Re: Sanguino
Enviado por: zedlav em 27 de Março de 2012, 20:23
Vais ter sempre de mexer nos fuse bits . Vê o datasheet.
Título: Re: Sanguino
Enviado por: c3dr1c em 27 de Março de 2012, 21:06
faz dowload do ultimo firmware do arduinoISP, coincidência ou não a ultima versão é de hoje e funciona no arduino 1.0: https://github.com/adafruit/ArduinoISP (https://github.com/adafruit/ArduinoISP)

depois pegas no avrdude e tentas gravar o .hex do bootloader

Gravar o bootloader no 644P atraves do atmega328 com o firmware la programado. É isto?
Título: Re: Sanguino
Enviado por: senso em 27 de Março de 2012, 21:11
Podes usar o sketch Arduino ISP, mas tens de meter uma resistência ai de 500ohms no reset para não teres o auto-reset  a funcionar, coisa que interfere na programação.
Outra coisa, se tens tudo como deve ser no IDE do Arduino ele altera os fuses automaticamente quando programas o bootloader.
Título: Re: Sanguino
Enviado por: c3dr1c em 27 de Março de 2012, 21:18
Essa da resistencia nao sabia. Eu flashei o bootloader no 644 com uma resistencia de 10K la. Ha e um condensador 100nF entre o reset e o ground.
Título: Re: Sanguino
Enviado por: senso em 27 de Março de 2012, 21:21
Resistência mas é no Arduino não é no micro que está a ser programado.
Não deves ter nenhum condensador no reset, porque programação ISP usa esse pino durante a programação e um condensador só vai afectar e não fazer bem, no máximo metes o pull-up.
Se quiseres enfia o bicho no correio que programo-te isso.
Título: Re: Sanguino
Enviado por: c3dr1c em 27 de Março de 2012, 21:34
Sim eu tava a falar no arduino.

Entao provavelmente eu nao consigo fazer upload de programas po 644P por causa da maneira que falshei o bootloader?

Bem vou testar como tu dizes, com a resistencia baixa e com o novo ISP.


Ja digo alguma coisa.

Thanks
Título: Re: Sanguino
Enviado por: c3dr1c em 27 de Março de 2012, 22:11
Com esse ISP nao consigo flashar nada :P

avrdude: stk500_paged_write(): (a) protocol error, expect=0x14, resp=0x64
avrdude: failed to write flash memory, rc=-4
avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x51


Flashei com o ISP que vem com o meu software arduino 0022 e com a resistencia de 560ohm.
Consigo flashar mas continuo a nao conseguir mandar programas pa la. Da erro na mesma de sync.
Acho que tenho mesmo de ir aprender isso dos fuse bits.

Mas fiz isto com o software arduino e nao com o avrstudio.

Senso se calhar ainda te mando isto :P Thanks
Título: Re: Sanguino
Enviado por: zedlav em 27 de Março de 2012, 22:28
O Makefile que vem no Sanguino-0018r2_1_4.zip não estão defenidos os fuse bits, o que me leva a perguntar quando o ide do arduino está a flashar onde está ele a buscar essa info? Vê o make file do sanguino e os make file do arduino.

Isto é se tiveres a usar Sanguino-0018r2_1_4.zip.
Título: Re: Sanguino
Enviado por: senso em 27 de Março de 2012, 22:36
Não sou utilizador do Arduino/IDE do mesmo, mas se não me enganos é no boards.txt em que quando lá adicionas um core defines os fuses para o bootloader.
Título: Re: Sanguino
Enviado por: c3dr1c em 27 de Março de 2012, 22:38
O Makefile que vem no Sanguino-0018r2_1_4.zip não estão defenidos os fuse bits, o que me leva a perguntar quando o ide do arduino está a flashar onde está ele a buscar essa info? Vê o make file do sanguino e os make file do arduino.

Isto é se tiveres a usar Sanguino-0018r2_1_4.zip.

Ya é esse que tou utilizar. Os mais recentes nao consigo flashar, da tambem erro de sync.
Título: Re: Sanguino
Enviado por: zedlav em 27 de Março de 2012, 22:59
Eu tambem não uso,fiz o download a um pouco. Sim parece que é defenido no boards.txt, mas o Makefile não tem referencias algo está aqui a falhar. @c3dr1c com o avrdude podes ler os fuses diz aí quais são se puderes. Podes sempre flashar com o avrdude e mudar os fuses se eles tiverem mal. devem estar assim low_fuses=0xFF high_fuses=0xDC  extended_fuses=0xFD e os lock_bits=0x0F.
 
Título: Re: Sanguino
Enviado por: senso em 27 de Março de 2012, 23:06
Makefiles só tem referências a fuses se tiver incluido uma "função" para chamar o avrdude, se não, .hex de Atmel não têm informação nenhuma sobre fuses ao contrário por exemplo dos .hex dos PIC.
Título: Re: Sanguino
Enviado por: zedlav em 27 de Março de 2012, 23:21
@senso exacto. No optiboot o sanguino aparece no make file do ide-1.0 com fuses diferentes  :o não pesco nada desde ide.O makefile que vem com o sanguino nem tem lá o avrdude referido. É normal para o arduino?
Título: Re: Sanguino
Enviado por: zedlav em 28 de Março de 2012, 01:47
Aqui no meu atmega644p com o arduino-0023 + Sanguino-0018r2_1_4.zip deu sem problemas, neste momento corre o blink led  a unica diferença foi por o bootloader no 644p sem o arduino-ide.
Título: Re: Sanguino
Enviado por: c3dr1c em 28 de Março de 2012, 11:36
Entao e metes-te como?
Tenho aqui o avrdude, so tenho de perceber como funciona. Vou ler uns tutoriais...

O sanguino é esse que tas a utilizar. O arduino que uso é o 0022 mas nao deve ser por ai...

Edit: utilizo isto no avrdude para ver os fuse bits:
avrdude -c stk500 -p m8 -P /dev/ttyS0 -U hfuse:r:high.txt -U lfuse:r:low.txt

? ? ?


EDIT:
Vou experimentar isto:
http://www.instructables.com/id/Turn-Your-Arduino-Into-an-ISP/?ALLSTEPS (http://www.instructables.com/id/Turn-Your-Arduino-Into-an-ISP/?ALLSTEPS)

Pode ser que dê. Eu para ler os fusebits tenho de fazer um cabo para conectar o pc ao icsp ne?
Título: Re: Sanguino
Enviado por: zedlav em 28 de Março de 2012, 14:11
Boas.
Eu para flashar os meus atmegas uso um programador isp-usb criado por mim com um software tambem feito por mim, por isso não uso avrdude nem outro conhecido.

Se usares linux com avrdude.
Código: [Seleccione]
avrdude -c stk500 -p m644 -P /dev/ttyUSB0 -U hfuse:r:high.txt -U lfuse:r:low.txtttyUSB0 se for por usb ttyS0 se for a porta serial.

Se for em windows deves ver o que vais ter de meter em troca de /dev/ttyUSB0.

Se fosse com o meu programador seria algo como.
Código: [Seleccione]
usb_isp -rfuses


Título: Re: Sanguino
Enviado por: zedlav em 28 de Março de 2012, 14:22
Onde está stk500 acho que é avrisp.  Não tenho a certeza.
Título: Re: Sanguino
Enviado por: c3dr1c em 28 de Março de 2012, 14:26
Txi nao percebo nada disto :P

Bem vamos la fazer o ponto de situação.
Tenho o bootloader 0018r2_1_4 flashado no atmega644, com arduino 0023.

Supostamente foi bem gravado, ou pode acontecer algo neste processo que faça com que nao funcione?

Agora pelo que voces me dizem, trata-se dos fuse bits que tenho de verificar.

Entao para ler esses fuse bits, tenho de criar um cabo usb-icsp e ter por exemplo o avrdude, para poder ler os seus valores, certo?

Vou pesquisar sobre o cabo e o avrdude...

Título: Re: Sanguino
Enviado por: zedlav em 28 de Março de 2012, 14:42
Desculpa eu é que não sou o melhor gajo para explicar por escrito.

Para ver qual é o problema temos ir por partes a primeira é ler os fuse, se estes tiverem bem então lemos a flash e comparamos com o ficheiro hex para ver se tudo está igual.
Os atmegas 644p e outros vem de fabrica a 8mhz com RC, e no 644p ainda têm um fuse bit que divide o clock por 8, por isso é que deves ver os fuse bits.


1º - Tu tens um arduino(hardware) este vai emular um gravador isp.
2º - Ligas da mesma forma que ligas para gravar o bootloader, mas não abres o arduino(ide).
3º - abres uma linha de commandos e executas esse commando do avrdude para ler os fuses.
4º - Se conseguio ler verifica se os fuses lidos são iguais aos que necessitas.

Estás com linux?


Título: Re: Sanguino
Enviado por: c3dr1c em 28 de Março de 2012, 15:03
Sabes sim, eu é que nao me debrucei muito sobre o tema.

Bem sendo assim tenho tudo ja o que preciso. É so estudar o funcionamento do avrdude. Ha um tutorial bom na net, vou faze-lo.

Nop, é o windows...
Título: Re: Sanguino
Enviado por: c3dr1c em 28 de Março de 2012, 15:25
Bem como tu ja tinhas dito tenho de trocar o /dev/ttyUSB0, que é o que me ta a dar problemas no avrdude... De resto acho que ja tou a perceber como isto funciona...
Título: Re: Sanguino
Enviado por: senso em 28 de Março de 2012, 15:26
Trocas o /dev/ttyS0 por COMx, em que x é o numero da porta COM em que o teu Arduino aparece.
Título: Re: Sanguino
Enviado por: c3dr1c em 28 de Março de 2012, 15:28
Ya foi o que acabei agora de experimentar. E deu...

...mas deu algo que eu nunca esperava :P

stk500_getsync<>:not in sync:resp 0x00
avr done. thank you

thank you uma porra!!!! este erro percegue-me, tenho de levar o chip a um bruxo :P
Título: Re: Sanguino
Enviado por: senso em 28 de Março de 2012, 15:33
Mas tens o auto-reset desactivado e os pinos do ISP  todos bem ligados?
Miso com Miso, Mosi com Mosi, alimentação no sitio certo, reset com pull-up de 10K?
Título: Re: Sanguino
Enviado por: c3dr1c em 28 de Março de 2012, 15:42
Eia pois é, desactivar o auto reset, com a tal resistencia de 500ohm em vez de 10kohm no arduino como me tinhas dito certo? Nao fiz isso agora...

Sim os cabos ISP tao correctamente ligados, acabei de ver na datasheet.
Tenho o cristal de quarto 16mhz com dois condensadores de 22pf ligados tb. e mais as entradas vcc e ground... Isto no 644

Reset com pull-up de 10kohm onde? No 644? Isso nao tenho...


EDIT:
Ja meti uma resistencia de 560Ohm no arduino, em vez da de 10k. Tb experimentei sem a resistencia de 10k no reset do 644 e com a resistencia. Erro na mesma.
Ja experimentei baudrates de 9600, 38400 e 19200 mas nada.

A unica coisa que eu vi de diferente foi o erro a mudar 0x00 para 0xe0 :P

É muito facil queimar um chip destes sem querer?
Título: Re: Sanguino
Enviado por: zedlav em 28 de Março de 2012, 15:54
o firmware do isparduino emula o avrisp ou o stk500?
Título: Re: Sanguino
Enviado por: c3dr1c em 28 de Março de 2012, 15:58
Citar
// this sketch turns the Arduino into a AVRISP
// using the following pins:
// 10: slave reset
// 11: MOSI
// 12: MISO
// 13: SCK

// Put an LED (with resistor) on the following pins:
// 9: Heartbeat - shows the programmer is running
// 8: Error - Lights up if something goes wrong (use red if that makes sense)
// 7: Programming - In communication with the slave
//
// October 2009 by David A. Mellis
// - Added support for the read signature command
//
// February 2009 by Randall Bohn
// - Added support for writing to EEPROM (what took so long?)
// Windows users should consider WinAVR's avrdude instead of the
// avrdude included with Arduino software.
//
// January 2008 by Randall Bohn
// - Thanks to Amplificar for helping me with the STK500 protocol
// - The AVRISP/STK500 (mk I) protocol is used in the arduino bootloader
// - The SPI functions herein were developed for the AVR910_ARD programmer
// - More information at http://code.google.com/p/mega-isp (http://code.google.com/p/mega-isp)

Pelo que leio diria que era os dois loool.

Experimentei com st500 e dáme timeouts....


Citar
In System Programmers based on the AVR Mega8 chip, including Arduino(tm)

Avrisp protocol firmware (includes support for fuses and locks).

November 2011 Source code is now available on github.

June 2011 Haven't tried it, but perhaps the fastest way to get ArduinoISP working on the UNO is to disable the bootloader. Then when the board resets it goes right into ArduinoISP. Note: you will want some way to re-enable the bootloader.

July 2009 How about a shield for the Arduino for use with mega-isp? mega-isp-shield

Older code: Arduino-AVR910: works with AVRDude to copy your hex file to your AVR chip. If you already have an Arduino you can use it to burn projects to other AVR chips (Mega8, Tiny2313, Tiny13, etc).

Vou experimentar com o AVR910...
Título: Re: Sanguino
Enviado por: zedlav em 28 de Março de 2012, 16:03
Aqui http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1277933355 (http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1277933355) eles usam como argumento no avrdude avrisp.
Título: Re: Sanguino
Enviado por: c3dr1c em 28 de Março de 2012, 16:14
tb nao deu...

pois avrisp... tem logica... :P

Bem so me falta flashar o 644 pelo avrdude. Pode ser que funcione depois :P

VOu experimentar.
Título: Re: Sanguino
Enviado por: c3dr1c em 28 de Março de 2012, 16:28
Oh claro que nao deu.... Da o tal erro. Enfim tou farto disto. Começo a pensar que estraguei o chip com algum descuido...

Senso posso te enviar isto para tu veres o que se passa? :P
Título: Re: Sanguino
Enviado por: zedlav em 28 de Março de 2012, 16:46
Bem tenho pena que tenhas desistido :-[.  Podes-me mostrar o comando que estás a executar?
não falta este argumento 
Código: [Seleccione]
-b 19200Desculpa não te conseguir ajudar com avrdude. Talvez o pessoal do forum esteja disposto a iniciar um projecto lowcost software e programador usb (at90usb162) para fazer-mos a nosso próprio programador isp.
Título: Re: Sanguino
Enviado por: c3dr1c em 28 de Março de 2012, 17:13
Bem tenho pena que tenhas desistido :-[.  Podes-me mostrar o comando que estás a executar?
não falta este argumento 
Código: [Seleccione]
-b 19200Desculpa não te conseguir ajudar com avrdude. Talvez o pessoal do forum esteja disposto a iniciar um projecto lowcost software e programador usb (at90usb162) para fazer-mos a nosso próprio programador isp.

Tou a usar este: avrdude -c avrisp -p m644p -P COM3 -U hfuse:r:high.txt -U lfuse:r:low.txt

Epa ja tentei tanta coisa que nem sei que faça mais... Sinceramente acho que devo ter estragado o chip.
Mas sem esse argumento ele nao assume automaticamente o baudrate do windows?

Nao tens de pedir desculpa nenhuma... E o que tiveste a fazer foi ajudar ;D Eu é que agradeço muito pela tua ajuda e pelo teu tempo dispendido neste topico. Muito obrigado.
Título: Re: Sanguino
Enviado por: zedlav em 28 de Março de 2012, 17:25
Se ainda consegues gravar o bootloader no atmega644p pelo arduino isp então ele não está estragado. Possivelmente está é a correr a 8mhz e o bootloader está programado para 16mhz. Se o arduino-ide consegue gravar tambem tu consegues está a falhar alguma coisa aqui pelo meio.

Este tem o baudrate configurado pode ser disso.
Código: [Seleccione]
avrdude -c avrisp -p m644p -b 19200 -P COM3 -U hfuse:r:high.txt -U lfuse:r:low.txt

vê isto http://code.google.com/p/mega-isp/wiki/AvrispArduino (http://code.google.com/p/mega-isp/wiki/AvrispArduino)


Título: Re: Sanguino
Enviado por: c3dr1c em 28 de Março de 2012, 17:38
Ok entao ainda n vou desistir. Mais daqui a pouco ja tento, que agora tenho a cabeça cheia disto :P Ja digo alguma coisa
Título: Re: Sanguino
Enviado por: c3dr1c em 28 de Março de 2012, 18:35
Fogo tinhas toda a rasão... com esse parametro ja funciona :D
Finalmente alguma boa noticia... Ves como ajudas e bem :P eheheh

(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fi39.tinypic.com%2F3461a89.png&hash=782be1b4f4236a9832fb8e70f22267f5ef2f033b)

Vou tratar dos ficheiros para ler os fuse bits

Thanks

Título: Re: Sanguino
Enviado por: c3dr1c em 28 de Março de 2012, 18:47
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fi41.tinypic.com%2F153b1go.png&hash=c913d34f710da269d0ff935074a9571f176436be)

Supostamente falta alguma coisa pois os ficheiros têm so la escrito:
ÿ  = low
Ü  = high


Eheheh ja tou bem mais animado :D
E ja percebo alguma coisa de avrdude loool
Título: Re: Sanguino
Enviado por: senso em 28 de Março de 2012, 18:48
É binário, e o windows está a interpretar isso como caracteres unicode, abre com um editor hexadecimal ou simplesmente não metas ficheiros que ele escreve os valores em Hex na consola.
Título: Re: Sanguino
Enviado por: c3dr1c em 28 de Março de 2012, 18:58
É binário, e o windows está a interpretar isso como caracteres unicode, abre com um editor hexadecimal ou simplesmente não metas ficheiros que ele escreve os valores em Hex na consola.

Código: [Seleccione]
avrdude -c avrisp -p m644p -b 19200 -P COM3 -U hfuse:r -U lfuse:r
supostamente seria o codigo acima ou nao? Quer dizer, é nao, porque da me erro :P

EDIT:
bem de qualquer maneira, num conversor ai na web...

low = ÿ = %FF
high = Ü  = %DC

extended = ý = %FD
Título: Re: Sanguino
Enviado por: CBX em 28 de Março de 2012, 19:10
deveria ser algo deste género (estes são para um mega8):

-U lfuse:w:0xee:m -U hfuse:w:0xd9:m


usa esta calculadora:

http://www.engbedded.com/fusecalc (http://www.engbedded.com/fusecalc)
Título: Re: Sanguino
Enviado por: c3dr1c em 28 de Março de 2012, 19:19
Eu bem gostava de usar. Tenho é de dominar aqueles parametros todos primeiro, que nao pesco grande coisa... :P


Ja agora, acham que devo experimentar a fazer upload de um programa no arduino IDE po 644 com o baudrate a 19200?
Acho que nao experimentei com esse baudrate...

Como dava o mesmo erro no avrdude, que no arduino IDE, antes de usar o parametro para definir o baudrate...
Título: Re: Sanguino
Enviado por: zedlav em 28 de Março de 2012, 19:32
Os fuse bits estão correctos. Alguém me sabe responder o arduino(ide) quando grava o bootloader ele compila antes de flashar? Se for esse o caso então vais ter de instalar com o avrdude o bootloader hex que vem no zip do sanguino. Quando compilei aqui a source do bootloader deu-me um hex bem diferente do que vem no zip mas não me dei ao trabalho de ver porquê.
Título: Re: Sanguino
Enviado por: CBX em 28 de Março de 2012, 19:34
só precisas de mexer nos low fuses, vais à página 32 da datasheet, tens lá tudo explicado
Título: Re: Sanguino
Enviado por: senso em 28 de Março de 2012, 19:36
Os fuse bits estão correctos. Alguém me sabe responder o arduino(ide) quando grava o bootloader ele compila antes de flashar? Se for esse o caso então vais ter de instalar com o avrdude o bootloader hex que vem no zip do sanguino. Quando compilei aqui a source do bootloader deu-me um hex bem diferente do que vem no zip mas não me dei ao trabalho de ver porquê.

Penso que não, e o Arduino já tem o avrdude, assim como todo o avr-gcc e mais umas utilidades tipo sed e companhia, até porque o ide do Arduino usa o avrdude para falar com os bootloaders.
Título: Re: Sanguino
Enviado por: zedlav em 28 de Março de 2012, 19:56
Bem nesse caso só para tirar as duvidas eu flashava o bootloader ATmegaBOOT_644P.hex mas via comando(avrdude). Se não desse na mesma então aí passava á parte de ler a flash e comparar com o hex file ou binario este ultimo é melhor porque é igual ao que vai sair do avrdude para ser comparado.
Título: Re: Sanguino
Enviado por: c3dr1c em 28 de Março de 2012, 21:38
só precisas de mexer nos low fuses, vais à página 32 da datasheet, tens lá tudo explicado

Mas achas que é devido a isso?
Depois se poderes diz-me qual é a datasheet que a da atmel so tem 28 paginas :P
http://www.atmel.com/Images/8011S.pdf (http://www.atmel.com/Images/8011S.pdf)

Vou tentar dessa forma, flashar atraves do avrdude e ver se funca.

Obrigado pessoal pela ajuda... Ja teve mais longe :P
Título: Re: Sanguino
Enviado por: c3dr1c em 28 de Março de 2012, 21:49
Bem entao será algo deste genero?

Código: [Seleccione]
avrdude -c avrisp -p m644p -b 19200 -P COM3 -U flash:w:ATmegaBOOT_644P.hex
E o ficheiro ATmegaBOOT_644P.hex tem de tar na pasta principal do avrdude certo?

Nao quero fazer asneirada. Mas se o codigo nao estiver correcto e se tentar na mesma, nao ha problema?
Título: Re: Sanguino
Enviado por: senso em 28 de Março de 2012, 21:51
O ficheiro tem de estar onde quiseres, vais pela linha de comandos até á pasta onde tens o ficheiros e corres o comando.
Título: Re: Sanguino
Enviado por: c3dr1c em 28 de Março de 2012, 22:06
O ficheiro tem de estar onde quiseres, vais pela linha de comandos até á pasta onde tens o ficheiros e corres o comando.

Ah fixe. Assim é melhor...

É que eu tava sempre a ir a pasta do avrdude, pois pensava que so podia correr o programa a partir dai...
Título: Re: Sanguino
Enviado por: senso em 28 de Março de 2012, 22:23
No meu pc funciona em qualquer lado, mas tenho o WinAvr instalado, não sei como é quando instalas o IDE do Arduino, mas supostamente isso fica instalado em condições.
Título: Re: Sanguino
Enviado por: c3dr1c em 28 de Março de 2012, 22:29
Bem ja ta flashado com o dude.
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fi43.tinypic.com%2Fmvi4xt.png&hash=2a450f968b8344a881a456f46133a825c9b02f44)

Mas nao da na mesma :P
Tenho de ver isso dos low fuses...

EDIT: Ja encontrei a datasheet...
Título: Re: Sanguino
Enviado por: zedlav em 28 de Março de 2012, 22:40
Isso está a fazer reset antes de iniciar o upload?


Os meus fuse bits aqui no meu atmega644p

HFuse: 0xdc
LFuse: 0xf7
EFuse: 0xff
LBits: 0xff  // lockbits

Os que tiveres igual não percisas de mudar.

Se queres ver se o chip está estragado faz-lhe um flash com um blink led com o arduino isp.
Título: Re: Sanguino
Enviado por: c3dr1c em 28 de Março de 2012, 22:45
Isso está a fazer reset antes de iniciar o upload?


Os meus fuse bits aqui no meu atmega644p

HFuse: 0xdc
LFuse: 0xf7
EFuse: 0xff
LBits: 0xff  // lockbits

Os que tiveres igual não percisas de mudar.

Se queres ver se o chip está estragado faz-lhe um flash com um blink led com o arduino isp.

O Lfuse se bem me lembro ta diferente.
Nao sei ver os lock bits. Qual será o comando?

Vou experimentar isso do blink. Pelo menos ja despisto isso...

EDIT:
Ta é complicado de perceber como converto um ficheiro *.pde para *.hex
Alguem me pode ajudar?
Título: Re: Sanguino
Enviado por: zedlav em 28 de Março de 2012, 23:50
tens de compilar no ide e depois vai estar numa pasta.
retirado do site

Temp directory (C:\Users\USERNAME\AppData\Local\Temp\ on Windows 7). Presumably the numbers in the build2849146248544311107.tmp directory name will chanage.


fonte: http://electronics.stackexchange.com/questions/16321/creating-a-sketch-hex-file-from-a-pde-file (http://electronics.stackexchange.com/questions/16321/creating-a-sketch-hex-file-from-a-pde-file)
Título: Re: Sanguino
Enviado por: c3dr1c em 28 de Março de 2012, 23:54
Tenho de ir ver isso melhor, que ja tinha experimentado e nada... Mas andava a procura dum ficheiro com o mesmo nome do blink.pde

Ja agora, fui fazer o teu tutorial senso do avr. Mas nao consigo criar o hex file. Podes-me dar aqui uma ajuda?

(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fi44.tinypic.com%2Fv3g661.png&hash=e8d180e7e51b042987bdd2ab95a84135cf7813a1)
http://tinypic.com/r/v3g661/5 (http://tinypic.com/r/v3g661/5)

Mudei no codigo so a saida digital.


Edit: Zedlav so encontro arquivos *.pde por ai... Mas nem é na pasta build, pois nao existe :P

Senso acho que o problema pode ser disto:
gcc plug-in: No AVR Toolchain installation found. The AVR GCC plug-in can still be used if you set up your own build tools.

Mas instalei tudo o que tu disseste...
Mas ha uma diferença, no site da atmel so tava disponivel para download um novo pacote, que supostamente ja tras o sp3
Título: Re: Sanguino
Enviado por: c3dr1c em 29 de Março de 2012, 00:43
Consegui, instalei a tal toolbox e ja gerei o arquivo *.hex

Flashei o codigo escrito na imagem (carreguem no link para verem melhor e depois na imagem do link) e liguei um led ao chip no pino 29 e nao deu nada  ???

Será que ta queimado?

Vou mudar os fuse bits...
Título: Re: Sanguino
Enviado por: zedlav em 29 de Março de 2012, 00:59
O bootloader têm um delay para arancar com o programa e como o teu HFuse está configurado para saltar para o botloader ele pode demorar algo como 8 segundos. Mas sim muda o low fuse para ver se não é disso.
Título: Re: Sanguino
Enviado por: c3dr1c em 29 de Março de 2012, 01:00
tentei mudar assim:

Código: [Seleccione]
avrdude -c avrisp -p m644p -b 19200 -P COM3 -U lfuse:w:0xf7:m
mas quando leio o valor, aparece no txt o anterior que tinha ÿ
Título: Re: Sanguino
Enviado por: zedlav em 29 de Março de 2012, 01:06
Não tenho a certeza mas 0xF7 com o F em grande. Mas como digo não tenho a certeza.
Título: Re: Sanguino
Enviado por: c3dr1c em 29 de Março de 2012, 01:12
Esquece... tava a ver o ficheiro errado loool. Ja alterei o efuse e o lfuse. O hfuse é igual.
Qual o comando para os lock bits? Lbits?

E ja agora qual a frequencia do cristal que usas no teu?
Título: Re: Sanguino
Enviado por: zedlav em 29 de Março de 2012, 01:17
Penso que seja lock.
 16 mhz com condensadores 22pf.
Título: Re: Sanguino
Enviado por: c3dr1c em 29 de Março de 2012, 01:21
Yap é lock

mas ups, deu um erro.
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fi42.tinypic.com%2F33c6k1v.png&hash=18a9f5f56d5a1e021d648d520dfc58cf62fcd133)
Título: Re: Sanguino
Enviado por: zedlav em 29 de Março de 2012, 01:26
Não é erro os 2 primeiros bits não existem por isso é que avrdude diz isso o meu usb_isp retorna esses dois bits como 1.
Desculpa erro meu.
Título: Re: Sanguino
Enviado por: c3dr1c em 29 de Março de 2012, 01:34
Bem mas o blink continua sem dar. Vou agora testar o arduino...
Título: Re: Sanguino
Enviado por: zedlav em 29 de Março de 2012, 01:52
Diz-me tens um condensadors de 100nf  na entrada dos vcc?

Começo a pensar que podes ter um chip com defeito, na verdade nunca apanhei nenhum.

O ultimo teste a fazer o gravar um blink led em assembly para gerar um pequeno hex para gravar e depois ler da flash, mas acho que o avrdude já faz isso quando gravar depois lê se não ler o que gravou dá erro.

 
Título: Re: Sanguino
Enviado por: c3dr1c em 29 de Março de 2012, 01:54
E com o arduino tambem continua a dar erro de sync  >:(   :P
Ta dificil loool

E pior, feito burro esquecime de apontar qual era o valor inicial do lockbit do 644p   ;D

Agora nao tenho usado os condensadores... Entre o vcc e o ground?
Título: Re: Sanguino
Enviado por: zedlav em 29 de Março de 2012, 01:56
Bem na verdade a ultima coisa que podes fazer é mandar para o senso, pode me estar a falhar qualquer coisa.
Título: Re: Sanguino
Enviado por: zedlav em 29 de Março de 2012, 01:56
Usa.
Título: Re: Sanguino
Enviado por: c3dr1c em 29 de Março de 2012, 01:57
muahahaha ;D senso vais ter que gramar comigo  :P

Título: Re: Sanguino
Enviado por: zedlav em 29 de Março de 2012, 01:59
Mete-lhe os condesadores.
Título: Re: Sanguino
Enviado por: c3dr1c em 29 de Março de 2012, 02:01
Ja ta. O arduino nao da. Sera que tenho de escrever de novo os fuse e lock bits e flashar o blink e o bootloader porque nao usei os condensadores?
Título: Re: Sanguino
Enviado por: zedlav em 29 de Março de 2012, 02:05
Não vale a pena. Podes mandar ao senso  ;D. Fizemos tudo ou quase tudo que se podia fazer.
Título: Re: Sanguino
Enviado por: zedlav em 29 de Março de 2012, 02:13
Começas com o post assim "O led piscam normalmente..." o led do atmega644p? Se assim for ele não está estragado. Se precisares de alguma coisa diz.
Fiquem Bem.
Título: Re: Sanguino
Enviado por: c3dr1c em 29 de Março de 2012, 02:15
Consegui meter o led a piscar... Ja me tinha esquecido da resistencia de pull up no reset do 644p. Vamos ver o arduino...

yupi  ;D :P
Título: Re: Sanguino
Enviado por: c3dr1c em 29 de Março de 2012, 02:16
Começas com o post assim "O led piscam normalmente..." o led do atmega644p? Se assim for ele não está estragado. Se precisares de alguma coisa diz.
Fiquem Bem.

yap era isso mesmo
Título: Re: Sanguino
Enviado por: zedlav em 29 de Março de 2012, 02:22
só por curiosidade o reset está ligado vcc através duma resistencia  quando tentas correr o blink ou está ligado ao ground??
Título: Re: Sanguino
Enviado por: c3dr1c em 29 de Março de 2012, 02:34
O arduino é que continua sem dar...

Mas ja sei gravar ficheiros por avrdude, por isso posso-me desenrascar. eheheh
Muito obrigado pela vossa ajuda.

Ainda bem que nao desisti. Acabei por aprender a mexer no avrdude, fiz o inicio do tutorial do senso, decorei os circuitos e pinos do 644p que me fartei de montar, percebi p que eram fuse e lock bits... mais ou menos :P

Abraços pessoal...
Título: Re: Sanguino
Enviado por: c3dr1c em 29 de Março de 2012, 02:42
ao vcc
Título: Re: Sanguino
Enviado por: senso em 29 de Março de 2012, 03:31
Os lock bits são para bloquear a flash para que não possas ler de volta o que lá está, por exemplo para protecção de um producto comercial, não lhe mexas.
Se for preciso alguma coisa, estou disponivel para te ajudar, e se bloqueares o chip manda-me que eu tenho um Dragon e ele faz programação com alta voltagem que permite meter tudo como vem de fábrica.
Título: Re: Sanguino
Enviado por: c3dr1c em 29 de Março de 2012, 11:28
Muito obrigado senso. Por enquanto acho que ta tudo bem, menos a parte do arduino.

Agora surgem-me é novos problemas, porque queria flashar a interface para o atmega se conectar ao labview, mas so tenho em ficheiros *.pde
Da para converter para *.hex?

Ainda por cima aquilo sao 3 ficheiros dentro de um, nao sei explicar...
Ta em anexo se alguem me poder ajudar.
Se coseguir la meter a interface ta resolvido o problema, que é so disso que preciso pa cnc.

O codigo ate nao é grande...

Nao sei se terei de fazer algumas alterações. Porque no 3º "ficheiro" diz la que sao funções para o arduino uno.
Título: Re: Sanguino
Enviado por: senso em 29 de Março de 2012, 13:08
Compilas no IDE do Arduino, mas quando carregas no botão de compilar carrega no shuft que ele mostra a pasta onde esta a guardar o .hex, vais lá e copias para outro sitio e depois e avrdude com ele.
Título: Re: Sanguino
Enviado por: c3dr1c em 29 de Março de 2012, 19:47
Fixe assim é muito mais facil de localizar o ficheiro. Alias ja ca os tenho. Vem é do tipo *.cpp.hex

Isso ha problema?
Título: Re: Sanguino
Enviado por: c3dr1c em 29 de Março de 2012, 20:15
Bem mas tenho problemas quando compilo para a board sanguino. Se for para Uno ou Mega 2560 funciona, como a NI diz...

Da estes erros:

Código: [Seleccione]
LVIFA_Base.cpp: In function 'void processCommand(unsigned char*)':
LabVIEWInterface:90: error: 'tone' was not declared in this scope
LabVIEWInterface:94: error: 'noTone' was not declared in this scope

Alguma ideia?
Título: Re: Sanguino
Enviado por: senso em 29 de Março de 2012, 22:27
Não estou a ver o que é que o NI tem a ver com o código que está no micro-controlador, explica-te melhor.
Título: Re: Sanguino
Enviado por: zedlav em 29 de Março de 2012, 23:10
Na pasta do sanguino que está no arduino ou seja (arduino-0023/hardware/Sanguino/cores/arduino/) está um ficheiro chamado pins_arduino.h troca por este.
Código: [Seleccione]
/*
  pins_arduino.h - Pin definition functions for Arduino
  Part of Arduino - http://www.arduino.cc/

  Copyright (c) 2007 David A. Mellis

  This library is free software; you can redistribute it and/or
  modify it under the terms of the GNU Lesser General Public
  License as published by the Free Software Foundation; either
  version 2.1 of the License, or (at your option) any later version.

  This library is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  Lesser General Public License for more details.

  You should have received a copy of the GNU Lesser General
  Public License along with this library; if not, write to the
  Free Software Foundation, Inc., 59 Temple Place, Suite 330,
  Boston, MA  02111-1307  USA

  $Id: wiring.h 249 2007-02-03 16:52:51Z mellis $
*/

#ifndef Pins_Arduino_h
#define Pins_Arduino_h

#include <avr/pgmspace.h>

#define NOT_A_PIN 0
#define NOT_A_PORT 0

#define NOT_ON_TIMER 0
#define TIMER0A 1
#define TIMER0B 2
#define TIMER1A 3
#define TIMER1B 4
#define TIMER2  5
#define TIMER2A 6
#define TIMER2B 7

extern const uint8_t PROGMEM port_to_mode_PGM[];
extern const uint8_t PROGMEM port_to_input_PGM[];
extern const uint8_t PROGMEM port_to_output_PGM[];

extern const uint8_t PROGMEM digital_pin_to_port_PGM[];
extern const uint8_t PROGMEM digital_pin_to_bit_PGM[];
extern const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[];

extern const uint8_t PROGMEM digital_pin_to_timer_PGM[];


const static uint8_t SS   = 4;
const static uint8_t MOSI = 5;
const static uint8_t MISO = 6;
const static uint8_t SCK  = 7;

// Get the bit location within the hardware port of the given virtual pin.
// This comes from the pins_*.c file for the active board configuration.
//
// These perform slightly better as macros compared to inline functions
//
#define digitalPinToPort(P) ( pgm_read_byte( digital_pin_to_port_PGM + (P) ) )
#define digitalPinToBitMask(P) ( pgm_read_byte( digital_pin_to_bit_mask_PGM + (P) ) )
#define digitalPinToTimer(P) ( pgm_read_byte( digital_pin_to_timer_PGM + (P) ) )
#define analogInPinToBit(P) (P)
#define portOutputRegister(P) ( (volatile uint8_t *)( pgm_read_byte( port_to_output_PGM + (P))) )
#define portInputRegister(P) ( (volatile uint8_t *)( pgm_read_byte( port_to_input_PGM + (P))) )
#define portModeRegister(P) ( (volatile uint8_t *)( pgm_read_byte( port_to_mode_PGM + (P))) )

#endif

e no sketch labVIEWInterface acrescenta

Código: [Seleccione]
void tone(uint8_t _pin, unsigned int frequency, unsigned long duration);
void noTone(uint8_t _pin);

Aqui deu.
Título: Re: Sanguino
Enviado por: c3dr1c em 29 de Março de 2012, 23:53
Eia muito obrigado, vou tentar...

Senso a NI é que programou esta interface. É para programar-mos no atmega, para podermos utilizar o labview com o arduino...
E eles dizem que a testaram no uno e no mega2560 e funcionou e sao as placas que recomendam.

Como gravo um ficheiro *.h ?

Título: Re: Sanguino
Enviado por: zedlav em 30 de Março de 2012, 00:05
Como gravo um ficheiro *.h ?
Windows ?  ;D
Boa pergunta.

Em linux basta criar um file com este nome nome_do_ficheiro.h
Título: Re: Sanguino
Enviado por: c3dr1c em 30 de Março de 2012, 00:07
Será que se copiar po bloco de notas e gravar com essa extensao ele aceita? :P

EDIT:
Pelos vistos sim :D
Título: Re: Sanguino
Enviado por: zedlav em 30 de Março de 2012, 00:15
  Não sei. Mas podes abrir com o notepad o ficheiro que vai ser mudado apagas tudo de lá e metes o que está em cima postado para lá.

Mas espera que alguem que use windows te diga ou então vai ao google.
Windows é um campo em que eu não posso dar o meu conhecimento porque não o tenho.
Título: Re: Sanguino
Enviado por: SJD22 em 30 de Março de 2012, 00:16
Claro que sim! Tens é de especificar a extensão .h quando o vais gravar.

Os ficheiros .H são ficheiros de texto (ascii) normais!
Título: Re: Sanguino
Enviado por: c3dr1c em 30 de Março de 2012, 00:19
Ya ya ja deu para compilar :D

E consegues gravar po atmega? Eu nao consigo.

Código: [Seleccione]
c:\grav>avrdude -c avrisp -p m644p -b 19200 -P COM3 -U flash:w:LVIFA_Base.hex:m

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.13s

avrdude: Device signature = 0x1e960a
avrdude: NOTE: FLASH memory has been specified, an erase cycle will be performed

         To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "LVIFA_Base.hex"
avrdude: invalid byte value (LVIFA_Base.hex) specified for immediate mode
avrdude: write to file 'LVIFA_Base.hex' failed

avrdude: safemode: Fuses OK

avrdude done.  Thank you.
Título: Re: Sanguino
Enviado por: zedlav em 30 de Março de 2012, 00:33
Sim aqui pelo arduino(ide) faz o upload.
quando ligas o atmega644p ao arduino(ide) qual é a interface serial que estás a usar?
Título: Re: Sanguino
Enviado por: c3dr1c em 30 de Março de 2012, 00:43
O que é a interface serial?
É uma porta usb com um serial virtual COM3.
O arduino é o 0022

Nao sei se sera isto :P

Com o arduino ide da erro de synk. So consigo flashar com o avrdude.
E com o avrdude da aquele erro.
Título: Re: Sanguino
Enviado por: zedlav em 30 de Março de 2012, 00:49
Modo fisico que ligas o pc ao atmega644p não sei se pode chamar interface desculpa my bad.
No meu caso eu ligo desta forma atmega644p->(modulo fdti)->pc
Título: Re: Sanguino
Enviado por: c3dr1c em 30 de Março de 2012, 00:54
sim deve ser. eu é que nao domino muito os termos tecnicos :P

atmega644p<->silicon lab cp210x usb to uart bridge<->pc (usb)
Título: Re: Sanguino
Enviado por: zedlav em 30 de Março de 2012, 01:21
Não estou a ver o que pode ser então.
Consegues gravar o blink e correr no atmega644p com o avrdude?

Título: Re: Sanguino
Enviado por: c3dr1c em 30 de Março de 2012, 01:26
Yap isso consigo...
Título: Re: Sanguino
Enviado por: zedlav em 30 de Março de 2012, 01:48
Pena não teres linux(dual boot ou vm) seria melhor para fazer testes.
Está a falhar qualquer coisa por aí e não é o atmega644p, talvez o arduino isp tenha algum bug.
Não te posso ajudar porque não tenho um arduino nem atmegas328  para reproduzir os teus passos.

Se eu descobrir algo já te digo, vou ver a source do avrdude.
Título: Re: Sanguino
Enviado por: zedlav em 30 de Março de 2012, 02:06
tenta assim
Código: [Seleccione]
avrdude -c avrisp -p m644p -b 19200 -P COM3 -U flash:w:LVIFA_Base.hex:i

troca apenas o m pelo i.
Título: Re: Sanguino
Enviado por: c3dr1c em 30 de Março de 2012, 02:07
Obrigado pelaq ajuda. Fui tentar o blink que tinha criado no avrstudio mas agora ja nao da. Da o mesmo erro. Ya ta aqui a falhar alguma coisa. Amanha faço uns testes. Thanks
Título: Re: Sanguino
Enviado por: c3dr1c em 01 de Abril de 2012, 19:09
Bem ta tudo a correr bem, excepto que quando corro o labview, ele da erro a tentar receber info do arduino. Se tentar acender um led, ele acende, mas passado 5 segundos da erro:

Citar
Send packet and wait for response.  If response does not arrive within
specified time limit flush buffers and send again.  Repeat until specified
number of timeouts has been reached.  If specified number of timeouts
is reached continue and throw error 5003