Configurar Modo Síncrono

Software e Hardware para linha x51

Moderadores: 51, guest2003, Renie, gpenga

Configurar Modo Síncrono

Mensagempor fmatheus » 09 Mai 2007 15:43

Por Favor se alguém puder me ajudar...

Nunca utilizei o modo síncrono e estou precisando configurar este modo no AT89S8252.

Só sei que o TX é o Clock e o RX é dados.
Como fica o registrador SCON? Fica tudo 00?

Sei também que ele vai pegar a Freq. Cristal e dividir por 12, mas e aí ? O valor resultante será o valor do clock de transmissão?

Neste modo é necessário programar o Timer?

Obrigado
fmatheus
Bit
 
Mensagens: 39
Registrado em: 02 Mar 2007 14:53

Re: Configurar Modo Síncrono

Mensagempor Maurício » 09 Mai 2007 18:33

Olá, fmatheus. Bem-vindo ao fórum.

fmatheus escreveu:Como fica o registrador SCON? Fica tudo 00?

SIM

Sei também que ele vai pegar a Freq. Cristal e dividir por 12, mas e aí ? O valor resultante será o valor do clock de transmissão?

SIM. 1MHz. (na teoria, hehehehehe)

Neste modo é necessário programar o Timer?

NÃO.

Obrigado

Disponha.


Só uma ressalva. Se for em C no Keil, eu não conseguí fazer funcionar o modo 0.

[]'s

RETI.
"Não leve a vida tão à sério, afinal, nenhum de nós sairá vivo, dela!"
Avatar do usuário
Maurício
Word
 
Mensagens: 678
Registrado em: 14 Out 2006 17:23
Localização: São Paulo - SP

Mensagempor fmatheus » 09 Mai 2007 19:54

Opa !!! Muito obrigado Maurício.

Vou tentar aqui simulando no Proteus.
Vou usar um Cristal de 3,57MHz porque o 8051 vai comunicar com o receptor de rádio TEA5757 e este último precisa de um sinal de clock de no máximo 300KHz.

Não conheço nada de C. Faço tudo em Assemly mesmo.

Por acaso vc é o Maurício de Sá que escreveu o livro de C para 8051???

Muitíssimo obrigado e um grande abraço
fmatheus
Bit
 
Mensagens: 39
Registrado em: 02 Mar 2007 14:53

Mensagempor Maurício » 09 Mai 2007 21:50

fmatheus escreveu:Por acaso vc é o Maurício de Sá que escreveu o livro de C para 8051???

Muitíssimo obrigado e um grande abraço


É nóis, mêss!

[]'s

RETI.
"Não leve a vida tão à sério, afinal, nenhum de nós sairá vivo, dela!"
Avatar do usuário
Maurício
Word
 
Mensagens: 678
Registrado em: 14 Out 2006 17:23
Localização: São Paulo - SP

É VC MESMO?? É UM IMENSO PRAZER

Mensagempor fmatheus » 09 Mai 2007 23:31

Boa Notícia,

Fiz a rotina em Assembly, simulei no Proteus 7.1. Funcionou que foi uma beleza (Bom pelo menos no simulador né, hehehehehe)

Monitorei o TX e o RX com o osciloscópio virtual e tá enviando os bytes certinho.

De fato, só precisa configurar o registrador SCON=00 e enviar os dados via SBUF e correr pro abraço.

Agora vamos ver se funciona na vida real. Hehehe

Mais uma vez obrigado eum grande abraço mestre
fmatheus
Bit
 
Mensagens: 39
Registrado em: 02 Mar 2007 14:53

Mensagempor fmatheus » 12 Mai 2007 10:04

Estou com outro problema.

Como receber dados neste modo? O Pino RX é bidirecional?

Não consegui simular a recepção no Proteus. Quando habilito a interrupção serial e a recepção, além de não funcionar ele também não transmite mais nada.

Maurício me ajuda aí, por favor!!
fmatheus
Bit
 
Mensagens: 39
Registrado em: 02 Mar 2007 14:53

Mensagempor Maurício » 12 Mai 2007 18:32

fmatheus escreveu:Estou com outro problema.

Como receber dados neste modo? O Pino RX é bidirecional?

Não consegui simular a recepção no Proteus. Quando habilito a interrupção serial e a recepção, além de não funcionar ele também não transmite mais nada.


Salve, fmatheus.

Sim, o pino RXD é bidirecional. Este modo é melhor utilizado em comunicações entre microcontroladores.
Neste modo, a criação de um protocolo eficiente é fundamental, a não ser que só exista um mestre no barramento e não haja envio de dados pelos escravos.

Quanto ao Proteus, lamento, não o conheço. Não posso ajudá-lo. Eu prefiro protoboard. Eles são bem mais fiéis, ehehehehe

Eu não conheço o TEA, mas, pelo que eu ví no dataxit, o modo zero não funciona pra vc, e nesse caso, nenhum outro modo de transmissão automática serial, porque o TEA não gera clock, só recebe.
Esse tipo de comunicação é mestre-escravo. O mestre gera o clock. O escravo responde aos comandos do mestre.

