Problemas com RDA e RDA2 juntas

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Problemas com RDA e RDA2 juntas

Mensagempor hemasc » 22 Fev 2013 17:33

Olá senhores!

Estou tentando trabalhar com duas seriais no mesmo PIC, mas estou tendo dificuldades com algumas coisas.
Utilizo o CCS V4.120 e PIC 18F87K90

Testei a RDA e funciona perfeitamente, o problema começa quando incluo a outra serial RDA2.

Ambas RDAs estão ligadas e também fiz a função para receber os dados qdo chegam na serial. Abaixo outras config que fiz.

#use rs232(baud=9600, xmit=PIN_C6,rcv=PIN_C7,ERRORS,UART1,STREAM=COMM_1,enable=PIN_B4)

#use rs232(baud=9600, xmit=PIN_G1,rcv=PIN_G2,ERRORS,UART2,STREAM=COMM_2)

Quando eu não configuro a stream da RDA2, consigo receber dados nela tranquilamente. Por ex:
#use rs232(baud=9600, xmit=PIN_G1,rcv=PIN_G2,ERRORS,UART2)

Mas se eu não configurar a stream, não tem como eu avisar o PIC em qual serial ele deve enviar os dados.

E quando a stream é configurada, ao receber um dado da RDA2 o firmware fica travado na linha
#use rs232(baud=9600, xmit=PIN_C6,rcv=PIN_C7,ERRORS,UART1,STREAM=COMM_1,enable=PIN_B4)

Peguei vários exemplos na internet e não consigo avançar.
hemasc
Nibble
 
Mensagens: 80
Registrado em: 26 Fev 2007 08:59
Localização: Campinas - SP

Re: Problemas com RDA e RDA2 juntas

Mensagempor andre_luis » 22 Fev 2013 22:50

Há relatos na Web acerca de BUG no comando enable da API #use rs232(.
Pessoalmente, nunca usei.


+++
"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 vtrx » 23 Fev 2013 09:02

Troque de 'compilador'.
Avatar do usuário
vtrx
Dword
 
Mensagens: 2239
Registrado em: 20 Abr 2008 21:01

Mensagempor andre_luis » 23 Fev 2013 12:38

vtrx escreveu:Troque de 'compilador'.


Isso não ajuda muito na solução do problema apresentado.
O que me referi é que nunca usei a diretiva enable dessa API.
"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 vtrx » 23 Fev 2013 16:33

Essas diretrizes do CCS não garantem que esteja usando a segunda UART por HArdware,me parece que é por software(ponto negativo).
Teria que verificar o 'manual 'do CCS...
Avatar do usuário
vtrx
Dword
 
Mensagens: 2239
Registrado em: 20 Abr 2008 21:01

Mensagempor andre_luis » 23 Fev 2013 17:21

Por definição do compilador CCS, o padrão é a implementação das 2 UARTs por HW se os pinos escolhidos forem aqueles dos módulos nativos.
Esse é o caso do PIC18F87K90, cujas UART 1,2 correspondem aos pinos C6/C7 e G1/G2.




+++
"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 vtrx » 23 Fev 2013 21:56

òtimo então,voce deve solucionar brevemente o problema do colega com suas informações sobre o CCS.
Quando voce relata:
Há relatos na Web acerca de BUG no comando enable da API #use rs232(.

Isso quer dizer que o compilador não vai produzir código(hora de trocar de compilador)ou poderia éle terá que ficar em 'stand-by' indefinido?
Avatar do usuário
vtrx
Dword
 
Mensagens: 2239
Registrado em: 20 Abr 2008 21:01

Mensagempor andre_luis » 23 Fev 2013 23:55

A sua sugestão por trocar de compilador está fora do escopo daquilo que foi pedido pelo colega.

Minha contribuição não teve a pretensão de resolver o problema, mas alertar que o uso do comando enable pode ser a causa do problema.

A decisão de descartar o uso do compilador, fica á critério do colega, esgotadas todas as opções de contorno que forem sugeridas.

A propósito, não sou expert no CCS, apesar de já ter feito programas bem completos e com sucesso no mesmo.

A propósito, não é apenas a API de comunicação do CCS que apresenta problemas, mas o próprio printf, é pivot de muita dor de cabeça em outros compiladores.

Por favor, vamos evitar criar polêmica desnecessária, ok ?



+++
"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 hemasc » 28 Fev 2013 16:42

Bem, obrigado pela colaboração e atenção de andre_teprom e vtrx.

Trocar de compilador, atualmente, é algo inviável, pois meu código possui mais de 17 mil linhas.

Acabei encontrando uma solução em um site, mas não tenho osciloscópio para garantir que as comunicações estão sendo feitas apenas em uma das saídas seriais.

Na UART1 faço uma comunicação MODBUS e na UART2 uma comunicação com um protocolo próprio.

Vale ressaltar que não coloquei osciloscópio confirmando que quando envio dados na UART2, ele também não sai na UART1.

Fiz as configuração da seguinte forma e ambas comunicaram legal com os softwares.

na UART1 mantive:
#use rs232(baud=9600,xmit=pin_c6,rcv=pin_c7,errors,stream=COMM_1,enable=PIN_B4)

na UART2 fiz as funções próximas umas as outras:

#use rs232(baud=9600, xmit=pin_g1, rcv=pin_g2)
void put_to_2(char c)
{
putc(c);
}

#int_RDA2 //HIGH
void RDA_isr2(void)
{
//////
}

utilizo esta função para a UART2
put_to_2(buffer_saida[0]);

e este comando para a UART1
fputC(Comm1.y, COMM_1);

fonte: http://www.ccsinfo.com/faq.php?page=multiple_rs232
hemasc
Nibble
 
Mensagens: 80
Registrado em: 26 Fev 2007 08:59
Localização: Campinas - SP


Voltar para PIC

Quem está online

Usuários navegando neste fórum: Bing [Bot] e 1 visitante

x