collapse

* Links de Robótica

* Posts Recentes

Ontem pequei... por senso
[Hoje às 01:31]


Tipo de conectores são ou onde arranjá-los? por Hugu
[Hoje às 00:34]


Wamp Server por beirao
[Ontem às 21:23]


Carro telecomandado atraves do PC por artur36
[Ontem às 20:10]


Escolher Multimetro por filjoa
[Ontem às 14:46]


Qual a melhor técnica? por dropes
[Ontem às 14:30]


TV Avariou - Sanyo por almamater
[26 de Setembro de 2016, 13:54]


Ligar telefone fixo a arduino por helderjsd
[26 de Setembro de 2016, 11:07]


Procuro cristal de 30.875 Mhz? por Hugu
[25 de Setembro de 2016, 17:20]


Encomenda Colectiva N2-2016[@Mouser - Aberta a pedidos!] por Hugu
[25 de Setembro de 2016, 16:42]

Autor Tópico: I2C - Write a partir de um slave  (Lida 1499 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline paulo frutuoso

  • Mini Robot
  • *
  • Mensagens: 15
I2C - Write a partir de um slave
« em: 01 de Junho de 2013, 17:15 »
Boa Tarde a todos

Tenho trabalhado com o I2C, achava que já o percebia, mas hoje apareceu-me um problema que não consigo ultrapassar.

Tenho 3 arduinos, um master e dois slaves.
1 - Consigo enviar do master para o slave
2- Consigo fazer um request do server e obter uma resposta dos dois slaves etc

Mas se quiser enviar uma informação aleatória do slave para o master sem ter um request do próprio master, não o consigo fazer.
É mesmo assim, é o protocolo? ou não?

Obrigado
Paulo Frutuoso

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 8.944
  • Helpdesk do sitio
Re: I2C - Write a partir de um slave
« Responder #1 em: 01 de Junho de 2013, 17:37 »
Sim, o master é que pede, o slave responde, a não ser que implementes isso com multi-masters, e qualquer um pode ser master a qualquer momento e os outros são slaves.
Avr fanboy

Offline tarquinio

  • Mini Robot
  • *
  • Mensagens: 529
Re: I2C - Write a partir de um slave
« Responder #2 em: 01 de Junho de 2013, 17:46 »
Pois o protocolo é mesmo assim, a comunicação é sempre iniciada pelo master... A opção mais simples será provávelmente fazer pooling aos slaves... Tambem há a opção dos vários arduinos alternarem entre masters e slaves, mas isso complica a coisa toda e o mais certo é nem se adequar bem ao que tu queres

Offline Njay

  • Mini Robot
  • *
  • Mensagens: 2.800
    • Tróniquices
Re: I2C - Write a partir de um slave
« Responder #3 em: 01 de Junho de 2013, 18:18 »
Se precisares que os dados sejam transmitidos "rapidamente" ao master após a sua geração, ou se não quiseres estar sempre a fazer polling dos slaves por motivos de consumo de energia ou outros, podes arranjar uma linha extra partilhada entre todos (master e slaves), que serve para os slaves dizerem ao master que têm dados. Essa linha tem que ser em colector aberto (nos slaves podes alternar o pino ligado a essa linha entre output a 0 ou input, que vai dar um comportamento de colector aberto) e geraria uma interrupção no master.

Offline paulo frutuoso

  • Mini Robot
  • *
  • Mensagens: 15
Re: I2C - Write a partir de um slave
« Responder #4 em: 01 de Junho de 2013, 21:27 »
Obrigado a Todos

Provavelmente vou optar pelo  pooling aos slaves.
Njay, importas-te de detalhar mais a tua ideia da linha extra ?
Obrigado

Paulo Frutuoso

Offline tarquinio

  • Mini Robot
  • *
  • Mensagens: 529
Re: I2C - Write a partir de um slave
« Responder #5 em: 02 de Junho de 2013, 16:31 »
Penso que a ideia da linha extra era usar um pino em cada arduino para avisar o master que há dados novos para serem lidos. Estes pinos estão todos ligados entre si e configurados como inputs.Em vez de estares a fazer pooling, sempre que um slave tiver dados novos, coloca o pino como output e altera a saida temporariamente, para avisao o master que há dados novos para ver. Do lado do master podes associar esse pino (só da com alguns pinos especificos) a um interrupt para executar código automaticamente se o valor do pino for alterado.

Offline Sérgio_Sena

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 1.575
    • Electronics Design Craftsmanship
Re: I2C - Write a partir de um slave
« Responder #6 em: 03 de Junho de 2013, 11:10 »
Atencao que o controlo dessa nova linha tem que ser mesmo como o NJAY disse :: atraves de colectores/drenos abertos.

O MASTER tem um pull-up na linha de entrada, e os SLAVEs actuam a linha atraves de colector/dreno aberto.

Eh o metodo mais seguro para essa montagem pois nao forca nenhum dos pinos, tanto do Master como dos Slaves.
Cumprimentos,
Sérgio Sena

Projectos Electrónicos à medida

Follow me on Twitter