Comunicação serial entre PIC's 16F877A - resolvido

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Comunicação serial entre PIC's 16F877A - resolvido

Mensagempor alexhnunes » 13 Nov 2008 16:14

Boa tarde.
Estou com o seguinte problema: necessito fazer um painel de sinalização (são 03), sendo que existirá dois que controlam (um liga e outro desliga) e outro que só servirá de visualização.
Já desenvolvi o programa em CCS. Os botões de acionamento, além de ligarem os "led's" respectivos, enviam o protocolo corretamente.
O problema está no recebimento da serial (estou utilizando RS485). Na simulação e no circuito real, tentei utilizar a instrução kbhit seguida de um gets() (já tentei o getc() tbm, sem sucesso) e depois tentei fazer uma int_rda, que tbm não funciona (mesmo com as habilitações "global|int_rda"). O programa roda perfeitamente e não trava, ele só não está pegando os dados quando escrevo na serial.
Poderia ser algum fusível configurado erroneamente?

Grato pela ajuda
Alexandre
Editado pela última vez por alexhnunes em 19 Nov 2008 13:22, em um total de 1 vez.
Alexandre Nunes
alexhnunes
Nibble
 
Mensagens: 59
Registrado em: 28 Mai 2007 10:04
Localização: Campinas - SP

Mensagempor tcpipchip » 14 Nov 2008 15:39

Ta com cara de OVERRUN...
Pelo menos recebe um caractere ????
Veja em negrito...
Eu fiz este programa 10 anos atras no CCS e funcionava bem a serial...

#use RS232 (BAUD=19200,XMIT=PIN_C6,RCV=PIN_C7,RESTART_WDT,PARITY=N,BITS=8)

#bit cren = 0x18.4 // Continuous recive bit
#bit ferr = 0x18.2 // Framing Error bit
#bit oerr = 0x18.1 // Overrun Error bit
#bit adden = 0x18.3


char timed_getc() {

long timeout;

unsigned char car_temp;

timeout_error=FALSE;

timeout=0;

while(!kbhit()&&(++timeout<5000)) // 1/2 second

delay_us(10);

if(kbhit())
{
car_temp=getc();
if(oerr)
{
cren=0;
cren=1;
adden=1;
}
return(car_temp);
}

else {

timeout_error=TRUE;

return(0);

}

}

Eu implementei um GETC com TIMEOUT
Avatar do usuário
tcpipchip
Dword
 
Mensagens: 6560
Registrado em: 11 Out 2006 22:32
Localização: TCPIPCHIPizinho!

Mensagempor alexhnunes » 19 Nov 2008 13:19

Obrigado, tcpipchip!

Resolvi o problema, era um comando para limpar a serial que eu havia incluído, porém não tinha mudado a quantidade de caracteres que ela deveria limpar, estava a mais. Depois que acertei isso, o programa voltou a funcionar legal...

Grato
Alexandre Nunes
alexhnunes
Nibble
 
Mensagens: 59
Registrado em: 28 Mai 2007 10:04
Localização: Campinas - SP


Voltar para PIC

Quem está online

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

x