Arduino resetando sozinho no final de função.

140 views
Skip to first unread message

Alejandro Mesias

unread,
Jul 17, 2014, 3:35:37 PM7/17/14
to Garoa HC
Caros, estou em uma encruzinhada. Montei um código no Arduino IDE usando MicroSD e comunicação via serial com um ST10, Arduino MEGA 2560. Tava tudo funcionando maravilhoso, eu pego uns dados binários no MicroSD, transmito para o ST10, ele me responde, mando outros, ele faz algumas operações, balinha. Ainda sobrando uns 4k de memória.

Fui colocar na aplicação do meu projeto, que está rodando no Atmel Studio, que tem umas paradas de menu, lcd, várias bibliotecas. Coloquei meu código, fiz todas as mudanças necessárias, criei headers, etc. Rodou.

Problema que, tem uma função que, mesmo tendo uns 3.5k de memória sobrando, mesmo tendo colocado "F()" e "PROGMEM" em vários lugares, ele arria sozinho. Tentei debugar (via Atmel Avr Dragon), mas do nada ele vai pro lugar errado, não dou certeza se as outras memórias ficam cheias.

Alguma sugestão ? o programa compilado para tamanho tá em 60k, prá performance 90k sem otimização 100k e pouco.

--
======================================
Alejandro Mesias André Nebra Perez
Java/Python/Js/Something else Developer
Twitter: @meszias
Linux User #442506
Campinas - SP - Brasil - South America
======================================

Alejandro Mesias

unread,
Jul 17, 2014, 6:08:16 PM7/17/14
to Garoa HC

Estou com uma teoria maluca que o PC não pode fazer pulos muito grandes.
Vou fazer uma função intermediaria

Respondido via Android

Marcelo Campos

unread,
Jul 17, 2014, 8:41:23 PM7/17/14
to hacker...@googlegroups.com
eu também já tive um problemas destes, por coincidência também usava cartão SD e sobrava cerca de1K de mem. ao compilador, só que era com Arduino Uno.
Desconfiei que era problema de espaço e migrei pro Mega2560 aí rodou 100%

Como você já está no perto limite do 2560 a escolha óbvia seria um Due pra testar, se possível claro.

Alejandro Mesias

unread,
Jul 18, 2014, 8:47:08 AM7/18/14
to Garoa HC
Ainda vou tentar alternativas. Limei o código cheguei a 5k sram livre e 34k de binário compilado.


--
.--. .- .-. .- .--. --- ... - .- .-. . ... -.-. .-. . ...- .- .--. .- .-. .- .... .- -.-. -.- . .-. ... .--. .- -.-. . ... .--. .- - --. --- --- --. .-.. . --. .-. --- ..- .--. ... -.. --- - -.-. --- --
Regras da Lista: http://garoa.net.br/wiki/Lista:LeiaAntesDeClicarNoSend
Para mais informações sobre o Garoa Hacker Clube acesse http://garoa.net.br
Maiores opções sobre o Google Groups, visite: http://groups.google.com/group/hackerspacesp
.--. .- .-. .- -- .- .. ... .. -. ..-. --- .-. -- .- . ... .- -.-. . ... ... . --- .-- .. -.- ..
Epoch 0 <=> Fundação: 1298244863 s ~ 2.408064*10^52 tP (tempos de Planck)

Marcelo Campos

unread,
Jul 18, 2014, 8:50:43 AM7/18/14
to hacker...@googlegroups.com
muito bom, o meu também tirando alguns recursos de funções ou mesmo funções inteiras parava de resetar,

Alejandro Mesias

unread,
Jul 18, 2014, 8:54:09 AM7/18/14
to Garoa HC
O menu não parou de resetar mesmo tirando funções, variáveis e vetores. E mesmo que eu coloque um monte de chamadas seriais e flush's na função que está resetando, não melhora. Tá osso MESMO.

Afonso Coutinho

unread,
Jul 18, 2014, 11:24:13 AM7/18/14
to hacker...@googlegroups.com
Já tentou usar outro arduino?

Alejandro Mesias

unread,
Jul 18, 2014, 11:26:31 AM7/18/14
to Garoa HC
To achando que é uma burrada minha de usar o File do <SD.h> em contexto global. Provavelmente acho ele tenta passar algum destrutor vai pro saco, porque já uso a variável uma vez, na segunda dá pau na hora de sair do método que usou a variável.


On Fri, Jul 18, 2014 at 12:23 PM, Afonso Coutinho <afo...@yack.com.br> wrote:
Já tentou usar outro arduino?

--
.--. .- .-. .- .--. --- ... - .- .-. . ... -.-. .-. . ...- .- .--. .- .-. .- .... .- -.-. -.- . .-. ... .--. .- -.-. . ... .--. .- - --. --- --- --. .-.. . --. .-. --- ..- .--. ... -.. --- - -.-. --- --
Regras da Lista: http://garoa.net.br/wiki/Lista:LeiaAntesDeClicarNoSend
Para mais informações sobre o Garoa Hacker Clube acesse http://garoa.net.br
Maiores opções sobre o Google Groups, visite: http://groups.google.com/group/hackerspacesp
.--. .- .-. .- -- .- .. ... .. -. ..-. --- .-. -- .- . ... .- -.-. . ... ... . --- .-- .. -.- ..
Epoch 0 <=> Fundação: 1298244863 s ~ 2.408064*10^52 tP (tempos de Planck)

