Problema com SPI entre dois 18F452s PIC

U

UroBoros

Guest
Eu estou fazendo um código para a comunicação entre dois 18F452s um mestre e um escravo. pacote é de 25 byte comprimento. É baseado interromper. para troca de dados única coisa que precisa fazer é carregar o primeiro byte do meu array de byte 25. o resto será feito automaticamente em interrompe SPI. 25 bytes são landiing com segurança ao lado do mestre de escravos. Mas o mestre está recebendo apenas um eco do que é enviar. quando o byte recebido está sendo recuperado na interrupção no escravo, eu estou carregando o byte a ser enviar SSBUF. Mas parece que não está sendo aceito o envio. Eu acho que eu estou perdendo algum aspecto da SPI. Obrigado
 
Você está recebendo problema ao ler o escravo? Acho que sem entender o protocolo não posso responder, então por favor elaborado. Cheers, Akhil Kumar
 
Não está claro o que você está tentando fazer, ou o que você está esperando. Você diz que os dados estão chegando ao escravo, o que implica que: 1) O anfitrião é o envio de dados corretamente, e 2) O escravo está recebendo dados corretamente. Qual é o seu problema? O que você quer dizer com "o mestre está recebendo apenas um eco". É o escravo transmitir seus dados recebidos de volta para o anfitrião? É isso que você quer que o escravo que fazer?
 
Ok. Vou detalhar. O mestre está enviando 25 bytes corretamente e escravo é recebê-los corretamente. Essa parte está ok. Mas eu estou voltando a mesma quantidade de dados, que é de 25 bytes do escravo para o mestre no mesmo link. (Simultânea como o envio de mestre). ou seja, a interrupção de escravos, depois de receber um byte de mestre, eu estou carregando SSPBUF com um byte para o master.It deve chegar a mestre como mestre enviando próximo byte. (Qualquer coisa de errado com a minha suposição?). Essa carga de retorno não está sendo recebido no mestre. Esse é o meu problema. Obrigado pelo seu tempo
 
1) Você está usando uma interrupção no mestre para indicar quando recebe dados? É que a interrupção habilitado? 2) Você está recebendo nenhum dado ou dados corrompidos para o mestre? 3) Você já olhou para seus sinais com um osciloscópio para verificar o escravo está realmente enviando dados? 4) Você precisa ter certeza de que você tem seus dados alinhados corretamente e você tem a sua configuração registra configurado corretamente. Eu não sou muito claro sobre como este chip manipula-lo, mas parece que ele usa SSPBUF para ambos os dados transmitidos e recebidos, por isso você precisa de alguma forma de garantir que você não está escrevendo dados para SSPBUF, ao mesmo tempo que a recebeu os dados são transferidos para ele.
 
1. Sim. sobre esta interrupção de uma conclusão byte, eu estou carregando o próximo byte até que tudo se foi 25! 2.I estou recebendo dados na ordem correta. Sem bagunça, mas em vez de dados carregados de salvar, o que é recebido são os mesmos dados enviar para o escravo. Ou seja, embora SSPBF é carregado no escravo, isto não é aceitável. assim parece. 3.Not tentou em um escopo ainda. 4.Data está alinhada corretamente. SSPBUF é buffer duplo. Eu estou tomando de dados em escravo (que é esperado) e imediatamente carregar SSPBUF como a carga para a transferência próxima de escravo. Mas isso não é 'aceito', ou assim parece. O que quer que já está lá, está voltando. Obrigado
 
Eu soldada resistores pullup a dados e linhas de clock. É Ok agora. Mas ainda um problema. se eu começar a ambos (MCUs) juntos. Tudo ok. Se eu reiniciar o mestre, então, dados de escravos não vai chegar a mestre. Então eu preciso redefinir escravo também. Então, novamente tudo ok. Escravo redefinir nenhum problema, mas se eu reiniciar mestre, então escravo também deve ser redefinido. Vai olhar para isso. Mas até agora está ok para o efeito. Obrigado
 

Welcome to EDABoard.com

Sponsor

Back
Top