Melhor seria, baseado no dataxit, usar quatro pinos do 51 e construir seu próprio método de comunicação com esse integrado.

[]'s

RETI.
"Não leve a vida tão à sério, afinal, nenhum de nós sairá vivo, dela!"
Avatar do usuário
Maurício
Word
 
Mensagens: 678
Registrado em: 14 Out 2006 17:23
Localização: São Paulo - SP

Mensagempor fmatheus » 12 Mai 2007 21:57

Valeu Maurício,

Veja se essa idéia funciona:

Um decodificador serial/paralelo para pegar os dados do shift register do TEA5757 + uma rotina no 8051 para gerar o clock, enable etc.

Será que dá certo?

A propósito se vc puder pode me dar uma ajuda também com o outro tópico sobre "Escrever a segunda linha no LCD 16 x 2"?

Abraços
fmatheus
Bit
 
Mensagens: 39
Registrado em: 02 Mar 2007 14:53

Mensagempor Maurício » 13 Mai 2007 03:44

Ué?!?!

Pra que isso? O TEA já tem uma linha de I/O num pino só! Pra que que vc quer transformar esse canal serial em dado paralelo? Nesse caso, ao invés de perder 3 tú vai perder 11 pinos!! :shock:
Vc já tem um microcontrolador, não precisa de mais nada.
É simples. Um pino pro clock, um pino pro I/O e um pino pro Write Enable... foi pra conta!! É só seguir as indicações do dataxit.

Com o LCD não posso te ajudar. Não programo mais em assembler e nunca usei LCD com assembler.

Agora.... Só C! 8) :lol:

[]'s

RETI.
"Não leve a vida tão à sério, afinal, nenhum de nós sairá vivo, dela!"
Avatar do usuário
Maurício
Word
 
Mensagens: 678
Registrado em: 14 Out 2006 17:23
Localização: São Paulo - SP

Mensagempor fmatheus » 13 Mai 2007 18:06

Maurício,

Acho não entendi ainda o que vc quis dizer.

Vamos lá denovo:

1) O envio de dados do 8051 para o TEA5757 já entendi (modo sincrono com RXD=dado e TXD=clock + pino para habilitar o Write-enable).

2) Agora, o meu problema é, como ler esses dados do TEA5757 via comunicação serial? Tenho que habilitar a recepção e int. serial?

Fiz uma simulação utilizando outro 8051 para enviar os dados mas não funcionou.

Por isso a idéia de utilizar outro meio para a recepção de dados. Entendeu agora?
fmatheus
Bit
 
Mensagens: 39
Registrado em: 02 Mar 2007 14:53

Mensagempor Maurício » 13 Mai 2007 19:00

É melhor deixar de lado a serial automática e partir pra técnica que se chama BIT-BANG.

O TEA não segue nenhum tipo de protocolo. Ele simplesmente é um escravo que possui um canal de I/O, por onde a informação entra e sai do dispositivo. É um shift-register.
É preciso ler o dataxit e verificar como o dispositivo se comunica.

Lá diz, que quando a linha WE estiver em nível baixo, vc pode ler o integrado. Vinte e quatro (24) pulsos de clock são necessários para ler, e 25 pulsos são necessários para escrever.
Vc envia a informação bit-a-bit (bit-bang).
Abaixo está uma rotina que eu uso para ler um pino, só que está em C, mas o método é igual pra ASM tb, é só alterar. Espero que ajude.

Código: Selecionar todos
   pino_IO = 1;      // coloca o pino de IO como entrada
   CLK = 0;            // sinal de clock em nível baixo
   WE = 0;         // habilita leitura
   for (contador = 0; contador < 8; contador++)
   {
      CLK = LOW;
      dado <<= 1;      // desloca a variável de 8 bits, 1 bit para esquerda
      CLK = HIGH;      // envia o pulso de clock
      
      // lê, testa e armazena o valor do pino na variável DADO
      if ( pino_IO ) dado |= 0x01; else dado &= 0xFE;
   }



Essa rotina lê oito bits. Vc vai precisar mudar pra ler 24 bits.
Em ASM vc vai precisar repetir esse procedimento 3 vezes, e vai precisar de 3 variáveis de 8 bits para armazenar o valor lido.

Em C é mais prático, eheheheheh

[]'s

RETI.
"Não leve a vida tão à sério, afinal, nenhum de nós sairá vivo, dela!"
Avatar do usuário
Maurício
Word
 
Mensagens: 678
Registrado em: 14 Out 2006 17:23
Localização: São Paulo - SP

Mensagempor fmatheus » 14 Mai 2007 14:53

Bom,

Eu nunca fiz nada parecido com isto, mas, vou tentar.

Muito obrigado pela atenção

Um abraço
fmatheus
Bit
 
Mensagens: 39
Registrado em: 02 Mar 2007 14:53


Voltar para 8051

Quem está online

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

cron

x