89c51ED2 SPI

Software e Hardware para linha x51

Moderadores: 51, guest2003, Renie, gpenga

Mensagempor jeanfernandes » 30 Jan 2007 18:52

Tabela Verdade (?)

MS-D0 MS-D1
0 0 (Fala com o PC)
0 1 (Fala com o Slave 1)
1 0 (Fala com o Slave 2)
1 1 (Num fala com ninguem)

Bom eu creio que isso funciona desde que o mestre seja educadinho em termos de procotolo com o PC....ehehehheheheeheh
Jean P. Fernandes - Eng. Eletrônico - (83) 2102-2116 - APEL - www.apel.com.br - Campina Grande - PB
jeanfernandes
Word
 
Mensagens: 539
Registrado em: 11 Out 2006 15:36
Localização: Campina Grande - PB

Mensagempor jeanfernandes » 30 Jan 2007 19:04

Agora se os slaves nao mandam nada pro Master eheheheheh
ai fica mais simples

com 6 diodinhos + 3 Resistor (num da nem 1 reau) resolve....via UART mermo
da pra enviar pro PC pros slaves e receber do PC normalmente .....
depende do gosto do fregues....

tabajara 2 - a revanche

É testar e ver a m*

Fuiz...
Jean P. Fernandes - Eng. Eletrônico - (83) 2102-2116 - APEL - www.apel.com.br - Campina Grande - PB
jeanfernandes
Word
 
Mensagens: 539
Registrado em: 11 Out 2006 15:36
Localização: Campina Grande - PB

Mensagempor mauricio.esposito » 30 Jan 2007 21:18

o problema que a serial esta ocupada com outra tarefa ,então tem de ser SPI ou de outro jeito
mauricio.esposito
Bit
 
Mensagens: 9
Registrado em: 21 Jan 2007 23:27

Mensagempor jeanfernandes » 31 Jan 2007 06:18

Mauricio

Depende do que voce chama como sendo ocupada.
Se voce tem controle sobre o processo eu imagino que
os slaves podem ser acessados enquanto voce nao esta fazendo nada
com o mestre.

A priori, me corrija se não for verdade.

1) Voce recebe um comando do mundo externo (isso independe se voce está ou não escrevendo nos slaves)

2) Voce responde um comando ao mundo externo.

3) Esse comando que voce recebeu do mundo externo, pode demandar uma escrita nos slaves, voce pode fazer naturalmente.

Sendo assim, não há nenhum problema em fazer aquele esqueminha com os diodos. Sugiro que voce monte sua máquina de estados num papel por exemplo, e defina os processos. Eu já tive esse problema de usar a serial e o lance foi apenas definir a máquina de estados, para todo mundo ter seu tempo no bus serial, funcionou perfeitamente.

Caso voce precisa mandar algo pra os Slaves e nesse meio tempo voce precise mandar algo pro mestre é simples....voce bufferiza o que tem que mandar pros slaves e poe time out de fim de frame e esse controle de time out depende de alguns fatores facilmente controláveis. Vamos dar nome aos bois.

Suponha que o frame seja de 128 bytes. Para mandar ao mestre e aos slaves. Vamos supor tambem que voce use uma serial de 2400 8N1, ou seja cada byte é transmitido num tick mínimo de 4,2 ms. Vamos considerar 10 ms pra gente não brigar.

Vamos considerar agora que voce tem um protocolo decente pra enviar pro mundo externo e para os slaves (pode ou nao ser o mesmo). O envio de uma resposta para o mestre é prioritário sobre os slaves....

Pior caso ? Voce estava transmitindo o primeiro byte para o slave quando recebeu um comando do mestre e esse comando exige uma resposta. Bom, voce aqui pode fazer duas coisas.

1) Enviar os 128 bytes pro mestre e depois mandar os 127 bytes restantes pros slaves. Dai o slave teria que esperar 1280 ms (apos ter recebido o primeiro byte) para receber o resto do frame. Se isso for passível tá otimo.

2) Voce mandar a resposta pro mestre de forma alternada, ou seja transmite 1 byte pro mestre e um pro escravo (ou seja pooling de transmissao de 3 buffers, nada complicado de fazer, pois se assemelha a um TDM de telefonia).

3) Voce pode estabelecer um troughtput da serial com pesos distintos para o mestre e para os slaves, por exemplo 4:2:1, ou seja, baseado na solução 2, voce pode transmitir 4 bytes pro mestre, 2 para o slave 1, e 1 para o slave 2, e repetir a sequencia se for necessario....eu creio que isso nao vai matar ninguem, se for bem pensado.

Dá um pouco de trabalho ? Dá ! Mas vamos pensar na ótica do processador. Ele está trabalhando na interrupção da serial, depois na SPI e volta pra Serial, com nesting e tudo mais entende ? qual a diferenca ? Se voce tem prioridades equivalentes é possivel que o caso 2 seja executado, sendo assim num é melhor voce tirar o nesting de interrupcao pra esse caso e trabalhar apenas com um recurso por time slot.

A grande vantagem de usar a serial é que voce precisa manter 3 buffers de envio do tipo circular e mais 3 variaveis de controle com um apontador. É de se pensar.

Claro que isso é uma visão inicial da coisa, não estudei o seu problema com as variáveis que precisaria. Apenas vc pode fazer isso.

Como diria um amigo nosso ae : FY! ehehehheeheheh
Te vira mané, as cartas estão na mesa.... (brincadeirinha).

Fuiz.
Jean P. Fernandes - Eng. Eletrônico - (83) 2102-2116 - APEL - www.apel.com.br - Campina Grande - PB
jeanfernandes
Word
 
Mensagens: 539
Registrado em: 11 Out 2006 15:36
Localização: Campina Grande - PB

Mensagempor mauricio.esposito » 03 Fev 2007 19:21

oi jean ,agradeço pela dica mas o meu processo eu não tenho controle ,tenho que ficar monitorando a serial que comunica com o Pc e são eventos aleatórios que não tenho como prever ,este esquema que vc passou tenho em uma controladora implementada com o 74hc157,que já aconteceu de estar comunicando com outros mcus e perdeu o chegou pela serial é raro ,mas já aconteceu !!
mauricio.esposito
Bit
 
Mensagens: 9
Registrado em: 21 Jan 2007 23:27

Mensagempor jeanfernandes » 03 Fev 2007 22:36

Opa meu filho

Desse jeito que falei (no segundo caso dos diodinhos eh impossivel voce perder eventos

Seta a interrupcao da serial com prioridade eu duvido que voce vai perder algo...pois a recepcao do PC eh direto no MCU principal....
Jean P. Fernandes - Eng. Eletrônico - (83) 2102-2116 - APEL - www.apel.com.br - Campina Grande - PB
jeanfernandes
Word
 
Mensagens: 539
Registrado em: 11 Out 2006 15:36
Localização: Campina Grande - PB

Anterior

Voltar para 8051

Quem está online

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

x