estou com problema com o ethernet shiel, estou recebendo dados de um leitor de código de barras e tentando enviar para um BD, mais notei que meu leitor só funciona nas portas SPI e hoje descobri que o Ethernet Shield usa essas portas também para se comunicar e não estou conseguindo ler os dados pois se eu deixa so o leitor ele funciona e o Ethernet não e se eu deixar o Ethernet o leitor não funciona.

estou usando 

Ethernet Shiel W5100

Arduino Mega 2560

O leitor fica conectado nas portas do Arduíno mega (50, 52);

alguém pode me dar uma luz rsrs 

Exibições: 714

Responder esta

Respostas a este tópico

Não sei se funciona, se ajuda, nunca passei por isso.

Mas uma opção seria fazer o SPI por software.

https://github.com/MajenkoLibraries/SoftSPI

boa noite Heleno.

       Para ver a possibilidade de ligar simultaneamente no seu "Mega", este seu leitor de código de barras  e o Ethernet Shield, é preciso que vc forneça mais detalhes deste seu leitor.

       Se além dos sinais "MISO" (pino 50 do Mega) e "SCK" (pino 52 do Mega), este seu leitor tiver também um sinal de "Chip Select" ("CS", às vezes chamado de "SS"), então você facilmente consegue usar seu leitor sem entrar em conflito com o Ethernet Shield.

       Veja o esquemático do Ethernet Shield (revisão 5), na figura a seguir (clique na figura para "zoom"):

        Observe os dois sinais que marquei, um de azul claro (o "SS"), e outro de verde claro (o "SD_CS"), que estão apontados por setas na cor rosa.

        O tal "SS" no esquema é o "Chip Select" do "W5100" (chip principal do Ethernet Shield), e o tal "SD_CS" é o "Chip Select" do SD Card (cartão eventualmente inserido no conector respectivo).

       Tanto o W5100 como o SD Card usam a mesma Inteface SPI. Porém cada um tem seu próprio sinal "Chip Select", permitindo que sejam selecionados individualmente de forma a não entrarem em conflito. No Arduino (Mega ou UNO) estes sinais são ligados aos pinos "10" (para o W5100) e "4" (para o SD Card).

       Portanto vc pode usar qualquer pino "sobrando" no Arduino (Mega ou UNO), para funcionar como "Chip Select" para outro dispositivo conectado ao SPI, sem entrar em conflito com outros dispositivos que também estejam usando este mesmo SPI. Melhor ainda: vc pode ligar diversos outros dispositivos ao SPI, desde que cada um tenha seu próprio sinal "Chip Select"). Estes sinais "Chip Select" foram previstos justamente para permitir essa flexibilidade.

      Mas como eu disse no início, isso depende de quem criou seu leitor de código de barras, ou seja, se o Fabricante foi "esperto" e deixou um sinal "Chip Select" para vc selecionar e controlar o leitor (normalmente os Fabricantes sempre provém o "Chip Select"). Do contrário, não terá como compartilhar a mesma SPI, e neste caso só lhe resta usar uma SPI "por software" como o Marcondes já sugeriu a vc. É quase certo que uma SPI "por software", funcionará bem neste caso, pois seu leitor provavelmente é um dispositivo "lento" e não haverá problemas de velocidade (que é a única limitação de uma SPI "por software").

     Ainda: a biblioteca específica que o seu leitor utiliza, é muito importante saber qual é, pois é ela quem normalmente deveria controlar o "Chip Select" do leitor de código de barras (claro se ele possuir este sinal, como já disse). Assim se possível, informe seu modelo de leitor (código e fotos), e post a biblioteca (o link para ela) que seu leitor utiliza pra funcionar. Nota importante: eventualmente seu leitor pode não possuir biblioteca específica, e utilizar a biblioteca padrão do Arduino, e neste caso o "Chip Select" deve ser controlado diretamente no seu Sketch (mas é algo bem simples de se fazer).

     Espero ter ajudado.

     Abrçs,

     Elcids

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço