SPI e I2C juntas

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

SPI e I2C juntas

Mensagempor cristian » 20 Fev 2010 17:27

galera o SPI e I2c compartilham o mesmo terminal e nao funcionam juntas nao ???

tenho um cartao SD na saida SPI e tentei colocar um ds1307 o cartao parou de funcionar . estou usando pic 18f252 , mikroc , 25mhz

isso é inacreditavel o q a microxip faz nao adianta ter os 2 se nao funcionam ao memso tempo
cristian
Word
 
Mensagens: 570
Registrado em: 03 Nov 2006 08:15
Localização: serrinha-ba

Mensagempor Francesco » 20 Fev 2010 17:33

Fizeram isso porque internamente o circuito é compartilhado, o mesmo dispositivo controla ou o SPI ou o I2C.

Para o seu caso, uma saída é desligar eletricamente os I/Os usando o 74HC244 por exemplo.

Francesco
Avatar do usuário
Francesco
Word
 
Mensagens: 699
Registrado em: 04 Mar 2008 00:22
Localização: São Paulo - SP

Mensagempor Sergio38br » 20 Fev 2010 17:47

em todo caso mesmo separando vc tem de reconfigurar os perifericos a cada vez que usar< Ex. usa o I2C depois reconfigura para SPI, retornar para configurar o I2C.. assim vai

