Ainda estou no calabouço, mas agora vai sair alguma coisa interessante desse meu trabalho. Infelizmente não tem muito jeito. É um trabalho que não consigo dividir com outras pessoas e acho que ninguém acredita muito no ENC28J60, mas algo me dizia que era errado descartar essa opção...
Vi alguns comentários de pessoas dizendo que utilizam as bibliotecas atuais do ENC28J60 sem problemas. É verdade, a maioria delas funciona satisfatoriamente. Eu nem gosto de escrever essa palavra. Ninguém paga mais caro no W5100 porque ele é satisfatório! As pessoas preferem pagar mais caro pelo W5100 porque ele é completo e não requer esforços para instalação da biblioteca. Isso vale o preço. (vide primeiro post sobre o assunto)
Mas eu fui estudar um pouco as origens do ENC28J60 para entender seus conflitos e porque seus super poderes ainda não haviam aparecido, ou se existiam mesmo...
Descobri então que ele é a obra prima da Microchip. Isso não é exatamente um termo bom. Aqui no Brasil temos o termo "obra prima" como algo de superior qualidade, mas o termo realmente significa outra coisa: "Primeira Obra". Ou seja, o primeiro trabalho como profissional do artista ou da empresa. Profissional no sentido que o artista ou criador já passou do nível amador; estudou o suficiente sobre o assunto e aprimorou suas técnicas para o nível profissional.
No sentido real, obra prima significa o primeiro trabalho de uma empresa sobre determinado assunto, lançado comercialmente no mercado. Por esse motivo o ENC28J60 é cheio de BUGs e tem vários documentos de ERRATA.
Não muito tempo depois a Microchip amadureceu seu produto e lançou outros módulos Ethernet bem superiores, são eles o ENC424J600 e o ENC624J600.
Mas o ENC28J60, apesar de seus BUGs, de suas limitações, da falta de bibliotecas por parte da comunidade (nota: não existe biblioteca UDP para ele no ambiente do Arduino); ele ainda sim tem super poderes! Vamos ver alguns:
- Preço baixo
- Necessita poucos componentes externos
- Encapsulamento DIP
- Checksum auxiliado por hardware (ainda não consegui usar esse, por conflito)
- Cópia de dados DMA entre endereços do buffer (super poder!)
- Buffer FIFO cíclico de 8K bytes
- Liberdade total para programação da camada de aplicação!
Comentando os itens acima, sobre o preço nem precisa falar nada, né? Existem módulos prontos a preços bem acessíveis.
Inclusive esses módulos Ethernet com o ENC28J60 estão ficando cada vez menores! Isso sem falar que existe o encapsulamento DIP, que facilita na hora de projetar com ele. É possível comprar um ENC28J60 que pode ser "espetado" na protoboard. Isso facilita muito o projetista que deseja embarcar essa tecnologia em sua placa.
Sobre as outras características, as principais que descobri são sobre o Buffer de 8K que estava lá sem fazer nada e sobre a cópia DMA que nos permite copiar partes da memória do ENC28J60, oferecendo uma solução de memória adicional ao Arduino.
Ou seja, não preciso utilizar a memória do Arduino para acumular os pacotes TCP a serem enviados. Eu posso simplesmente copiar os bytes para uma área da memória do ENC28J60 e depois fazer um DMACopy para copiar aquele pacote para a área de transmissão, e então transmitir o pacote.
É um caminho mais árduo, mas elimina o limite da memória do Arduino que é de apenas 2K bytes na versão UNO e 4K bytes no MEGA.
O ENC28J60 tem 8K bytes!!! Ele tem o mesmo de memória que dois Arduinos MEGA juntos! É um absurdo de memória que até agora não havia sido utilizada! Consegui resolver isso também!
Ufa! É isso, é pau, é pedra, é o fim do caminho.
Meu objetivo com esse trabalho é que os criadores do Arduino reconheçam essa biblioteca como digna de fazer parte da IDE do Arduino (leia-se: do pacote de instalação original do Arduino). Assim a biblioteca seria distribuída de forma integrada com o Arduino e não mais seria uma ovelha negra perante a comunidade e principalmente, os iniciantes.
Abraços,
Renato
Obrigado Renato pelo seu esforço de tornar o conhecimento cada vez mais acessivel e desvendar os mistérios dessas "caixas pretas".
ResponderExcluirRenato Parabéns pelo seu trabalho, Que DEUS te abençoe e te ajude em cada um dos teus desafios...
ResponderExcluirParabéns, cara! Que trabalho lindo e árduo que você tem feito!
ResponderExcluir