Exemplo n.º 1
0
void initializeUsb(UsbDevice* usbDevice) {
    initializeUsbCommon(usbDevice);
    usbDevice->device = USBDevice(usbCallback);
    usbDevice->device.InitializeSystem(false);
    setGpioDirection(0, USB_VBUS_ANALOG_INPUT, GPIO_DIRECTION_INPUT);
    debug("Done.");
}
Exemplo n.º 2
0
int usermain(void)
{
    setGpioDirection(GPIO0_7,GPIO_OUT); //led
    
    
    // Initialize uart0 and set debugger interface
    initUART0();
    setDebugInterface(sendByteToUART0);
    
    debugPrintf("lpc13xx is running !\r\n");
    
    
    // Power down usb clock
    SETBIT(LPC_SYSCON->PDRUNCFG,10);
    SETBIT(LPC_SYSCON->PDRUNCFG,8);
    

    newThread(led,512,10,5);
//    newThread(PRS_I2CComm,512,10,4);

   
    
    return 0;
}
Exemplo n.º 3
0
UInt8 initSensorPRS(SensorType mtype, GPIO_PIN pin)
{
    //UInt8 * i2caddrbuffer;
    UInt8 i2caddrbuffer[3];
    UInt8 replybuffer[3];
    //UInt8 * checkbuffer;
    UInt8 checkbuffer[8];
    UInt8 repcheckbuffer[8];
    UInt32 i = 0;
    UInt32 i2cdatalength;
    UInt8 i2caddr = DEFAULT_ADDR;

    replybuffer[0] = I2C_ACK_HEADER;
    replybuffer[1] = mtype;
    replybuffer[2] = mtype;

    setGpioDirection(pin,GPIO_IN);

    TRACE_PRS(("InitSensorPRS: waiting for high pin state\r\n"));    
    while(getGpioValue(pin)==0);

    TRACE_PRS(("InitSensorPRS: waiting for low pin state\r\n"));
    while(getGpioValue(pin)==1);

    TRACE_PRS(("InitSensorPRS: Init i2c slave to %x\r\n", DEFAULT_ADDR));
    initSlaveI2C0(DEFAULT_ADDR, I2C_400_KHZ);

    
    TRACE_PRS(("InitSensorPRS: waiting for addr packet\r\n"));
   
    i2cdatalength=getBufferFromMasterI2C0(i2caddrbuffer, 3);
    
    TRACE_PRS(("InitSensorPRS: i2cdatalength = %x\r\n", i2cdatalength));
    
    if(i2cdatalength == 3)
    {
        //DebugPrintf("i2caddrbuffer[1] = %x\r\n", i2caddrbuffer[1]);
        if(i2caddrbuffer[0] == PK_HEADER)
        {
            //DebugPrintf("[0] = PK_HEADER\r\n");
            if(i2caddrbuffer[1] == i2caddrbuffer[2] )
            {
                //DebugPrintf("[1] = [2]\r\n");
                i2caddr = i2caddrbuffer[1];
                TRACE_PRS(("new addr = 0x%x\r\n", i2caddr));
                
                initSlaveI2C0(i2caddr, I2C_400_KHZ);
                
                //DebugPrintf("sending ack packet\r\n");
                setBufferToMasterI2C0(replybuffer, 3);

                i2cdatalength = getBufferFromMasterI2C0(checkbuffer, 8);
                
                if(i2cdatalength == 8)
                {
                    //DebugPrintf("return 8 test bytes to master\r\n");
                    for(i=0;i<8;i++)
                    {
                        repcheckbuffer[i] = checkbuffer[i];
                    }
                    setBufferToMasterI2C0(repcheckbuffer, 8);
                    
                    TRACE_PRS(("[END] - new addr is 0x%x\r\n", i2caddr));
                    
                    return i2caddr;
                }//if(i2cdatalength == 8)
            }//if(i2caddrbuffer[1] == i2caddrbuffer[2] )
        }//if(i2caddrbuffer[0] == PK_HEADER)
    }//if(i2cdatalength == 3)


    TRACE_PRS(("InitSensorPRS failed !\r\n"));
    
    //if error, halt i2c
    haltSlaveI2C0();
    
    return 0;

}