[ ]`s
Sergio
Avatar do usuário
Sergio38br
Word
 
Mensagens: 759
Registrado em: 22 Nov 2007 13:39
Localização: São Paulo - SP

Mensagempor Francesco » 20 Fev 2010 18:24

É verdade. Por que não usa um RTC SPI? Acho que o DS1302 ou algo assim?

Ou porque não faz o SPI ou I2C controlando I/Os? É simples.
Avatar do usuário
Francesco
Word
 
Mensagens: 699
Registrado em: 04 Mar 2008 00:22
Localização: São Paulo - SP

Mensagempor v.vicente » 20 Fev 2010 21:07

Uma alternativa é implementar o I2C ou SPI por Software dai você pode utilizar pinos diferentes dos utilizados por Hardware. No caso do MikroC você já têm bibliotecas prontas pra isso.

Software I2C Library
Software SPI Library

Tipo: Soft_I2C_Config(&PORTB, 1, 2)

Dá uma olha no help ... tem exemplos lá ...

Abç
v.vicente
 
Mensagens: 4
Registrado em: 05 Fev 2009 18:54

Mensagempor cristian » 21 Fev 2010 09:46

ok vou testar para ver se dar certo por software

e fernando eu tinha o ds1302 e 1305 optei pelo 1307 por ecomia de pinos e ta mais facil encontrar ele no merdado do q os outros
cristian
Word
 
Mensagens: 570
Registrado em: 03 Nov 2006 08:15
Localização: serrinha-ba

Mensagempor fabim » 21 Fev 2010 14:14

Bom, por este e outros motivos que estou 95% mechendo só com ARM:

MAIS BARATO QUE PIC
UM ARMIZINHO DE 3U$$ TEM 2spi 2i2c 2 SERIAIS, E USB, E ISSO E AQUILO. e INTERESSANTE... Todos os perifericos de comunicação, são mutiplexados com pinos, que não tenham outros modulos de comunicação como esses!!! hehehe
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor vtrx » 21 Fev 2010 15:49

Bom, por este e outros motivos que estou 95% mechendo só com ARM:

Quando é que voce vai parar e 'mecher' e vai trabalhar de verdade?..rsrsr...brincadeirinha :wink:
Para o seu caso, uma saída é desligar eletricamente os I/Os usando o 74HC244 por exemplo

É uma boa alternativa pois se não estou enganado,nenhum código de programa consegue ler dois protocolos ao mesmo tempo (real time),pois os códigos são 'seriais',ou estou enganado?
Avatar do usuário
vtrx
Dword
 
Mensagens: 2239
Registrado em: 20 Abr 2008 21:01

Mensagempor RobL » 21 Fev 2010 18:17

Se for considerar que todo programa executa instrução após instrução nada é feito, no core, ao mesmo tempo.
Mas se considerarmos que i2c e spi são dois periféricos distintos, portanto externo ao core, uma vez com os dados neles, eles transmitem / recebem ao mesmo tempo, independente do que o core está executando. Portanto, dois protocolos distintos ao mesmo tempo. Nos PICs não sei, mas em qualquer AVR ou outros micros, vide fabim, SPI e I2C são periféricos independentes e podem trabalhar juntos.
RobL
Dword
 
Mensagens: 1546
Registrado em: 20 Fev 2007 17:56

Mensagempor msamsoniuk » 21 Fev 2010 19:03

pq vc nao emula uma delas por software ? tem dois pontos de vista q vc pode considerar:

a) os dispositivos i2c sao infinitamente mais lentos que os dispositivos spi, portanto seria melhor aproveitamento deixar o hardware para a spi e fazer a i2c por software, afinal jah eh lento mesmo e nao vai fazer muita diferenca.

b) o protocolo i2c eh infinitamente mais complexo que o spi, portanto seria mais facil deixar o hardware para a i2c e fazer a spi por software, que vai ser eficiente pq spi eh completamente sincrono em relacao ao master.

tem um terceiro ponto de vista q eh o meu: i2c nao vale a pena! acho que reflete o fato de i2c ser um barramento proprietario da nxp e spi ser um barramento aberto. daria para fazer algo tao simples assim com i2c?

http://www.mikrocontroller.net/attachme ... 4HC595.pdf
Avatar do usuário
msamsoniuk
Dword
 
Mensagens: 2935
Registrado em: 13 Out 2006 18:04

Mensagempor cristian » 21 Fev 2010 20:25

este i2c nunca fui com a cara tive problemas ano passado com ds1307 e 24c256 a memoria era apagada as vezes

e ai do adianta ter um hardware desses se um interrupçao q nao tinha nada haver dava erro na memoria ...usart sim é um **** hardware vc nao se preocupa com nada deixa a interrupçao ligada e pronto tudo q chaga pe guardado e depois é so ler ...

fabim ta me enchendo a cabeça com estes ARM ...toda hora procuro comprar um desses e sair aos poucos do pic ,me falta literatura e progrmas ....
cristian
Word
 
Mensagens: 570
Registrado em: 03 Nov 2006 08:15
Localização: serrinha-ba

Mensagempor vtrx » 21 Fev 2010 20:50

... i2c nao vale a pena! acho que reflete o fato de i2c ser um barramento proprietario da nxp...

O protocolo I2C não é criação da Philips (1996)?
Avatar do usuário
vtrx
Dword
 
Mensagens: 2239
Registrado em: 20 Abr 2008 21:01

Mensagempor msamsoniuk » 21 Fev 2010 22:16

a philips passou por uma reestruturacao e, como ocorreu com a motorola e siemens, eles venderam a divisao de semicondutores. no caso da philips, a divisao de semicondutores se tornou a nxp, no caso da motorola se tornou a freescale e no caso da siemens se tornou a infineon.

bom, como o i2c eh proprietario, se vc for criar um chip com i2c vc precisa implorar por uma licenca e pagar os custos:

http://www.nxp.com/products/interface_c ... licensing/

coisa que nao existe no caso do spi.

vtrx escreveu:
... i2c nao vale a pena! acho que reflete o fato de i2c ser um barramento proprietario da nxp...

O protocolo I2C não é criação da Philips (1996)?
Avatar do usuário
msamsoniuk
Dword
 
Mensagens: 2935
Registrado em: 13 Out 2006 18:04

Mensagempor xultz » 22 Fev 2010 08:44

"As of October 1, 2006, no licensing fees are required to implement the I²C protocol. However, fees are still required in order to have I²C slave addresses allocated by NXP."

Tua informação não está correta, Marcelo. Você só precisa pagar se quiser um ID para teu dispositivo, de formas a vender e não correr o risco dele colidir com outro dispositivo que já tenha aquele ID. Qualquer coisa envolvento ID, tem que ter alguém controlando, e isto reflete em custo, como por exemplo Zigbee.
No SPI isso é mole porque o treco é cretinamente simples, ele nem é feito prá ter muitos dispositivos no barramento, precisa de uma linha de CS para cada chip, isso não é prático. E por não ser um padrão de verdade, o SPI sofre com problemas de incompatibilidade às vezes, com chips saindo do "padrão" e implementando suas próprias barbaridades.
98% das vezes estou certo, e não estou nem aí pros outros 3%.
Avatar do usuário
xultz
Dword
 
Mensagens: 3001
Registrado em: 13 Out 2006 18:41
Localização: Curitiba

Mensagempor fabim » 22 Fev 2010 09:34

xultz escreveu:"As of October 1, 2006, no licensing fees are required to implement the I²C protocol. However, fees are still required in order to have I²C slave addresses allocated by NXP."

Tua informação não está correta, Marcelo. Você só precisa pagar se quiser um ID para teu dispositivo, de formas a vender e não correr o risco dele colidir com outro dispositivo que já tenha aquele ID. Qualquer coisa envolvento ID, tem que ter alguém controlando, e isto reflete em custo, como por exemplo Zigbee.
No SPI isso é mole porque o treco é cretinamente simples, ele nem é feito prá ter muitos dispositivos no barramento, precisa de uma linha de CS para cada chip, isso não é prático. E por não ser um padrão de verdade, o SPI sofre com problemas de incompatibilidade às vezes, com chips saindo do "padrão" e implementando suas próprias barbaridades.


Por este e outros motivos de incompatibilidade pela quantidade de bits.
Tipo os FDP que tem 1 Start + 9 bits, ou 11 bits.
QUE EU OPITEI POR USAR OS NXP, QUE ME POSSIBILITAM CONFIGURAR A SPI DE 8 A 16 BITS...RS


To falanu,,,
Alem de ser mais barato que pic...
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Próximo

Voltar para PIC

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x