Afonso Coutinho

unread,
Jul 18, 2014, 11:33:43 AM7/18/14
to hacker...@googlegroups.com
Tenta usar outra lib, talvez seja problema com buffers mesmo, já viu essa? https://code.google.com/p/sdfatlib/
Não que essa lib não funcione, mas talvez pro teu código, mudar de lib possa resolver. Talvez.

Alejandro Mesias

unread,
Jul 18, 2014, 1:36:14 PM7/18/14
to Garoa HC
Afonso, essa lib é  BEM diferente da SD que vem padrão no Arduino. Cheio de "detalhesinhos"

Rodrigo Delduca

unread,
Jul 18, 2014, 1:45:35 PM7/18/14
to hacker...@googlegroups.com
Pode postar o código? Isso está cheirado a vazamento de memoria ou
algo do tipo...


--
http://www.nullonerror.org/
-- flipping bits whilst updating pixels

"The world is full of fascinating problems waiting to be solved" --
Eric S.Raymond
-... .-.. --- --- -.. --- ..-. .-.. .. --- -. ... .-. ..- ... .... ..
-. --. - .... .-. ..- -- -.-- ...- . .. -. ...
"Scientists study the world as it is; engineers create the world that
has never been" -- Theodore von Kármán
.--. ..- -- .--. .. -. --. - .... . -.-. --- .-.. -.. -. . ... ... ---
..-. -- -.-- .... . .- .-. -
"Security is an illusion. Paranoia is our profession" -- Strategic Air command
.... . .-. . .. -.-. --- -- . .- - - .... . ... .--. . . -.. --- .- --
..- .-. -.. . .-. . .-. ... --- ..- -. -..
"They say hackers die twice, once when they pass, and then again when
the last of their code is rewritten by some asshole using JavaScript"
-- Anonymous
-... .-.. --- --- -.. --- ..-. .-.. .. --- -. ... .-. ..- ... .... ..
-. --. - .... .-. ..- -- -.-- ...- . .. -. ...
"He who hasn't hacked assembly language as a youth has no heart. He
who does as an adult has no brain" -- John Moore

Alejandro Mesias

unread,
Jul 18, 2014, 1:49:35 PM7/18/14
to Garoa HC
posso mandar uns trechos, mas não tem como executa-lo, que usa display, microsd, etc.

Rodrigo Delduca

unread,
Jul 18, 2014, 1:52:23 PM7/18/14
to hacker...@googlegroups.com
Tudo bem, mesmo porque estou sem nenhum dispositivo aqui, mas quem
sabe só de olhar talvez eu consiga descobrir o que é.


--
http://www.nullonerror.org/
-- flipping bits whilst updating pixels

"The world is full of fascinating problems waiting to be solved" --
Eric S.Raymond
-... .-.. --- --- -.. --- ..-. .-.. .. --- -. ... .-. ..- ... .... ..
-. --. - .... .-. ..- -- -.-- ...- . .. -. ...
"Scientists study the world as it is; engineers create the world that
has never been" -- Theodore von Kármán
.--. ..- -- .--. .. -. --. - .... . -.-. --- .-.. -.. -. . ... ... ---
..-. -- -.-- .... . .- .-. -
"Security is an illusion. Paranoia is our profession" -- Strategic Air command
.... . .-. . .. -.-. --- -- . .- - - .... . ... .--. . . -.. --- .- --
..- .-. -.. . .-. . .-. ... --- ..- -. -..
"They say hackers die twice, once when they pass, and then again when
the last of their code is rewritten by some asshole using JavaScript"
-- Anonymous
-... .-.. --- --- -.. --- ..-. .-.. .. --- -. ... .-. ..- ... .... ..
-. --. - .... .-. ..- -- -.-- ...- . .. -. ...
"He who hasn't hacked assembly language as a youth has no heart. He
who does as an adult has no brain" -- John Moore



Alejandro Mesias

unread,
Jul 18, 2014, 2:37:22 PM7/18/14
to Garoa HC
Não sei como é a politia da lista do garoa mas, digamos que errar pela primeira vez é minimamente aceito.

Porr# de compilador filho da put# desgr#, corn#, put#, viadinh#.

Faltou importar a lib "#include <stdio.h>" para poder usar um sprintf onde eu montava o nome do arquivo que era carregado pela lib do SD. Depois que coloquei isso explicitamente funcionou tudo.

Agora alguém pode me explicar porque ele não sentiu falta do stdio.h da primeira vez ? porque ele conseguia montar o nome.

Afonso Coutinho

