Página 1 de 1

Comunicação entre 2 msc1211

MensagemEnviado: 04 Mar 2008 01:19
por Pianta
Olá eu estou postando minhas dúvidas aqui, pois o 8051 e msc são praticamente iguais alterando só nome de alguns regis. e organização dos pinos, mas vamos a minha dúvida. Primeiro Estou tentando comunicar esses dois UC, porém estou com dificuldades sei que preciso colocar um como UC escravo, vem a primeira dúvida como vou setar esse UC via software como escravo, outra pergunta eu estou programando os timers1 deles e tentando usar o Tx1 e Rx1 para comunicar entre eles a Tx0 e Rx0 de cada um deles estou deixando para programar ele via RS232. Estou usando um baud rate para comunicacao entre eles de 19200 bps, no modo 2 assincrono 11bits. Mas meus problemas são que mesmo assim seguindo essas configurações nao consigo fazer eles se comunicarem, alguma idéia?

Abraços

up

MensagemEnviado: 04 Mar 2008 15:59
por Pianta
para dar mais uma complementação ao post, estou usando as configurações de SCON, PCON, SMOD iguais para os dois MSCs e um gerador de paridade.

MensagemEnviado: 04 Mar 2008 19:28
por brasilma
Pianta, tenta primeiro comunicar apenas um 8051 com um PC (usar buffer RS232 - MAX232) com uma velocidade mais baixa, para saber se está tudo ok.

MensagemEnviado: 04 Mar 2008 20:01
por Maurício
Comunicação mestre-escravo é simples. Somente o mestre tem o direito de controlar a linha de transmissão. Mais ninguém tem!
Os escravos ficam escutando a linha ( por polling ou por interrupção ).
O mestre envia o endereço do escravo.
Todos os escravos leêm esse endereço. Aquele escravo que identificou seu endereço, se prepara para receber as instruções do mestre. Os outros, simplesmente ignoram os dados que serão transmitidos e continuam fazendo seus processamentos.
O mestre transmite os dados, o escravo recebe os dados! Se o escravo tiver que enviar informações pro mestre, aquele que foi identificado, após o comando de solicitação de dados do mestre, envia imediatamente os dados solicitados. Fim de comunicação. Todos os escravos voltam à rotina de ficar escutando a linha.

Claro que vc precisa criar um protocolo pra que esse tipo de comunicação seja efetivo (mestre-escravo).

Comunicação serial usando UART entre dois 8051: TX de um no RX do outro, e RX de um, no TX do outro. Direto! Sem conversores.
Configuração de bauds e serial idênticas pra ambas as máquinas.

Posta suas rotinas de inicialização de timers e de USARTs, e tb do tratamento de dados da serial pro pessoal poder dar uma idéia melhor.

Qual linguagem tú tá usando?

[]'s

MensagemEnviado: 05 Mar 2008 19:22
por Pianta
Maurício escreveu:Comunicação mestre-escravo é simples. Somente o mestre tem o direito de controlar a linha de transmissão. Mais ninguém tem!
Os escravos ficam escutando a linha ( por polling ou por interrupção ).
O mestre envia o endereço do escravo.
Todos os escravos leêm esse endereço. Aquele escravo que identificou seu endereço, se prepara para receber as instruções do mestre. Os outros, simplesmente ignoram os dados que serão transmitidos e continuam fazendo seus processamentos.
O mestre transmite os dados, o escravo recebe os dados! Se o escravo tiver que enviar informações pro mestre, aquele que foi identificado, após o comando de solicitação de dados do mestre, envia imediatamente os dados solicitados. Fim de comunicação. Todos os escravos voltam à rotina de ficar escutando a linha.

Claro que vc precisa criar um protocolo pra que esse tipo de comunicação seja efetivo (mestre-escravo).

Comunicação serial usando UART entre dois 8051: TX de um no RX do outro, e RX de um, no TX do outro. Direto! Sem conversores.
Configuração de bauds e serial idênticas pra ambas as máquinas.

Posta suas rotinas de inicialização de timers e de USARTs, e tb do tratamento de dados da serial pro pessoal poder dar uma idéia melhor.

