help ps2!!!!

Software e Hardware para linha x51

Moderadores: 51, guest2003, Renie, gpenga

help ps2!!!!

Mensagempor dyemerson » 28 Jul 2008 17:53

Senhores n"ao estou conseguindo gerar um tempo de 40 us em c p/ 8051
ja programei o timer1 com 16 bits (65535)mas consigo apenas um tempo minimo de 18 ms, tenho que usar este tempo de 40 us no clock de uma comunicação ps2, que estou achando um tempo muito pequeno, então primeiramente gostaria de saber sobre o tempo do clock para a comunicação ps2 esta certo o valor e depois como chegar neste valor em c


grato por tudo e aguardo respostas!!!
dyemerson
Bit
 
Mensagens: 38
Registrado em: 13 Nov 2006 22:25

Mensagempor Maurício » 28 Jul 2008 20:01

Salve, dyemerson.

Pra fazer o 51 contar 40us, com um cristal de 12MHz, programe um timer qualquer, em oito bits, pra contar 40 eventos ( 256-40 = 216 --> D8H).
Carregue o timer com o valor D8H, dispare, e habilite a interrupção.
Quando interromper, vc faz o que tem que fazer (vixe!!! tou falando igual aquele presidente, o tal do Mullah, ehehehehehe).

Veja este site aqui. Tem ótimas referências com relação ao teclado do PC:

http://www.beyondlogic.org/keyboard/keybrd.htm

Tem um documento da Philips, tb, falando sobre esse mesmo interfaceamento:

AN434 - Connecting a PC keyboard to the I2C-bus

Procura lá no site da NXP.

Boa sorte.

[]'s
"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 tcpipchip » 28 Jul 2008 20:32

Tambem estou na briga aqui...:(
Avatar do usuário
tcpipchip
Dword
 
Mensagens: 6560
Registrado em: 11 Out 2006 22:32
Localização: TCPIPCHIPizinho!

Mensagempor msamsoniuk » 30 Jul 2008 12:39

40us seriam 25 mil interrupcoes por segundo, o 8051 aguenta esse tranco ? com um tempo assim curto talvez seja mais interessante disparar o timer e ficar com um while(timerout()) verificando se o timer chegou na contagem dos 40us para entao continuar.

alternativamente, nao daria para usar uma porta SPI/I2C para essa funcionalidade ?
Avatar do usuário
msamsoniuk
Dword
 
Mensagens: 2935
Registrado em: 13 Out 2006 18:04

Mensagempor dyemerson » 01 Ago 2008 11:52

ok O tempo eu consegui !!! mas gerar co clock e transmitir dado de 8 bits ou 1 byte em um unico pino ,que estou som problema . não consigo achar um comando que faça o encontro dos bit`s em um unico !!!!

para pic em c e o comado é output_bit ( ccs) se alguem souber por favor me ajudem
dyemerson
Bit
 
Mensagens: 38
Registrado em: 13 Nov 2006 22:25

Mensagempor Maurício » 01 Ago 2008 19:44

Marcelo Samsoniuk escreveu:40us seriam 25 mil interrupcoes por segundo, o 8051 aguenta esse tranco ?


Aguentar, aguenta, só que ele iria ficar preso, exclusivamente para fazer isso.
Com cristal de 12MHz, o 51 realiza 1 MIPS. Com cristal de 24, 2 MIPS. Mas, já fica bem crítico manipular tempos tão curtos.

dyemerson escreveu:ok O tempo eu consegui !!! mas gerar co clock e transmitir dado de 8 bits ou 1 byte em um unico pino ,que estou som problema . não consigo achar um comando que faça o encontro dos bit`s em um unico !!!!

para pic em c e o comado é output_bit ( ccs) se alguem souber por favor me ajudem


Pra retirar um bit de um byte, vc precisa fazer operações lógicas.
Dá pra fazer assim:

Código: Selecionar todos
#include <8052.h>

void main ( void )
{
   unsigned char dado = 0xAA;
   unsigned char contador;
   
   P1_0 = 0;
   for ( contador = 0; contador < 8; contador++ )
   {
      P1_0 = dado & 0x01;   // se for enviar primeiro o LSB; se for enviar o MSB, use 0x80
      dado >>= 1;   // desloca 1 bit para a direita; se for enviar o MSB primeiro, o deslocamento é para a esquerda
   }
   while ( 1 );
}


Experimenta aí.

[]'s
"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 dyemerson » 05 Ago 2008 08:32

Mas consigo gerar este clock sem interrupção???? para gerar ele apenas quando precisar , não sufocando o 8051,,,, o que vc acha???
Mas tb se não tiver opção e ter que usar interrupção o faço????

desculpa se te enchi de perguntas!!!!

mas obrigado pela força que esta dando!!!!
dyemerson
Bit
 
Mensagens: 38
Registrado em: 13 Nov 2006 22:25

Mensagempor Maurício » 05 Ago 2008 08:43

dyemerson escreveu:Mas consigo gerar este clock sem interrupção????


Sim, consegue, só que não é prático. Com cristal de 12, vc coloca 40 NOPs em sequencia, sem usar FOR, mas, com o uso do timer, é bem mais prático e preciso.

Mas tb se não tiver opção e ter que usar interrupção o faço????


Programa a interrupção, e programa o timer pra contar 40 eventos (12MHz). Dentro da interrupção vc manda ou recebe os bits.

Vai lá no site da NXP e baixa o documento que eu citei. Ele dá a maior força.

[]'s
"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 dyemerson » 08 Ago 2008 18:18

Nossa consegui a comunicação , mas estou com problema de paridade, como posso fazer um programa que verifica a paridade , pois isso esta fazendo com que não tenha o sucesso do projeto

grato por tudo !!!!

e desde ja obrigado pelas dicas!!!!
dyemerson
Bit
 
Mensagens: 38
Registrado em: 13 Nov 2006 22:25


Voltar para 8051

Quem está online

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

x