/*****************************************************************************
* LPC82x Match Toggle for the LPC824 LPCXpresso board
*
* 1. Use SCT timer to generate a 50 msec clock output @ CTOUT_0
* 2. CTOUT_0 is linked to P0_12 (toggles every 50 msec)
*****************************************************************************/
#include "board.h"
#define match_value (10000)
extern void sct_fsm_init (void);
void sct_fsm_init (void)
{
Chip_SCT_Init(LPC_SCT); /* enable the SCT clock */
Chip_SCT_Config(LPC_SCT, SCT_CONFIG_AUTOLIMIT_L ); /* SPLIT */
Chip_SCT_SetControl(LPC_SCT, SCT_CTRL_PRE_L(119)); /* set prescaler, SCT clock = 1 MHz */
Chip_SCT_SetMatchCount(LPC_SCT, SCT_MATCH_0, match_value);// match 0 @ 10 Hz = 100 msec
Chip_SCT_SetMatchReload(LPC_SCT, SCT_MATCH_0, match_value);
/* OUTPUT registers */
Chip_SCT_SetOutput(LPC_SCT, SCT_OUTPUT_0, SCT_EVT_0 ); // event 0 will set SCT_OUT_0
Chip_SCT_ClearOutput(LPC_SCT, SCT_OUTPUT_0, SCT_EVT_0); // event 0 will clear SCT_OUT_0
/* Conflict resolution register */
Chip_SCT_SetConflictResolution(LPC_SCT, 0, SCT_RES_TOGGLE_OUTPUT); // output 0 toggles on conflict
/* EVENT registers */
Chip_SCT_EventState(LPC_SCT, SCT_EVENT_0, ENABLE_STATE0); // event 0 only happens in state 0
Chip_SCT_EventControl(LPC_SCT, SCT_EVENT_0, (CHIP_SCT_EVENTCTRL_T) ( SCT_EVECTRL_MATCH0| // MATCHSEL[3:0] = related to match 0
SCT_COMBMODE_MATCH)); // COMBMODE[13:12] = match condition only
Chip_SCT_ClearControl(LPC_SCT , SCT_CTRL_HALT_L);
}
int main(void)
{
/* Generic Initialization */
SystemCoreClockUpdate();
Board_Init();
Chip_Clock_SetSysClockDiv(5);
Chip_Clock_EnablePeriphClock(SYSCTL_CLOCK_IOCON);// enable clock for IOCON
Chip_SWM_Init();
Chip_SWM_MovablePinAssign(SWM_SCT_OUT0_O, 12);
// Bogus code for this example, SCT1 is not used and P2_17 does not exist
// modefunc value passed for P0_12 is bogus, assigns values to reserved bits
// Great example of copy/paste without verification
//Chip_IOCON_PinMuxSet(LPC_IOCON, 12 , 0x00000081);// P2_17 is SCT1_OUT1
sct_fsm_init(); /* Initialize the SCT using the code generated by Red State */
while(1)
{
__WFI();
}
}
|