コード例 #1
0
ファイル: system.c プロジェクト: timwuu/PK3SP24
/*********************************************************************
* Function: void SYSTEM_Initialize( SYSTEM_STATE state )
*
* Overview: Initializes the system.
*
* PreCondition: None
*
* Input:  SYSTEM_STATE - the state to initialize the system into
*
* Output: None
*
********************************************************************/
void SYSTEM_Initialize( SYSTEM_STATE state )
{
    //On the PIC24FJ64GB004 Family of USB microcontrollers, the PLL will not power up and be enabled
    //by default, even if a PLL enabled oscillator configuration is selected (such as HS+PLL).
    //This allows the device to power up at a lower initial operating frequency, which can be
    //advantageous when powered from a source which is not gauranteed to be adequate for 32MHz
    //operation.  On these devices, user firmware needs to manually set the CLKDIV<PLLEN> bit to
    //power up the PLL.
    {
        unsigned int pll_startup_counter = 600;
        CLKDIVbits.PLLEN = 1;
        while(pll_startup_counter--);
    }

    switch(state)
    {
        case SYSTEM_STATE_USB_HOST:
            PRINT_SetConfiguration(PRINT_CONFIGURATION_UART);

            break;
            
        case SYSTEM_STATE_USB_HOST_HID_KEYBOARD:
            LED_Enable(LED_USB_HOST_HID_KEYBOARD_DEVICE_READY);

            //also setup UART here
            PRINT_SetConfiguration(PRINT_CONFIGURATION_UART);
            //timwuu 2015.04.11 LCD_CursorEnable(true);

            TIMER_SetConfiguration(TIMER_CONFIGURATION_1MS);

            break;
    }
}
コード例 #2
0
ファイル: system.c プロジェクト: kerikun11/MPLABXProjects
/*********************************************************************
* Function: void SYSTEM_Initialize( SYSTEM_STATE state )
*
* Overview: Initializes the system.
*
* PreCondition: None
*
* Input:  SYSTEM_STATE - the state to initialize the system into
*
* Output: None
*
********************************************************************/
void SYSTEM_Initialize( SYSTEM_STATE state )
{
    switch(state)
    {
    case SYSTEM_STATE_USB_HOST:
        ANSELA = 0x0000;
        ANSELB = 0x0000;
        ANSELC = 0x0000;
        ANSELD = 0x0000;
        ANSELE = 0x0000;
        ANSELG = 0x0000;

        // Configure the device PLL to obtain 60 MIPS operation. The crystal
        // frequency is 8MHz. Divide 8MHz by 2, multiply by 60 and divide by
        // 2. This results in Fosc of 120MHz. The CPU clock frequency is
        // Fcy = Fosc/2 = 60MHz. Wait for the Primary PLL to lock and then
        // configure the auxilliary PLL to provide 48MHz needed for USB
        // Operation.

        PLLFBD = 58;                        /* M  = 60  */
        CLKDIVbits.PLLPOST = 0;             /* N1 = 2   */
        CLKDIVbits.PLLPRE = 0;              /* N2 = 2   */
        OSCTUN = 0;

        /*	Initiate Clock Switch to Primary
         *	Oscillator with PLL (NOSC= 0x3)*/
        __builtin_write_OSCCONH(0x03);
        __builtin_write_OSCCONL(0x01);

        while (OSCCONbits.COSC != 0x3);

        // Configuring the auxiliary PLL, since the primary
        // oscillator provides the source clock to the auxiliary
        // PLL, the auxiliary oscillator is disabled. Note that
        // the AUX PLL is enabled. The input 8MHz clock is divided
        // by 2, multiplied by 24 and then divided by 2. Wait till
        // the AUX PLL locks.

        ACLKCON3 = 0x24C1;
        ACLKDIV3 = 0x7;

        ACLKCON3bits.ENAPLL = 1;
        while(ACLKCON3bits.APLLCK != 1);

        PRINT_SetConfiguration(PRINT_CONFIGURATION_LCD);
        LED_Enable(LED_USB_HOST_HID_MOUSE_DEVICE_READY);
        break;

    case SYSTEM_STATE_USB_HOST_HID_MOUSE:
        PRINT_SetConfiguration(PRINT_CONFIGURATION_LCD);
        LCD_CursorEnable(true);

        TIMER_SetConfiguration(TIMER_CONFIGURATION_1MS);

        break;
    }
}
コード例 #3
0
ファイル: system.c プロジェクト: kerikun11/MPLABXProjects
/*********************************************************************
* Function: void SYSTEM_Initialize( SYSTEM_STATE state )
*
* Overview: Initializes the system.
*
* PreCondition: None
*
* Input:  SYSTEM_STATE - the state to initialize the system into
*
* Output: None
*
********************************************************************/
void SYSTEM_Initialize( SYSTEM_STATE state )
{
    switch(state)
    {
        case SYSTEM_STATE_USB_HOST:
            PRINT_SetConfiguration(PRINT_CONFIGURATION_OLED);
            LED_Enable(LED_USB_HOST_HID_MOUSE_DEVICE_READY);
            break;
            
        case SYSTEM_STATE_USB_HOST_HID_MOUSE:
            PRINT_SetConfiguration(PRINT_CONFIGURATION_LCD);
            TIMER_SetConfiguration(TIMER_CONFIGURATION_1MS);
            break;
    }
}
コード例 #4
0
ファイル: system.c プロジェクト: timwuu/PK3SP24
/*********************************************************************
* Function: void SYSTEM_Initialize( SYSTEM_STATE state )
*
* Overview: Initializes the system.
*
* PreCondition: None
*
* Input:  SYSTEM_STATE - the state to initialize the system into
*
* Output: None
*
********************************************************************/
void SYSTEM_Initialize( SYSTEM_STATE state )
{
    switch(state)
    {
        case SYSTEM_STATE_USB_HOST:
            PRINT_SetConfiguration(PRINT_CONFIGURATION_RAM_BUFFER);
            break;
            
        case SYSTEM_STATE_USB_HOST_HID_KEYBOARD:
            LED_Enable(LED_USB_HOST_HID_KEYBOARD_DEVICE_READY);

            PRINT_SetConfiguration(PRINT_CONFIGURATION_RAM_BUFFER);

            TIMER_SetConfiguration(TIMER_CONFIGURATION_1MS);

            break;
    }
}