Continue to Site

Welcome to our site!

Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.

  • Welcome to our site! Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.

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.

Latest threads

New Articles From Microcontroller Tips

Back
Top