Página 1 de 1

Comunicação UART entre 2 PIC's com mikroC PRO PIC

MensagemEnviado: 24 Mar 2010 09:41
por Samuel
Olá pessoal!
Estou tentando fazer a comunicação entre 2 PIC's (18F4550) pela UART1. O pic escravo reconhece que foi enviado 1 Byte, porém seu valor é sempre 0xFF. Alguém já teve algum problema semelhante?

// Recebe Byte - Escravo
void main() {

PortE.f0 = 1; //led
UART1_Init(9600); // Inicializa - 9600 bps
Delay_ms(100);
//
while(1){
if(UART1_Data_Ready()){
byte_read = UART1_Read();
PortE.f0 = 0;//sinaliza byte recebido!!
ByteToStr(Byte_read, txt);
Lcd_Out(2, 10, txt);
Delay_ms(400);}
PortE.f0 = 1;
}//while
//
} //
//** Fim **


//Envia Byte - Mestre
void main() {
//
UART1_Init(9600); // Inicializa - 9600 bps
Delay_ms(100);
//
while(1){
while(!PortC.f0){
if(UART1_Tx_Idle() == 1){
UART1_Write('$');
Delay_ms(50);}
}
while(!PortC.f1){
if(UART1_Tx_Idle() == 1){
UART1_Write('1');
Delay_ms(50);}
}
while(!PortC.f2){
if(UART1_Tx_Idle() == 1){
UART1_Write('2');
Delay_ms(50);}
}
}
//
}
//** Fim **

Agradeço qualquer ajuda. :D

MensagemEnviado: 24 Mar 2010 10:37
por fabim
Samuel, abra o datasheet do 4550 vai em USART, lá vai explicar sobre um registrador que indica erros, e com este registrador você vai descobrir se é caca.
e qual caca é.

Fabim

MensagemEnviado: 27 Mar 2010 12:44
por Samuel
Valeu a dica Fabim!

Consegui resolver, segue a solução:

Configuration Bits:

96MHz PLL Prescaler - Divide by 2 (8MHz input)
CPU System Clock Postcaler - [OSC1/OSC2 Src: /1][96MHz PLL Src: /2]
Full-Speed UB Clock Source Selection - Clock srr from 96MHz PLL/2
Oscilator - HS: USB-HS

Abraços.