PIC<->PIC USART + CCS

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

PIC<->PIC USART + CCS

Mensagempor Flaviofrc » 13 Jul 2009 13:07

Olá pessoal.

Estou precisando de uma ajudinha com uma experiencia que estou fazendo.

Estou conectando dois PICs via USART mas estou enfrentando problemas de comunicação entre eles, talvez vocês possam me dar uma Luz.... :idea:

O primeiro é um PIC16F877A com duas UARTs denominadas como STREAM: IHM e dacpic.

O segundo PIC16F628A com um UART sem denominação de STREAM.

O processo é o seguinte: Eu envio uma string do PC para o PIC16F877A que por sua vez repassa essa mesma string sem alteração para o PIC 16F628A que tambem por sua vez ECOA a mesma string de volta para o 877A que tambem por sua vez devolve a string para o PC.

Teoricamente bem simples.

O problema é o seuinte:

Quando envio a String para 877A está é enviada para para o 628A, isto eu comprovei com o auxilio de outro PC "bisbilhotando" a comunicação entre eles.
Quando o 628 responde, envia a string um pouco diferente de volta para o 877A, porem este ultimo não envia nada para o PC....

O codigo feito em CCS segue abaixo:

Trecho do 16F877A:
.
.
.
#use rs232(baud=9600,parity=N,xmit=PIN_D4,rcv=PIN_D5,bits=8, stream=dacpic, ERRORS)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8, stream=IHM, ERRORS)
.
.
.
while(true)
{
while(!kbhit(IHM));
if(kbhit(IHM))
{
fgets(temp,IHM);
fputs(temp,dacpic);
while (!kbhit(dacpic));
if (kbhit(dacpic))
{
fgets(tempdac,dacpic);
fputs(tempdac,IHM);
}
}
}
Lado do PIC16F628A:

#use rs232(baud=9600,parity=N,xmit=PIN_B2,rcv=PIN_B1,bits=8, ERRORS)
.
.
.
while(true)
{
while(!kbhit());
if (kbhit())
{
gets(code);
puts(code);
}
}


Desde já agradeço a quem puder me ajudar com esse problema
Flavio
Flaviofrc
Byte
 
Mensagens: 111
Registrado em: 16 Out 2006 17:32
Localização: São Paulo

Mensagempor tcpipchip » 13 Jul 2009 17:22

Voce manda \n no final para o fgets ler ?
Avatar do usuário
tcpipchip
Dword
 
Mensagens: 6560
Registrado em: 11 Out 2006 22:32
Localização: TCPIPCHIPizinho!

Mensagempor Flaviofrc » 13 Jul 2009 18:43

tcpipchip escreveu:Voce manda \n no final para o fgets ler ?


Bem, eu fiz uma experiencia nesse meio tempo.

Eu uso uma função do VB que envia uma string para o 877A este por sua vez recebe a string e no mesmo momento envio (fputs(x,x)de volta para o PC que recebe perfeitamente sem nenhum erro....

Parece-me que o erro está no recebimento da string pelo 628A que quando recebida envia devolta para o 877A e se perde sei-la como...

Pelo Help do CCS a função Fputs(string,stream) adiciona os caracteres (avanço de linha(10) e retorno de carro (13)).
Flavio
Flaviofrc
Byte
 
Mensagens: 111
Registrado em: 16 Out 2006 17:32
Localização: São Paulo

Mensagempor Paulo_P » 18 Jul 2009 12:54

Estou com este mesmo problema.

No PC tenho conectado um conversor com MAX232, estou enviando um dado para o pino RX do PIC, e aguardo ele ecoar de volta e nada acontece !

Estou utilizando o C CCS com os comandos "printf()" e "getc()", enviando em ascii.

Se alguém puder ajudar, obrigado.

Paulo
Paulo_P
Bit
 
Mensagens: 23
Registrado em: 24 Mar 2007 14:31
Localização: São Paulo (capital)


Voltar para PIC

Quem está online

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

cron

x