Problema com conexão SPI

Boa noite,

Estou construindo uma aplicação utilizando o ATmega328 e um chip medidor de potência o CS5463: https://www.cirrus.com/en/pubs/proDatasheet/CS5463_F3.pdf Este CI utiliza comunicação SPI, também estou utilizando um display I2C para exibir as leituras e um módulo micro SD para gravar um log .txt, o módulo é o mesmo do link abaixo: http://br-arduino.org/2015/01/arduino-e-cartoes-sd-microsd-e-sdhc.html

Está funcionando normalmente exibindo as leituras no display sem problemas, porém ao conectar o módulo SD as leituras ficam zeradas, o arquivo .txt chega a ser criado no SD porém com todos os valores zerados, se desconecto o módulo SD as leituras voltam a ser exibidas normalmente no display. Percebi também que o botão de reset não funciona quando o módulo SD está conectado, já conferi todas as ligações varias vezes e não achei erro, está como no desenho abaixo.

http://i1106.photobucket.com/albums/h369/alan_lima/esquema%20SPI_zpssjbo7mgw.jpg

Apesar de não ter no esquema coloquei resistores de pull-up nos dois pinos CS.

Se alguém tiver uma ideia e puder ajudar agradeço desde já.

Para usares vários dispositivos no barramento SPI tens de manipular o pino de Chip Select de cada dispositivo no momento de falares com ele no barramento.O outro tem de ficar ocioso.Tens de garantir isso. Mostra o código

Então HugoPT não acredito que seja o código, não dá pra eu postar aqui porque não estou com ele agora e além disso o código também está muuuuuito grande. Mas veja eu fiz uma leitura com o scope nos pinos CS do CS5463 (amarelo) e do SD (verde), os pinos estão sendo acionados corretamente.

Opa! Tudo certo alan_lima? Desculpe não contribuir com o seu problema, mas eu estou tendo problemas para ligar o SD card junto com o módulo nRF24l01 nas portas SPI em paralelo.

Você poderia disponibilizar o seu código? Ou pelo menos parte dele para que eu entenda?

Grato.

Ola,

pessoal, deem uma pesquisada pq a um tempo atras haviam algums topios comentando sobre conflito SPI utilizando modules SD, parece q alguns nao respeitam o CS e acham q sao os unicos presents no bus. @alan_lima, se voce tiver 4 canais, monitore CS e MISO dos dois chips, se tiver apenas 2 canais monitore o MISO e o CS do SD para ver se o SD nao esta transmitindo enquanto o CS esta "HIGH".

Agora fora isso ser um problema de hardware, lembrem sempre se utilizar transacoes "atomicas" quando comunicando com SPI.

Muitas libraries/drivers nao utilizam esse metodo, onde basicamente voce desabilita as interrupts antes de conversar com SPI e re-ativa depois. SPI.beginTransaction(mySettings) e SPI.endTransaction() podem ser utilizados tb com o mesmo objetivo.

Valeu!

Alan, estou estudando o data sheet deste ci, estou muito confuso com essa configuracao do spi, gostaria de trocar informacoe contigo, visualizar teu codigo, se possivel. Seria possivel compartilhar?