Página 1 de 1

help ps2!!!!

MensagemEnviado: 28 Jul 2008 17:53
por dyemerson
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!!!

MensagemEnviado: 28 Jul 2008 20:01
por Maurício
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

MensagemEnviado: 28 Jul 2008 20:32
por tcpipchip
Tambem estou na briga aqui...:(

MensagemEnviado: 30 Jul 2008 12:39
por msamsoniuk
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 ?

MensagemEnviado: 01 Ago 2008 11:52
por dyemerson
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

MensagemEnviado: 01 Ago 2008 19:44
por Maurício
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

MensagemEnviado: 05 Ago 2008 08:32
por dyemerson
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!!!!

MensagemEnviado: 05 Ago 2008 08:43
por Maurício
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

MensagemEnviado: 08 Ago 2008 18:18
por dyemerson
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!!!!