hello every body .
how can i configure the stop bits,parity and flow control in c18 for uart?
vloki wrote:What is the BAUDRATE and clk frequency of your pic ?
Do you use interrupt for the receiver ?
putrsUSART("AT\r");Delay10KTCYx(200);
putrsUSART("ATD09133957792;\r");Delay10KTCYx(200);
while(1)
{
if(RCSTAbits.OERR==1){putrsXLCD("hi");RCSTAbits.CREN=0;Delay10KTCYx(50);RCSTAbits.CREN=1;}
while (!DataRdyUSART());
recieved_data=ReadUSART();
putcXLCD(recieved_data);
}
if (IR_USART) // -------------------------------------------------- USART_IR
{
if (RCSTA1bits.OERR) // check overflow error
{
rxBuffer.bytes[0] = RCREG; // clear the receiver fifo
rxBuffer.bytes[0] = RCREG;
rxBuffer.idx = 0;
RCSTA1bits.CREN = 0; // clear the OVR flag
RCSTA1bits.CREN = 1;
// PC_inPck.ID.all = ERRFLAG; // send (prepare) error message
// PC_inPck.Size = 2;
// PC_inPck.Bytes[0] = SERR | SERR_OVR;
// PC_inPck.Flags.CMDTODO = 1;
return;
}
if (RCSTA1bits.FERR) // check framing error
{
rxBuffer.bytes[0] = RCREG; // clear the receiver fifo
rxBuffer.idx = 0;
// PC_inPck.ID.all = ERRFLAG; // send (prepare) error message
// PC_inPck.Size = 2;
// PC_inPck.Bytes[0] = SERR | SERR_FRAME;
// PC_inPck.Flags.CMDTODO = 1;
return;
}
if (DataRdy1USART()){ //-------------------- new byte received ###
if(rxBuffer.idx < MAX_RX_BUFFER){
rxBuffer.bytes[rxBuffer.idx++] = RCREG;
}
else{
status.rxOVF = 1;
}
}
return;//IR_USART
}
// new bytes from PC -----------------------------------------------------------
if(rxBuffer.idx){ //###TODO### ERROR overflow !!!
mDIS_IR_USART();
RXbyteImport(rxBuffer.bytes[0]);
rxBuffer.idx--;
for(i=0;i<=rxBuffer.idx;i++){
rxBuffer.bytes[i] = rxBuffer.bytes[i+1];
}
mEN_IR_USART();
// status.rxOVF = 0;
}
// new bytes from PC -----------------------------------------------------------
if(rxBuffer.idx){ //###TODO### ERROR buffer overflow !!!
mDIS_IR_USART();
received_data = rxBuffer.bytes[0];
rxBuffer.idx--;
for(i=0;i<=rxBuffer.idx;i++){
rxBuffer.bytes[i] = rxBuffer.bytes[i+1];
}
mEN_IR_USART();
putcXLCD(recieved_data);
}
struct s_rxBuffer{ // receiver buffer
unsigned char idx;
unsigned char bytes[MAX_RX_BUFFER];
...
struct s_rxBuffer rxBuffer; // vom PC empfangene Bytes
};
Users browsing this forum: No registered users and 2 guests