//returns 1 if USB is powered int read_usb_power(void) { unsigned int read_val; LPC_USB->DevIntClr = 0xC00; // Clear both CCEMPTY & CDFULL LPC_USB->CmdCode = 0x00FE0500; // CMD_CODE=0xF5, CMD_PHASE=0x05(Command) while (!(LPC_USB->DevIntSt & 0x400)); // Wait for CCEMPTY. LPC_USB->DevIntClr = 0x400; // Clear CCEMPTY interrupt bit. LPC_USB->CmdCode = 0x00FE0200; // CMD_CODE=0xF5, CMD_PHASE=0x02(Read) while (!(LPC_USB->DevIntSt & 0x800)); // Wait for CDFULL. LPC_USB->DevIntClr = 0x800; // Clear CDFULL. read_val = LPC_USB->CmdData; // Read Frame number LSB byte. if(read_val & 0x01) //CON = connected = power { return (1); } else { return(0); } } |
//returns 1 if USB is powered int read_usb_power(void) { unsigned int read_val; LPC_USB->DevIntClr = 0xC00; // Clear both CCEMPTY & CDFULL LPC_USB->CmdCode = 0x00FE0500; // CMD_CODE=0xFE, CMD_PHASE=0x05(Command) while (!(LPC_USB->DevIntSt & 0x400)); // Wait for CCEMPTY. LPC_USB->DevIntClr = 0x400; // Clear CCEMPTY interrupt bit. LPC_USB->CmdCode = 0x00FE0200; // CMD_CODE=0xFE, CMD_PHASE=0x02(Read) while (!(LPC_USB->DevIntSt & 0x800)); // Wait for CDFULL. LPC_USB->DevIntClr = 0x800; // Clear CDFULL. read_val = LPC_USB->CmdData; // Read data if(read_val & 0x01) //CON = connected = power { return (1); } else { return(0); } } |