/******************************************************************************* * Function Name: PrISM_1_Init ******************************************************************************** * * Summary: * Initialize component's parameters to the parameters set by user in the * customizer of the component placed onto schematic. Usually called in * PrISM_1_Start(). * * Parameters: * None. * * Return: * None. * *******************************************************************************/ void PrISM_1_Init(void) { uint8 enableInterrupts; /* Writes Seed value, polynom value and density provided by customizer */ PrISM_1_WriteSeed(PrISM_1_SEED); PrISM_1_WritePolynomial(PrISM_1_POLYNOM); PrISM_1_WritePulse0(PrISM_1_DENSITY0); PrISM_1_WritePulse1(PrISM_1_DENSITY1); enableInterrupts = CyEnterCriticalSection(); /* Set FIFO0_CLR bit to use FIFO0 as a simple one-byte buffer*/ CY_SET_REG8(PrISM_1_AUX_CONTROL_PTR, CY_GET_REG8(PrISM_1_AUX_CONTROL_PTR) | PrISM_1_FIFO0_CLR); CyExitCriticalSection(enableInterrupts); #if(!PrISM_1_PULSE_TYPE_HARDCODED) /* Writes density type provided by customizer */ #if(PrISM_1_GREATERTHAN_OR_EQUAL == PrISM_1_COMPARE0) PrISM_1_CONTROL_REG |= PrISM_1_CTRL_COMPARE_TYPE0_GREATER_THAN_OR_EQUAL; #else PrISM_1_CONTROL_REG &= (uint8)~PrISM_1_CTRL_COMPARE_TYPE0_GREATER_THAN_OR_EQUAL; #endif /* End PrISM_1_COMPARE0 */ #if(PrISM_1_GREATERTHAN_OR_EQUAL == PrISM_1_COMPARE1) PrISM_1_CONTROL_REG |= PrISM_1_CTRL_COMPARE_TYPE1_GREATER_THAN_OR_EQUAL; #else PrISM_1_CONTROL_REG &= (uint8)~PrISM_1_CTRL_COMPARE_TYPE1_GREATER_THAN_OR_EQUAL; #endif /* End PrISM_1_COMPARE1 */ #endif /* End PrISM_1_PULSE_TYPE_HARDCODED */ }
void initializeSystem(void) { CyGlobalIntEnable; UART_Start(); PrISM_1_Start(); PrISM_2_Start(); Opamp_1_Start(); // Start the Bluetooth Stack CyBle_Start(CustomEventHandler); // Set up the LED. First set its output to be off so that the LED doesn't blink on. // Then set the drive mode to strong. PrISM_1_WritePulse0(255); PrISM_1_WritePulse1(255); PrISM_2_WritePulse0(255); RED_SetDriveMode(RED_DM_STRONG); GREEN_SetDriveMode(GREEN_DM_STRONG); BLUE_SetDriveMode(BLUE_DM_STRONG); // Start the ADC ADC_SAR_Seq_Start(); ADC_SAR_Seq_StartConvert(); ADC_SAR_Seq_IRQ_Enable(); // Enable an interupt for when the ADC has data ADC_SAR_Seq_IRQ_StartEx(ADC_SAR_Seq_ISR_LOC); // Start the Timer for the ADC ADC_Timer_Start(); elapsed = 0; }
void UpdateRGBled(void) { /* Local variables to calculate the color components from RGB received data*/ uint8 debug_red; uint8 debug_green; uint8 debug_blue; uint8 intensity_divide_value = RGBledData[INTENSITY_INDEX]; debug_red = (uint8)(((uint16)RGBledData[RED_INDEX] * intensity_divide_value) / 255); debug_green = (uint8)(((uint16)RGBledData[GREEN_INDEX] * intensity_divide_value) / 255); debug_blue = (uint8)(((uint16)RGBledData[BLUE_INDEX] * intensity_divide_value) / 255); /* Update the density value of the PrISM module for color control*/ PrISM_1_WritePulse0(RGB_LED_MAX_VAL - debug_red); PrISM_1_WritePulse1(RGB_LED_MAX_VAL - debug_green); PrISM_2_WritePulse0(RGB_LED_MAX_VAL - debug_blue); /* Update RGB control handle with new values */ rgbHandle.attrHandle = CYBLE_RGB_LED_SERVICE_RGB_LED_CHARACTERISTIC_CHAR_HANDLE; rgbHandle.value.val = RGBledData; rgbHandle.value.len = RGB_CHAR_DATA_LEN; rgbHandle.value.actualLen = RGB_CHAR_DATA_LEN; /* Send updated RGB control handle as attribute for read by central device */ CyBle_GattsWriteAttributeValue(&rgbHandle, FALSE, &cyBle_connHandle, FALSE); }
/******************************************************************************* * Function Name: PrISM_1_RestoreConfig ******************************************************************************** * * Summary: * Restores the current user configuration. * * Parameters: * None. * * Return: * None. * * Global Variables: * PrISM_1_backup - used when non-retention registers are restored. * *******************************************************************************/ void PrISM_1_RestoreConfig(void) { #if (CY_UDB_V0) uint8 enableInterrupts; #if(!PrISM_1_PULSE_TYPE_HARDCODED) PrISM_1_CONTROL_REG = PrISM_1_backup.cr; #endif /* End PrISM_1_PULSE_TYPE_HARDCODED */ CY_SET_REG8(PrISM_1_SEED_COPY_PTR, PrISM_1_backup.seed_copy); CY_SET_REG8(PrISM_1_SEED_PTR, PrISM_1_backup.seed); PrISM_1_WritePolynomial(PrISM_1_backup.polynom); PrISM_1_WritePulse0(PrISM_1_backup.density0); PrISM_1_WritePulse1(PrISM_1_backup.density1); enableInterrupts = CyEnterCriticalSection(); /* Set FIFO0_CLR bit to use FIFO0 as a simple one-byte buffer*/ CY_SET_REG8(PrISM_1_AUX_CONTROL_PTR, CY_GET_REG8(PrISM_1_AUX_CONTROL_PTR) | PrISM_1_FIFO0_CLR); CyExitCriticalSection(enableInterrupts); #else /* CY_UDB_V1 */ #if(!PrISM_1_PULSE_TYPE_HARDCODED) PrISM_1_CONTROL_REG = PrISM_1_backup.cr; #endif /* End PrISM_1_PULSE_TYPE_HARDCODED */ CY_SET_REG8(PrISM_1_SEED_COPY_PTR, PrISM_1_backup.seed_copy); CY_SET_REG8(PrISM_1_SEED_PTR, PrISM_1_backup.seed); PrISM_1_WritePolynomial(PrISM_1_backup.polynom); #endif /* End CY_UDB_V0 */ }