USB with EUSART transmission

Status
Not open for further replies.

jonathan_hank

New Member
Hi!
I am trying to send some data to PIC18F87J50 via EUSART and then transimnit the data to computer via USB.

The USB program I am using is Microchip USB firmware framework v2.2 USB keyboard prgram. and I write the EUSART function myself.
The two EUSART function is pasted below. I put EUSART_config_1() function in the main function before the while(1) loop and put the receiving_1() in the keyboard() function within the if condition
if(!HIDTxHandleBusy(lastTransmission)) so that if the received data is what I want I will transmit the data to computer like pressing a key. However the problem I am facing is that the EUSART seems cannot receive any data even I tried to continously receive 50 times.
Could any one tell me what step I need to add to implement the feature?



unsigned char receiving_1(void)
{
unsigned char tempx = 0;
//PIE1bits.RC1IE = 1; //enable interrupts
RCSTA1bits.SPEN = 1; // serial port enable
RCSTA1bits.SREN = 1; // serial port enable
RCSTA1bits.CREN = 1; // enable receiver
BAUDCON1bits.RCIDL = 1; // receiving operation is active
while(!PIR1bits.RC1IF) {}
tempx = RCREG1;
BAUDCON1bits.RCIDL = 0; // receiving operation is idle
RCSTA1bits.SPEN = 0; // serial port disable
RCSTA1bits.SREN = 0; // serial port enable
RCSTA1bits.CREN = 0; // disable receiver


//PIE1bits.RC1IE = 0; //disable interrupts
return tempx;
}

void EUSART_config_1(void)
{
TRISC |= 0b10000000;
//TRISG |= 0b00000100;
// RCSTA1bits.SPEN = 1;
//RCSTA2bits.SPEN = 1;
TXSTA1 = 0b00000100; //bit7_CSRC: don't care
//bit6_TX9: selects 8-bit transmission
//bit5_TXEN: transmit disable
//bit4_SYNC: Asynchronous mode
//bit3_SENDB: Sync Break transmission complete
//bit2_BRGH: high speed
//bit1_TRMT*: TSR full
//bit0_TX9D: disable 9th bit transmist data

RCSTA1 = 0b00000000; //bit7_SPEN: serial port disabled
//bit6_RX9: selects 8-bit reception
//bit5_SREN: don't care
//bit4_CREN: disable reveiver
//bit3_ADDEN: disables address detection
//bit2_FERR*: no framing error
//bit1_OERR*: overrun error
//bit0_RX8D: disable 9th bit of received data(useless)

BAUDCON1 = 0b00010000;//bit7_ABDOVF: no BRG rollover has occurred
//bit6_RCIDL*: receieve operation is idle
//bit5_DTRXP: receive data is not inverted
//bit4_SCKP:idle state for transmit is a low level
//bit3_BRG16: 8-bit baud rate generator-SPBRG1 only
//bit2: unimplemented
//bit1_WUE: RX1 pin is not monitored or rsing edge detected
//bit0_ABDEN: baud rate measurement disabled or completed
SPBRG1 = 77; //baud rate set to 9600 for 12MHz, high speed
}
 
Status
Not open for further replies.
Cookies are required to use this site. You must accept them to continue using the site. Learn more…