Paridade na RS232

Software e Hardware para linha x51

Moderadores: 51, guest2003, Renie, gpenga

Paridade na RS232

Mensagempor lmdmendes » 16 Out 2006 19:24

Necessito ler com um 8051 (neste caso 8052) um periférico que necessita de paridade par, mas as funções normais para usar a UART são para usar sem paridade, como faço para tratar a paridade? Alguém tem um rotina ou biblioteca que trate a paridade?
Eu estou para usar Bascom51, mas caso me arranjem uma rotina q trate a paridade noutra linguagem, estou disposto a mudar, pois sem tratar a paridade n consigo seguir.

Alguém tem um rotina para ler UART com paridade PAR? em C, ASM ou Basic??


Me envie, e urgente.

lmdmendes@gmail.com

Obrigado
lmdmendes
Bit
 
Mensagens: 46
Registrado em: 13 Out 2006 13:29
Localização: Portugal

Mensagempor Maurício » 16 Out 2006 19:46

não é necessária nenhuma rotina pra tratar a paridade no 8051.
basta colocar o dado no acumulador (ACC) e pegar a paridade através do bit P (Parity).
se o bit P estiver em 1, então, paridade impar.
configure a UART pra trabalhar em 9 bits.
copie o bit P para o bit TB8. transmita e xau, já era.
na recepção, a paridade vem pelo bit RB8.


[]'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 lmdmendes » 17 Out 2006 13:56

Ok, ja tinha raparado nisso em asm, mas para fazer em C ou basic? sim, por exemplo o BASCOM51 axo que não da para defeniar a UART com 9 Bits, pois pelo q me parece aquilo ja esta defenido, para ser so enviar e recever, vom um simplecomando do tipo "variavel=print"(para enviar para a uart), ai esta o problema rotinas que ja tenham a pariade tratada, q seja só enviar ou ler o valor, exite? Ou têm sempre q se tratar a paridade?
lmdmendes
Bit
 
Mensagens: 46
Registrado em: 13 Out 2006 13:29
Localização: Portugal

Mensagempor barboza » 17 Out 2006 17:01

Não conheço o Bascomm, mas em C isso é possível.
Os homens mentiriam muito menos se as mulheres fizessem menos perguntas.
Avatar do usuário
barboza
Word
 
Mensagens: 948
Registrado em: 17 Out 2006 13:42
Localização: Longe de onde gostaria de estar

Mensagempor lmdmendes » 17 Out 2006 18:56

Ok, pode me indicar então um rotina em c que de para tratar a paridade par de uma forma simples e directa, sem ao longo da programação não ter de estar sempre a paridade? Ficando apenas chamando uma rotina, indicando qual o valor a enviar, ela fazer o resto(enviar com paridade par) e lendo sem ligar a paridade e ela indicar o valor.
Pode indicar a rotina?
lmdmendes
Bit
 
Mensagens: 46
Registrado em: 13 Out 2006 13:29
Localização: Portugal

Mensagempor Maurício » 17 Out 2006 18:58

não conheço BASCOM. quem poderia te ajudar melhor, talvez fosse o Simplício.
não conheço outra maneira mais prática do que fazer o que eu tinha falado antes.
como disse o Barboza, em C, isso daí é simples.

[]'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 lmdmendes » 17 Out 2006 19:52

ok, por mim posso trabalhar em c
Podem me dar a rotina em c para fazer isso?
Qual o compilador de C q usam? Tem debuguer?
lmdmendes
Bit
 
Mensagens: 46
Registrado em: 13 Out 2006 13:29
Localização: Portugal

Mensagempor Maurício » 18 Out 2006 15:51

no Keil:

configurar serial

SCON = 0xD0; // 9 bits; baud-rate variável; recepção habilitada

na transmissão:

void transmitir ( char dado )
{
bit paridade;

ACC = dado;
paridade = P;
TB8 = paridade;
SBUF = dado; // foi pra conta :D
}

basicamente é isso. os detalhes de segurança, vc precisa implementar.
se vc usa printf, então vc precisa modificar as funções PUTCHAR e GETCHAR.
na recepção, qdo ler o dado de entrada, copie antes o bit RB8 para um bit qualquer.
com relação à paridade impar/par não sei lhe dizer porque eu nunca usei isso.
espero ter ajudado.

[]'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 lmdmendes » 18 Out 2006 17:36

Obrigadão.

Uma pergunta, nunca usei o Keil uVision2, mas alguns amigos ja me falaram bem dele, da para programas PICs por ele?
lmdmendes
Bit
 
Mensagens: 46
Registrado em: 13 Out 2006 13:29
Localização: Portugal

Mensagempor Maurício » 18 Out 2006 17:48

não.

[]'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 lmdmendes » 18 Out 2006 20:13

ok, obrigado na mesma
lmdmendes
Bit
 
Mensagens: 46
Registrado em: 13 Out 2006 13:29
Localização: Portugal

Mensagempor lmdmendes » 19 Out 2006 11:48

Já tenho em meu poder o leitor de banda magnética que vou usar OMRON 3S4YR-HNFR1, pelo q estive a ver em:
http://www.coronaprint.com/datasheet/HNFR_e.pdf

E um leitor Unidirectional, por isso apenas vou ter que num bit indicar q estou pronto a receber e ler pela UART o que ele ma vai mandar com nas seguintes configurações:

(1) Communication standard : In accordance with EIA RS232
(2) Transmission speed : 9600 bps
(3) Communication method : Half-duplex
(4) Synchronizing method : Start-stop synchronization
(5) Data bit length : 8 bit
(6) Error detection : Even parity
(7) Stop bit : 1 bit

Eu nestas configurações no hyperterminal do windows, consigo receber, agora para o 8051, não estou a conseguir ler :(

Estava a tentar ler e colocar directo num LCD(2*16) para assim ver se lia algo, apesar de ser 3 tramas enormes, só me interessa uma parte da 1ªtrama.

Será problema da rotina de LCD? Podem me enviar que rotinas usam para no keil escrever num LCD 2*16 ?

Ou um código que de para fazer o procedimento de ler da uart com paridade par e mandar para o LCD.




P.S.- O datasheet mais especifico deste leitor esta em:
http://www.jade-bv.nl/documenten/hnfr_h ... pec_a_.pdf
lmdmendes
Bit
 
Mensagens: 46
Registrado em: 13 Out 2006 13:29
Localização: Portugal

Mensagempor Maurício » 19 Out 2006 16:01

olá Luiz.
neste endereço:

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

vc pode baixar vários fontes-C com códigos sobre comunicação serial e displays LCD, mas, o exemplo de serial não envolve paridades.

pela descrição do seu aparelho, o formato de comunicação é o tradicional.
qdo vc configura a serial (SCON = 0xD0), vc automaticamente já posiciona o MCU para receber dados. se vc não está recebendo, então, pode haver problemas no meio físico, ou no transmissor. precisa verificar quem está ocasionando os erros.
vc conhece o 8051 ??

espero que os códigos lhe sirvam.

[]'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


Voltar para 8051

Quem está online

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

cron

x