Página 1 de 1

Problema com Ether_28J60 e Serial.print [Solucionado]

MensagemEnviado: 25 Jun 2014 13:02
por edsont
Estou com um Arduino nano e um módulo ENC28J60 usando a library ETHER_28J60.

O módulo funciona normalmente, exceto quando eu incluo Serial.begin(9600). Então trava, não responde nem mesmo ao primeiro Serial.print após o begin(). No sketch de exemplo WebRemote, também trava, mas colocando delay(10) após o begin funciona. No meu programa continua travado. Alguém já passou por isso?

O serial usa apenas TX e RX. O ENC28J60 usa D02, D10, D11, D12 e D13. Não deveria interferir.

Re: Problema com Ether_28J60 e Serial.print

MensagemEnviado: 25 Jun 2014 13:18
por andre_luis
edsont escreveu:O módulo funciona normalmente, exceto quando eu incluo Serial.begin(9600). Então trava, não responde nem mesmo ao primeiro Serial.print após o begin()


Aparentemente você não é o único passando por isso: Arduino Mega appears to lock up when using Serial.






+++

Re: Problema com Ether_28J60 e Serial.print

MensagemEnviado: 25 Jun 2014 18:59
por edsont
Descobri a causa do problema.
Estava ocorrendo estouro de pilha.
O Arduino copia todos as constantes String para a RAM na inicialização. Estava ficando sem RAM.
Para evitar esta cópia para a RAM tive que declarar os strings (textos da página WEB) como const PROGMEM e criar uma função que lê a memória de programa e passa caracter por caracter para a função ETHER_28J60:print.

A solução foi baseado no site:
http://scott.dd.com.au/wiki/Arduino_Static_Strings

Fiz uma gambiarra para funcionar com a biblioteca ETHER_28J60 que só aceita string ou int. A solução usa char.