unread,
Jul 18, 2014, 3:37:04 PM7/18/14
to hacker...@googlegroups.com
​LOL, ninguém esperaria compilar usando um função que não tá definida auehauheauehaueh​

<troll>
Expulsem ele da lista.

Alejandro Mesias

unread,
Jul 18, 2014, 3:43:20 PM7/18/14
to Garoa HC
Ah véi, mas compila, carrega e faz o que tem que fazer. Como eu ia adivinhar que ao sair da função que usa o que "não está definido" ia travar ? e eu preocupado com memória, pilha, ProgramCounter.

Rodrigo Delduca

unread,
Jul 18, 2014, 3:45:52 PM7/18/14
to hacker...@googlegroups.com
Por essa e outras eu não confio na IDE do arduino, prefiro usar C/C++
puro e algumas libs dele


--
http://www.nullonerror.org/
-- flipping bits whilst updating pixels

"The world is full of fascinating problems waiting to be solved" --
Eric S.Raymond
-... .-.. --- --- -.. --- ..-. .-.. .. --- -. ... .-. ..- ... .... ..
-. --. - .... .-. ..- -- -.-- ...- . .. -. ...
"Scientists study the world as it is; engineers create the world that
has never been" -- Theodore von Kármán
.--. ..- -- .--. .. -. --. - .... . -.-. --- .-.. -.. -. . ... ... ---
..-. -- -.-- .... . .- .-. -
"Security is an illusion. Paranoia is our profession" -- Strategic Air command
.... . .-. . .. -.-. --- -- . .- - - .... . ... .--. . . -.. --- .- --
..- .-. -.. . .-. . .-. ... --- ..- -. -..
"They say hackers die twice, once when they pass, and then again when
the last of their code is rewritten by some asshole using JavaScript"
-- Anonymous
-... .-.. --- --- -.. --- ..-. .-.. .. --- -. ... .-. ..- ... .... ..
-. --. - .... .-. ..- -- -.-- ...- . .. -. ...
"He who hasn't hacked assembly language as a youth has no heart. He
who does as an adult has no brain" -- John Moore



Leandro A. F. Pereira

unread,
Jul 18, 2014, 3:47:30 PM7/18/14
to hacker...@googlegroups.com
2014-07-18 16:36 GMT-03:00 Afonso Coutinho <afo...@yack.com.br>:
> LOL, ninguém esperaria compilar usando um função que não tá definida
> auehauheauehaueh

Isso é aceito em C. O que acontece é que se a função não está
definida, o compilador presume que ela existe e que os parâmetros tem
o tipo "int". Pode ser que o código funcione, mas só se o sizeof de
cada argumento for igual ao sizeof(int)... mesmo assim, se não me
engano, isso é comportamento desconhecido.

No caso do Arduino, sizeof(char*) == sizeof(int), então há chances de
um sprintf() funcionar se só tiver códigos que puxam inteiros e
strings da pilha quando estiver iterando nos varargs.

O linker, entretanto, vai reclamar se o símbolo não for definido em algum lugar.

Enfim -- Arduino resetar pode ser várias coisas. Se o watchdog estiver
ligado, por exemplo, e cair num loop apertado sem resetar o contador.
Se corromper a pilha (usar recursão pode te ferrar aqui). Qualquer
outro comportamento indefinido que está abusando, etc.

--
Leandro

Alejandro Mesias

unread,
Jul 18, 2014, 4:02:46 PM7/18/14
to Garoa HC
Ah, detalhe, não estou usando Arduino IDE. Estou usando Atmel Studo 6 e no Windows (podem me chamar de herege).

Mas isso que o Leandro falou pode fazer sentido, aqui eu importo os headers do Arduino. Os cpp e afins vem da lib padrão que vem junto com o Atmel Studio.


--
.--. .- .-. .- .--. --- ... - .- .-. . ... -.-. .-. . ...- .- .--. .- .-. .- .... .- -.-. -.- . .-. ... .--. .- -.-. . ... .--. .- - --. --- --- --. .-.. . --. .-. --- ..- .--. ... -.. --- - -.-. --- --
Regras da Lista: http://garoa.net.br/wiki/Lista:LeiaAntesDeClicarNoSend
Para mais informações sobre o Garoa Hacker Clube acesse  http://garoa.net.br
Maiores opções sobre o Google Groups, visite: http://groups.google.com/group/hackerspacesp
.--. .- .-. .- -- .- .. ... .. -. ..-. --- .-. -- .- . ... .- -.-. . ... ... . --- .-- .. -.- ..
Epoch 0 <=> Fundação: 1298244863 s ~ 2.408064*10^52 tP  (tempos de Planck)

André Oliveira

unread,
Jul 18, 2014, 5:53:44 PM7/18/14
to hacker...@googlegroups.com
Na próxima vez use ArnoldC que isso não acontece!

[]s,

        André M de Oliveira

.oO ineptire est juris gentium Oo.
   http://int2float.blogspot.com
Reply all
Reply to author
Forward
0 new messages