Qual linguagem tú tá usando?

[]'s


Primeiramente, valeu pelas dicas desde já.
Vou pegar as rotinas e adicionar aqui mas essas ligações dos Tx1 e Rx1 já fiz invertidas em ambos UC, configuração do baud rate dexei igual em ambos 19200 bps (preciso dessa transmissao bem rápida) a linguagem que uso é C, tendo usado vários editores como Ultraedit, devC, e até mesmo em linux, e estou compilando no SDCC.
Postarei assim que estiver com os códigos em mãos eles aqui.

Grato.

MensagemEnviado: 05 Mar 2008 23:16
por tcpipchip
Eu ja faco um pouquinho diferente, eu uso o protocolo orientado a BIT da seguinte forma

19200,N,9,1

Ou seja, um nono bit indica se o dado eh um endereco de um dispositivo escravo ou um dado propriamente dito...

9th protocol...

TCPIPCHIP

Código

MensagemEnviado: 01 Abr 2008 01:23
por Pianta
Pessoal eu sei que o certo seria eu postar meu código, mas estou quase certo que minha lógica por polling está errada eu estou sem o código que fiz para comunicar dois 8051s, por isso estou pedindo para alguém postar um código pode ser so a parte do main pq as configs da serial e tal eu jah fiz, so precisaria mesmo é um apoio no main, assim que conseguir posto o meu, mas se alguem tiver em maos e disposicao para postar me ajudaria e já poderia corrigir o meu e dps postar os resultados.

Grato.

MensagemEnviado: 01 Abr 2008 08:15
por brasilma
Dá uma analisada nesse ai, qualquer coisa "grita":

ZERABAL: CLR EA ; Desabilita Interrupcoes
MOV R2,#9
MOV A,#54H ; 84D = 54H = "T" *** Talvez tenha de complementar os sinais *** CPL


ZERABALD1: CLR TX2 ;
ZERABALD2: MOV TH0,#0F9H ; 24MHz/12=2MHz/1200=1667 (65535-1667=63868 (F97CH))
MOV TL0,#7CH ; 24MHz/12=2MHz/9600=208 (65535-208=65327 (FF2FH)) FF37H *** por
ZERABALL1: MOV C,TF0 ; uma questao de atraso na execucao das instrucoes da rotina e
JNC ZERABALL1 ; necessario reduzir um pouco o tempo do delay para compensar, no
CLR TF0 ; caso dos 1200 nao da tanta diferenca pois os bits sao + lentos

DJNZ R2,ZERABALD3
JMP ZERABALD4

ZERABALD3: RRC A
JNC ZERABALD1
SETB TX2
JMP ZERABALD2

ZERABALD4: SETB TX2 ;
SETB EA ; Abilita Interrupcoes

MensagemEnviado: 12 Abr 2008 14:36
por Pianta
Valeu pela dica... essa semana eu vou continuar trabalhando nesse projeto vou tentar corrigir o meu código com as dicas e códigos que o pessoal postou aqui. Assim que fechar o meu código e testar posto meus resultados.

Grato.

MensagemEnviado: 16 Abr 2008 12:54
por Maurício
Dá uma olhada aqui, tem algumas rotinas de serial, mas, é em C.

http://www.editoraerica.com.br/download ... troladores

[]'s

MensagemEnviado: 16 Abr 2008 18:23
por pomboeletronic
da uma olhada em

http://8052.com/codelib.phtml


tem muitas rotinas...

Resolvido

MensagemEnviado: 01 Jun 2008 23:54
por Pianta
Ai pessoal consegui resolver meus problemas com a comunicacao serial entre UCs. Valeu pelas dicas mas acabei resolvendo de maneiras divergentes das que o pessoal postou aqui, como solucao do meu problema acabei testando a comunicacao como sendo serial padrao Modo 1 e funfo, tentava fazer como o fabricante manda, configurei até a alma da vó do badanha mas nao funciono, fiz o gerador de paridade e tb nao funciono, acabei apostando no modo 1 e incrivelmente a coisa funciono. Abraços!