PIC falando RS232 (com o PC) e RS485 (demais eqptos)

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Mensagempor Luis.C » 26 Out 2007 12:46

olá ffkammer,

não sou nenhum especialista em comunicação serial, mas 1x vi um esquema para o controle do conversor 485 ( que liga ao PIC),
onde utiliza-se algumas portas lógicas com saída Sh T., e na entrada do Circuito entra o próprio sinal de Dados (do uP) e a saída é ligada ao
controle do MAX485. Isso funciona como o "Autoflow" que alguns dispositivos possuem; ou seja ele sempre fica habilitado para Rx, quando começa a transmitir, o sinala, habita o circuto p/ Tx.
Get it?
Luis.C
 
Mensagens: 1
Registrado em: 14 Mai 2007 11:34

Mensagempor xultz » 26 Out 2007 14:35

Isso funciona somente em velocidade muito baixas de transmissão.
Num projeto que fiz a 115200, eu tinha que dominar o barramento, esperar um tempo (eu não lembro o valor que achei, mas foi na tentativa e erro), para depois começar a transmitir. Se não desse esse tempo, sempre perdia os primeiros bits.
O que eu fucei no circuito do conversor RS232 <> RS485, ele tem uma fila que armazena alguns bits, quando recebe um byte a transmitir, ele empilha, domina o barramento e vai desempilhando enquanto recebe.
98% das vezes estou certo, e não estou nem aí pros outros 3%.
Avatar do usuário
xultz
Dword
 
Mensagens: 3001
Registrado em: 13 Out 2006 18:41
Localização: Curitiba

Mensagempor ffkammer » 07 Nov 2007 08:32

Bom dia lellis, desculpe pela demora, mas estive ausente estes dias, muito obrigado pela sua ajuada, irei testar estas rotinas que você me passou.

Grande abraço
ffkammer
Bit
 
Mensagens: 23
Registrado em: 18 Out 2007 18:24

Mensagempor ffkammer » 07 Nov 2007 08:52

xultz escreveu:Isso funciona somente em velocidade muito baixas de transmissão.
Num projeto que fiz a 115200, eu tinha que dominar o barramento, esperar um tempo (eu não lembro o valor que achei, mas foi na tentativa e erro), para depois começar a transmitir. Se não desse esse tempo, sempre perdia os primeiros bits.
O que eu fucei no circuito do conversor RS232 <> RS485, ele tem uma fila que armazena alguns bits, quando recebe um byte a transmitir, ele empilha, domina o barramento e vai desempilhando enquanto recebe.


Bom dia xultz,

Desculpe pela demora, mas estava ausente estes dias.

Mais uma pequena dúvida, agora no conversor RS232 para RS485:
Para que um dispositivo transmita ou receba informações da rede RS485 eu preciso alternar o status de um dos pinos do integrado MAX485 (estamos fazendo o conversor com um esquema que pegamos na internet). Na sua idéia de mestre/escravo, todos os equipamentos ficam preparados para ouvir (escravos) e após um deles receber as informações corretas precisará transmitir a resposta para o PC. Como você sugere que seja feito este controle do pino do MAX485? O PIC que esta no equipamento, após receber as informações necessárias e processá-las, muda o status deste pino para iniciar a transmissão e logo em seguida colocá-o para ouvir a rede?

Grato novamente
ffkammer
Bit
 
Mensagens: 23
Registrado em: 18 Out 2007 18:24

Mensagempor xultz » 07 Nov 2007 12:01

Exatamente isto.
Numa topologia mestre-escravo em RS485, você deve seguir duas regras:
1 - a rede fica rescessiva o tempo todo que ninguém estiver transmitindo (mesmo o mestre, se ele vai ficar sem transmitir por algum motivo, ele deixa a rede rescessiva)
2 - um dispositivo só responde quando for perguntado, e para isso ele coloca o sinal no pino do MAX485, transmite, e tira o sinal deixando a rede rescessiva.

NT: rede rescessiva: todos os MAX485 estão com o pino ENABLE em nível baixo, deixando-o assim em modo de recepção, e ninguém pode falar no barramento. O contrário disso se diz rede dominada, ou seja, um (e somente um) dispositivo colocou seu MAX485 em mode de transmissão e dessa forma pode transmitir bytes.
98% das vezes estou certo, e não estou nem aí pros outros 3%.
Avatar do usuário
xultz
Dword
 
Mensagens: 3001
Registrado em: 13 Out 2006 18:41
Localização: Curitiba

Mensagempor ffkammer » 07 Nov 2007 14:02

Obrigado xultz,

Mas agora complicou um pouquinho a parte do micro.

Se você diz que eu terei que controlar isto através de meu software vai me enrolar, pois não tenho conhecimento de como fazê-lo.

No lado do micro o que estou fazendo é basicamente utilizar a serial do PC à MAX232 que por sua vez é ligado à um MAX485 para fazer a conversão RS232 para RS485. Não tenho a mínima idéia de como posso fazer para setar apenas um pino do MAX485.

No link abaixo você pode ver o conversor que estou usando para que o PC fale na rede RS485, mas estou apanhando para saber como posso fazer o meu software setar o pino de enabled. Só pelo fato do conversor estar com o RTS ligado já não é feita a ativação do pino do MAX485 automaticamente quando alguma coisa for transmitida via serial?

http://aquaticus.info/rs485_to_rs232
ffkammer
Bit
 
Mensagens: 23
Registrado em: 18 Out 2007 18:24

Mensagempor xultz » 07 Nov 2007 17:10

Cara, na teoria sim, na prática não. Eu já medi com o scope, testei várias configurações da serial do PC, e o RTS sempre ficava no mesmo nível.
Porém, mesmo configurando a porta serial para handshake nenhum, você pode manipular o sinal de RTS manualmente (pelo software). No Windows eu não sei fazer, em Delphi então, pfff... mas em Linux eu fiz bastante isso.
Ou, você pode comprar um conversor 232 <> 485 (como por exemplo este: http://www.lri.com.br/2007/mostra_Produ ... o=1&id=321 que já usei e recomendo, é muito bom) que faz isto automaticamente: você envia dados pela serial, ele domina o barramento e converte para 485, você pára de enviar dados, ele deixa o barramento rescessivo automaticamente também.
98% das vezes estou certo, e não estou nem aí pros outros 3%.
Avatar do usuário
xultz
Dword
 
Mensagens: 3001
Registrado em: 13 Out 2006 18:41
Localização: Curitiba

Anterior

Voltar para PIC

Quem está online

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

x