Comunicação RS232 através do software

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Mensagempor andre_luis » 29 Out 2011 07:41

Acredito que a diretiva #use rs232 e #set_tris_x possa ser colocada em qualquer parte do programa, e não apenas no início.
Desse modo, voce poderia habilitar ou desabilitar a função em determinado momento.


+++
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Mensagempor aureo.oliveira » 30 Out 2011 12:00

- Qual PIC será usado? Quantas uarts têm?
- caso tenha somente uma uart, eu faria assim:
#use rs232(baud=9600, UART1,STREAM=xx1)
#use rs232(baud=9600, xmit=PIN_B6,rcv=PIN_B7,STREAM=xx2)
Então quando a interrupção INT_RDA chamar você tem um byte em RCREG para xx1.
E quando iniciar um start bit em xx2 ocorrera uma INT_RB então use a função GETC() que te retorna um byte.
Isso devera funcionar para baud rate baixos para maior velocidade recomendo duas UARTs.
HEHEHEHE!!!!!!
aureo.oliveira
Bit
 
Mensagens: 27
Registrado em: 11 Out 2006 19:28
Localização: Goiânia-Goiás

Mensagempor mhagnumdw » 27 Jun 2012 23:11

Estou com um PIC16F874A e tentando usar duas comunicações seriais. Esse PIC só possui uma UART. Estou usando o CCS.

Pra configurar as duas, fiz:
#use rs232(baud=9600, parity=N, UART1, bits=8, stream=XBEE)
#use rs232(baud=2400, parity=N, xmit=PIN_B5, rcv=PIN_B2, bits=8, stream=TECLADO)

Não recebe os dados da stream TECLADO. O que pode ser?
A ligação física no Proteus está: PIC <---> MAX232 <---> COMPIM
Imagem

--
MhagnumDw
Avatar do usuário
mhagnumdw
Bit
 
Mensagens: 49
Registrado em: 26 Out 2009 15:30

Mensagempor tcpipchip » 28 Jun 2012 06:30

Faltou habilitar DTR (DATA TERMINAL READY).

No PROTEUS, jogue em POWER.

TCPIPCHIP
Avatar do usuário
tcpipchip
Dword
 
Mensagens: 6560
Registrado em: 11 Out 2006 22:32
Localização: TCPIPCHIPizinho!

Mensagempor mhagnumdw » 28 Jun 2012 10:58

Fiz a ligação que você sugeriu e não deu certo.

Elaborei um novo esquema no Proteus só pra testar isso. Na imagem abaixo dá pra ver que mandei a string '01234567890' e recebi caracteres malucos.
Configuração: 2400bps, 8 data bits, paridade none, 1 stop bit.
Imagem

Não será porque o COMPIM trabalha com TTL enquanto o MAX232 espera os níveis de tensão de uma RS232?
Na interface RS232 o nível lógico "1" corresponde à uma tensão entre -3V e -12V e o nível lógico "0" à uma tensão entre 3V e 12V. Valores de tensão entre -3V e +3V são indefinidos e precisam ser evitados. O estado idle da linha é 1 lógico (-V).

Valeu!
--
MhagnumDw
Avatar do usuário
mhagnumdw
Bit
 
Mensagens: 49
Registrado em: 26 Out 2009 15:30

Mensagempor tcpipchip » 28 Jun 2012 16:17

Podes tirar o conversor ttl cmos....

E poe o DTR em VCC

TCPIPCHIP
Avatar do usuário
tcpipchip
Dword
 
Mensagens: 6560
Registrado em: 11 Out 2006 22:32
Localização: TCPIPCHIPizinho!

Mensagempor mhagnumdw » 28 Jun 2012 16:23

Beleza, assim sei que funciona.
Gostaria mesmo de ver o funcionamento no Proteus do MAX232.
Eu faço um jump entre as portas COM2 e COM1.
Gostaria de enviar um dado pela COM2 e ele ser recebido pelo COMPIM-MAX232 (COM1) e exibido no Virtual Terminal.

