Página 1 de 1

I2C

MensagemEnviado: 17 Out 2011 02:13
por rcakto
pessoal, seguinte...

tenho um LPC2478 e nele estarei controlando varios dispositivos
cada dispositivos possue um atuador para fechar um circuito e um sinal proveniente de um quadro com os botoes (no caso somente ON/OFF de cada circuito)

estava pensando em colocar um PIC em cada dispositivo e usar o I2C para comunicar entre o PIC e o LPC.
A ideia de usar um "I/O Extender" vai deixar muito caro o projeto, pois esta na base de uns 200 circuitos ou mais e pontos de controle deve ser quase o triplo pois alguns circuitos existem 2 ou mais botoes em locais diversos... e a distancia maxima entre o PIC e o LPC deve ser de uns 30 a 50 metros de cabo...

tendo o LPC como master ja usei muito para comunicar com ICs, o problema e que quando um botao for precionado, o PIC deve enviar para o LPC que o estado atual foi mudado pois o display mostra quais circuitos estao ligados e desligados e pode controlar tudo pelo LPC tambem ....

em resumo, a comunicacao entre 2 uC eu nunca fiz... faco nem ideia de onde comecar.... alguem teria algum codigo em C para ajudar??? serve entre 2 PICs mesmo... o que eu preciso e analisar e implementar no meu projeto.

.

MensagemEnviado: 17 Out 2011 07:11
por tcpipchip

MensagemEnviado: 17 Out 2011 12:13
por rcakto
vlw tcp, vo da uma geral, pelomenos agora eu tenho uma base por onde comecar...

MensagemEnviado: 18 Out 2011 07:09
por MarcusPonce
O sistema vai ficar grande. Veja que se você já especificou que

"(...) e a distancia maxima entre o PIC e o LPC deve ser de uns 30 a 50 metros de cabo... "

então será necessário usar RS485, ou CAN, ou outra rede que funcione nesta distância.

MensagemEnviado: 18 Out 2011 11:44
por rcakto
opa... blz entao... vlw pela dica... vou dar uma olhada no rs485...

MensagemEnviado: 18 Out 2011 12:58
por fabim
rcakto escreveu:opa... blz entao... vlw pela dica... vou dar uma olhada no rs485...


Brímã.
O RS485 é apenas um padrão eletrico, de twisted pair.
Ele é bidirecional, ou seja.
Em uma ligação RS232->Sobre uma padrão RS485, você ou transmite ou recebe o dado.
No seu caso, é muito simples o uso.
O ARM esta sempre em Stand_by, e todos os pics também.

Quando um pic for precionado, através de uma USART , você observa se tem algum outro pic conversando. Ou seja, se dentro do tempo X não houver dados chegando no pino de recepção, ai tu pode enviar o dado para o ARM.

faça assim.
Olha a formatação que simples

0x80-0x55-(endereço que foi precionado)-( status )-0x55-(cheksun de tudo em 16 bits).

o cheksun é muito facil de ser calculado, não vou entrar no merito.

Se o cheksun dos 5 bytes que chegaram bater com o cheksun que o pic mandou, ta tudo ok com a comunicação e os dados são validos.