void main(void)
{ 
    //unsigned long ulTmp = 0;

    /********************** Configure System clock *************************/
    SysCtlClockSet(100000000, SYSCTL_OSC_INT | SYSCTL_XTAL_12_MHZ);
    SysCtlDelay(TICK_SLOW);

    // Configure LED(PC3) pin
    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC);
    xGPIOSPinTypeGPIOOutput(PC3);

    // Turn off LED
    GPIOPinClr(GPIOC_BASE, GPIO_PIN_3);

    // Disable NVIC RTC interrupt
    xIntDisable(xINT_RTC);
    RTCDisable();
    RTCIntCallbackInit(RTCHandler);

    // Enable RTC second increment interrupt.
    // Enable RTC minute interrupt.
    RTCIntCfg( INT_SEC_EN          |   INT_MIN_DIS         |
               INT_HOUR_DIS        |   INT_DOM_DIS         |
               INT_DOW_DIS         |   INT_DOY_DIS         |
               INT_MON_DIS         |   INT_YEAR_DIS        |
               INT_ALARM_SEC_DIS   |   INT_ALARM_MIN_EN    |
               INT_ALARM_HOUR_DIS  |   INT_ALARM_DOM_DIS   |
               INT_ALARM_DOW_DIS   |   INT_ALARM_DOY_DIS   |
               INT_ALARM_MON_DIS   |   INT_ALARM_YEAR_DIS  );

    RTCTimeSet(RTC_TIMETYPE_SECOND,      0);
    RTCTimeSet(RTC_TIMETYPE_MINUTE,      0);
    RTCTimeSet(RTC_TIMETYPE_HOUR,        0);
    RTCTimeSet(RTC_TIMETYPE_DAYOFWEEK,   0);
    RTCTimeSet(RTC_TIMETYPE_DAYOFMONTH,  0);
    RTCTimeSet(RTC_TIMETYPE_DAYOFYEAR,   0);
    RTCTimeSet(RTC_TIMETYPE_MONTH,       0);
    RTCTimeSet(RTC_TIMETYPE_YEAR,        0);

    RTCAlarmSet(RTC_TIMETYPE_SECOND,     0);
    RTCAlarmSet(RTC_TIMETYPE_MINUTE,     1);
    RTCAlarmSet(RTC_TIMETYPE_HOUR,       0);
    RTCAlarmSet(RTC_TIMETYPE_DAYOFWEEK,  0);
    RTCAlarmSet(RTC_TIMETYPE_DAYOFMONTH, 0);
    RTCAlarmSet(RTC_TIMETYPE_DAYOFYEAR,  0);
    RTCAlarmSet(RTC_TIMETYPE_MONTH,      0);
    RTCAlarmSet(RTC_TIMETYPE_YEAR,       0);

    RTCEnable();
    RTCCounterReset();
    xIntEnable(xINT_RTC);

    while (1)
    {
        ; // DoNothing
    }
}
示例#2
0
/*
** RTC configuration function
*/
static void RTCSetupAndEnable(void)
{
    /* Performing the System Clock configuration for RTC. */
    RTCModuleClkConfig();

    /* Disabling Write Protection for RTC registers.*/
    RTCWriteProtectDisable(RTC_INST_BASE);

    /* Selecting Internal Clock source for RTC. */
    RTC32KClkSourceSelect(RTC_INST_BASE, RTC_INTERNAL_CLK_SRC_SELECT);

    /* Enabling RTC to receive the Clock inputs. */
    RTC32KClkClockControl(RTC_INST_BASE, RTC_32KCLK_ENABLE);

    /* Enable the RTC module. */
    RTCEnable(RTC_INST_BASE);

    /* Dummy: Programming calendar information in the Calendar registers. */
    RTCCalendarSet(RTC_INST_BASE, RTC_CAL_VAL_DUMMY);

    /* Dummy: Programming the time information in the Time registers. */
    RTCTimeSet(RTC_INST_BASE, RTC_TIME_VAL_DUMMY);

    /* Set the 32KHz counter to run. */
    RTCRun(RTC_INST_BASE);

    /* Enabling RTC interrupts. Configuring RTC to interrupt every second.*/
    RTCIntTimerEnable(RTC_INST_BASE, RTC_INT_EVERY_SECOND);

    /* Enabling the system interrupt in AINTC for RTC. */
    IntSystemEnable(RTC_INT_NUM);
}
示例#3
0
/*
** RTC configuration function
*/
static void RTCSetupAndEnable(void)
{
    /* Performing the System Clock configuration for RTC. */
    RTCModuleClkConfig();

    /* Disabling Write Protection for RTC registers.*/
    RTCWriteProtectDisable(SOC_RTC_0_REGS);

    /* Selecting Internal Clock source for RTC. */
    RTC32KClkSourceSelect(SOC_RTC_0_REGS, RTC_INTERNAL_CLK_SRC_SELECT);

    /* Enabling RTC to receive the Clock inputs. */
    RTC32KClkClockControl(SOC_RTC_0_REGS, RTC_32KCLK_ENABLE);

    /* Enable the RTC module. */
    RTCEnable(SOC_RTC_0_REGS);

    /* Dummy: Programming calendar information in the Calendar registers. */
    RTCCalendarSet(SOC_RTC_0_REGS, 0x29111000 | RTC_DOTW_MON);

    /* Dummy: Programming the time information in the Time registers. */
    RTCTimeSet(SOC_RTC_0_REGS, (0x08473100 | RTC_ANTE_MERIDIEM));

    /* Set the 32KHz counter to run. */
    RTCRun(SOC_RTC_0_REGS);

    /* Enabling RTC interrupts. Configuring RTC to interrupt every second.*/
    RTCIntTimerEnable(SOC_RTC_0_REGS, RTC_INT_EVERY_SECOND);

    /* Enabling the system interrupt in AINTC for RTC. */
    IntSystemEnable(SYS_INT_RTCINT);
}
unsigned long RTCHandler(void *pvCBData, unsigned long ulEvent,
                              unsigned long ulMsgParam, void *pvMsgData)
{

    // RTC increment interrupt
    if(RTCIntFlagCheck(RTC_INT_INC))
    {
        //Clear second increment interrupt
        RTCIntFlagClear(RTC_INT_INC);
        ToggleLed();
    }

    // RTC alarm match interrupt
    if(RTCIntFlagCheck(RTC_INT_ALARM))
    {
        //Clear alarm interrupt then reset counter.
        RTCIntFlagClear(RTC_INT_ALARM);
        RTCCounterReset();
        RTCTimeSet(RTC_TIMETYPE_SECOND,      0);
        RTCTimeSet(RTC_TIMETYPE_MINUTE,      0);
        RTCTimeSet(RTC_TIMETYPE_HOUR,        0);
        RTCTimeSet(RTC_TIMETYPE_DAYOFWEEK,   0);
        RTCTimeSet(RTC_TIMETYPE_DAYOFMONTH,  0);
        RTCTimeSet(RTC_TIMETYPE_DAYOFYEAR,   0);
        RTCTimeSet(RTC_TIMETYPE_MONTH,       0);
        RTCTimeSet(RTC_TIMETYPE_YEAR,        0);
        
        RTCAlarmSet(RTC_TIMETYPE_SECOND,     0);
        RTCAlarmSet(RTC_TIMETYPE_MINUTE,     1);
        RTCAlarmSet(RTC_TIMETYPE_HOUR,       0);
        RTCAlarmSet(RTC_TIMETYPE_DAYOFWEEK,  0);
        RTCAlarmSet(RTC_TIMETYPE_DAYOFMONTH, 0);
        RTCAlarmSet(RTC_TIMETYPE_DAYOFYEAR,  0);
        RTCAlarmSet(RTC_TIMETYPE_MONTH,      0);
        RTCAlarmSet(RTC_TIMETYPE_YEAR,       0);
    
        // Fast blink LED
        SysCtlDelay(TICK_SLOW);
        ToggleLed();

        SysCtlDelay(TICK_SLOW);
        ToggleLed();

        SysCtlDelay(TICK_SLOW);
        ToggleLed();
        
        SysCtlDelay(TICK_SLOW);
        ToggleLed();

        SysCtlDelay(TICK_SLOW);
        ToggleLed();

    }

    return (0);
}
示例#5
0
/*
** Sets the Time and Calender in the RTC. This is a blocking call. 
** The time and date are entered through UART.
*/
void RtcTimeCalSet(void)
{
    unsigned int time = 0; 
    unsigned int cal = 0;
    unsigned int temp = 0; 
 
    UARTPuts("\n\rEnter Hours (0 to 23):", -1);
    temp = UARTGetNum();

    while(temp > 23)
    {
        UARTPuts("\n\rValue entered is invalid. Enter value:", -1);
        temp = UARTGetNum();
    }

    time = (((temp / 10) << 4) << SHIFT_HOUR)
            | ((temp % 10) << SHIFT_HOUR);

    UARTPuts("\n\rEnter Minutes (0 to 59):", -1);
    temp = UARTGetNum();

    while(temp > 59)
    {
        UARTPuts("\n\rValue entered is invalid. Enter value:", -1);
        temp = UARTGetNum();
    }

    time |= (((temp / 10) << 4) << SHIFT_MIN)
            | ((temp % 10) << SHIFT_MIN);
 
    UARTPuts("\n\rEnter Seconds (0 to 59):", -1);
    temp = UARTGetNum();

    while(temp > 59)
    {
        UARTPuts("\n\rValue entered is invalid. Enter value:", -1);
        temp = UARTGetNum();
    }

    time |= (((temp / 10) << 4) << SHIFT_SEC)
             | ((temp % 10) << SHIFT_SEC);

    UARTPuts("\n\rEnter Date (1 to 31):", -1);
    temp = UARTGetNum();

    while((temp > 31) || (0 == temp))
    {
        UARTPuts("\n\rValue entered is invalid. Enter value:", -1);
        temp = UARTGetNum();
    }

    cal = (((temp / 10) << 4) << SHIFT_DAY)
           | ((temp % 10) << SHIFT_DAY);

    UARTPuts("\n\rEnter Month (1 to 12):", -1);
    temp = UARTGetNum();

    while((temp > 12) || (0 == temp))
    {
        UARTPuts("\n\rValue entered is invalid. Enter value:", -1);
        temp = UARTGetNum();
    }

    cal |= (((temp / 10) << 4) << SHIFT_MON)
            | ((temp % 10) << SHIFT_MON);

    UARTPuts("\n\rEnter Year (0 to 99):", -1);
    temp = UARTGetNum();
    while(temp > 99)
    {
        UARTPuts("\n\rValue entered is invalid. Enter value:", -1);
        temp = UARTGetNum();
    }

    cal |= (((temp / 10) << 4) << SHIFT_YEAR)
            | ((temp % 10) << SHIFT_YEAR);

    UARTPuts("\n\rEnter Day Of the week (0 for Sunday...6 for Saturday):", -1);
    temp = UARTGetNum();

    while(temp > 6)
    {
        UARTPuts("\n\rValue entered is invalid. Enter value:", -1);
        temp = UARTGetNum();
    }

    cal |= (((temp / 10) << 4)) | ((temp % 10));
 
    /* Set the calendar registers of RTC with received calendar information.*/
    RTCCalendarSet(SOC_RTC_0_REGS, cal);

    /* Set the time registers of RTC with the received time information.*/
    RTCTimeSet(SOC_RTC_0_REGS, time);

    /* Run the RTC. The seconds tick from now on.*/
    RTCRun(SOC_RTC_0_REGS);
 
    UARTPuts("\n\rThe Time and Date are set successfully! \n\n\r", -1);

    rtcSetFlag = TRUE;
}