Eu tenho outra porta serial e faço a ligação conforme você disse (sem o MAX232) e funciona, faço a ligação diretamente pois o dispositivo serial (um XBee) é TTL.

Bom... valeu! Vou ver direto no hardware em breve.

--
MhagnumDw
Avatar do usuário
mhagnumdw
Bit
 
Mensagens: 49
Registrado em: 26 Out 2009 15:30

Mensagempor mhagnumdw » 11 Jul 2012 21:25

Problemas...

Esse teclado numérico RS232 (DB9) manda o caractere ASCII da tecla e usa o CTS/RTS. Liguei-o ao PIC (16F874A) por meio de um MAX232 mas sem sucesso! Curto-circuitei o CTS/RTS do teclado e também sem sucesso.
Esse teclado possui um led, que acende quando conecto o teclado ao PC, mas não quando conecto ao PIC.
Alguém tem ideia do que pode ser o problema???
A ligação PIC <---> MAX232 está ok!

Da DB9 só usei os pinos 2 (RX), 3 (TX) e 5 (GND). 7 (RTS) e 8 (CTS) curto-circuitei.

--
MhagnumDw
Avatar do usuário
mhagnumdw
Bit
 
Mensagens: 49
Registrado em: 26 Out 2009 15:30

Mensagempor andre_luis » 12 Jul 2012 07:08

O PC possui um padrão RS-232 e o PIC possui um padrão TTL.
Não seria essa a causa do problema ?


+++
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Mensagempor rafael l » 12 Jul 2012 10:56

mhagnumdw escreveu:Da DB9 só usei os pinos 2 (RX), 3 (TX) e 5 (GND). 7 (RTS) e 8 (CTS) curto-circuitei.
MhagnumDw


E cruzou 3 e 2 no outro plug DB9?

Esta na programação esta comparando o dado como ASCII ?

EX:

dado = Serial_in;

IF (dado == "a"){
//programa
}

IF (dado == "1"){
//programa
}
rafael l
Bit
 
Mensagens: 8
Registrado em: 19 Jun 2012 21:19

Mensagempor mhagnumdw » 12 Jul 2012 13:19

andre_teprom, mas estou usando um MAX232...

rafael l, tx e rx estão ok (vou colocar uma foto abaixo) e estou fazendo sim a comparação como ASCII.

Ligação:
Imagem

Configuração no CCS C (em negrito):
#use rs232(baud=9600, parity=N, UART1, bits=8, stream=XBEE)
#use rs232(baud=2400, parity=N, xmit=PIN_B5, rcv=PIN_B2, bits=8, stream=TECLADO)


--
MhagnumDw
Avatar do usuário
mhagnumdw
Bit
 
Mensagens: 49
Registrado em: 26 Out 2009 15:30

Mensagempor rafael l » 12 Jul 2012 15:44

Pode ser as interrupções para leitura do teclado, deve estar ativa para RB2 possa detectar o start bit em seguida deve desabilitar para o restante (9 bits )
rafael l
Bit
 
Mensagens: 8
Registrado em: 19 Jun 2012 21:19

Mensagempor andre_luis » 13 Jul 2012 07:19

mhagnumdw escreveu:andre_teprom, mas estou usando um MAX232...



Se estiver usando um conversor USB/Serial, o MAX-232 já tive problemas.
Resolveu somente com o MAX-233.


+++
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Mensagempor mhagnumdw » 09 Ago 2012 23:14

andre_teprom, o teclado deu certo usado o MAX232 mesmo. Depois posto aqui como ficou a pinagem.

Agora estou com um problema (mais um!), vou abrir um tópico!

--
MhagnumDw
Avatar do usuário
mhagnumdw
Bit
 
Mensagens: 49
Registrado em: 26 Out 2009 15:30

Anterior

Voltar para PIC

Quem está online

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

x