void AR0330_SetHue(int32_t hue) { CyU3PDebugPrint(4, "AR0330_SetHue: %d\r\n", hue); #define SetLow(io) CyU3PGpioSetValue(io, CyFalse) #define SetHigh(io) CyU3PGpioSetValue(io, CyTrue) #define SetBit(io, value) CyU3PGpioSetValue(io, 0 != (value & 0x80)) #if 0 CyU3PReturnStatus_t status; status = CyU3PGpioSetValue(LED_DRIVER_SDI, 0 != (hue & 1)); if (CY_U3P_SUCCESS != status) { CyU3PDebugPrint(4, "AR0330_SetHue: error = %d 0x%x\r\n", status, status); } status = CyU3PGpioSetValue(LED_DRIVER_CLK, 0 != (hue & 2)); if (CY_U3P_SUCCESS != status) { CyU3PDebugPrint(4, "AR0330_SetHue: error = %d 0x%x\r\n", status, status); } status = CyU3PGpioSetValue(LED_DRIVER_ED1, 0 != (hue & 4)); if (CY_U3P_SUCCESS != status) { CyU3PDebugPrint(4, "AR0330_SetHue: error = %d 0x%x\r\n", status, status); } status = CyU3PGpioSetValue(LED_DRIVER_ED2, 0 != (hue & 8)); if (CY_U3P_SUCCESS != status) { CyU3PDebugPrint(4, "AR0330_SetHue: error = %d 0x%x\r\n", status, status); } #else // initialise SetLow(LED_DRIVER_CLK); SetHigh(LED_DRIVER_ED2); SetLow(LED_DRIVER_ED1); CyU3PThreadSleep(1); for (int i = 0; i < 8; ++i) { SetBit(LED_DRIVER_SDI, hue); hue <<= 1; // output bit big endian CyU3PBusyWait(10); //CyU3PThreadSleep(10); SetHigh(LED_DRIVER_CLK); CyU3PBusyWait(10); //CyU3PThreadSleep(10); SetLow(LED_DRIVER_CLK); } //CyU3PThreadSleep(1); CyU3PBusyWait(10); SetHigh(LED_DRIVER_ED1); //CyU3PThreadSleep(10); CyU3PBusyWait(10); SetLow(LED_DRIVER_ED1); //CyU3PThreadSleep(1); CyU3PBusyWait(10); SetLow(LED_DRIVER_ED2); #endif }
CStVersionInfo& CStVersionInfo::operator=(const CStVersionInfo& _ver) { SetHigh(_ver.GetHigh()); SetMid(_ver.GetMid()); SetLow(_ver.GetLow()); m_last_error = _ver.m_last_error; m_system_last_error = _ver.m_system_last_error; m_obj_name = _ver.m_obj_name; return *this; }
/******************************************************************************************************** Function Name: Test_OutputIO Description : Êý×ÖÊä³ö²âÊÔ Inputs : None Outputs : None Notes : Revision : ********************************************************************************************************/ void Test_OutputIO(void) { while(1) { SetHigh(1);SetHigh(2);SetHigh(3);SetHigh(4);SetLow(5);SetLow(6);SetLow(7);SetLow(8); Delay_ms(1000); SetLow(1);SetLow(2);SetLow(3);SetLow(4);SetHigh(5);SetHigh(6);SetHigh(7);SetHigh(8); Delay_ms(1000); } }
int main() { uint8_t tmpCurrentMode, tmpPreviousMode; //init ddr SetHigh(DBP_GSCLK_DDR, DBP_GSCLK_PIN); SetHigh(DBP_BLANK_DDR, DBP_BLANK_PIN); SetHigh(DBP_XLAT_DDR, DBP_XLAT_PIN); SetHigh(DBP_VPRG_DDR, DBP_VPRG_PIN); SetHigh(DBP_DCPRG_DDR, DBP_DCPRG_PIN); SetHigh(DBP_SIN_DDR, DBP_SIN_PIN); SetHigh(DBP_SCLK_DDR, DBP_SCLK_PIN); //set initial values SetHigh(DBP_BLANK_PORT, DBP_BLANK_PIN); SetHigh(DBP_VPRG_PORT, DBP_VPRG_PIN); SetHigh(DBP_DCPRG_PORT, DBP_DCPRG_PIN); SetLow(DBP_GSCLK_PORT, DBP_GSCLK_PIN); SetLow(DBP_XLAT_PORT, DBP_XLAT_PIN); SetLow(DBP_SIN_PORT, DBP_SIN_PIN); SetLow(DBP_SCLK_PORT, DBP_SCLK_PIN); //init adc converter /* SetHigh(IRP_TRANSMITTER_DDR, IRP_TRANSMITTER_PIN); SetLow(IRP_RECEIVER_DDR, IRP_RECEIVER_PIN); ADMUX = (1 << REFS0); //voltage reference = AVCC, input channel = ADC0 ADCSRA = (1 << ADATE) | (1 << ADIE) | (1 << ADEN) | (1 << ADPS1); //f.osc / 4 ADCSRB = (1 << ADTS1) | (1 << ADTS0); //auto trigger source = timer0 compare match A */ //init GSCLK timer TCCR0A |= (1 << WGM01); TCCR0B |= (1 << CS02) | (1 << CS00); OCR0A = 0x03; //f.osc / 4096 TIMSK0 |= (1 << OCIE0A); //init spi SetHigh(SPI_SS_DDR, SPI_SS_PIN); SPCR = (1 << SPE) | (1 << MSTR) | (1 << SPR1); //F_CPU / 16 ~ 365kHz //init i2c TWAR = (SLAVE_Address << 1); TWCR = (1 << TWEA) | (1 << TWEN) | (1 << TWIE); //init queue QUEUE_Init(&TWI_InputBuffer); //send dc data to driver through spi for(i = 0; i < 36; ++i) { SPDR = 0xff; while(!(SPSR & (1 << SPIF))); } SetHigh(DBP_XLAT_PORT, DBP_XLAT_PIN); SetLow(DBP_XLAT_PORT, DBP_XLAT_PIN); tmpPreviousMode = CMD_SetDC; SetLow(DBP_VPRG_PORT, DBP_VPRG_PIN); //send gs data to driver through spi for(i = 0; i < 72; ++i) { SPDR = 0xff; while(!(SPSR & (1 << SPIF))); } SPCR &= ~(1 << SPE); SetHigh(DBP_XLAT_PORT, DBP_XLAT_PIN); SetLow(DBP_XLAT_PORT, DBP_XLAT_PIN); SetLow(DBP_BLANK_PORT, DBP_BLANK_PIN); tmpPreviousMode = CMD_SetGS; //enable interrupts sei(); while(1) { if(!GLB_NeedXLAT && !QUEUE_Empty(&TWI_InputBuffer)) { tmpCurrentMode = QUEUE_Remove(&TWI_InputBuffer); switch(tmpCurrentMode) { case CMD_SetDC: { SetHigh(DBP_VPRG_PORT, DBP_VPRG_PIN); SendDataToTLC5940(&TWI_InputBuffer, 36); GLB_NeedXLAT = 1; tmpPreviousMode = tmpCurrentMode; break; } case CMD_SetGS: { if(tmpPreviousMode == CMD_SetGS) { SetHigh(DBP_SCLK_PORT, DBP_SCLK_PIN); SetLow(DBP_SCLK_PORT, DBP_SCLK_PIN); } SetLow(DBP_VPRG_PORT, DBP_VPRG_PIN); SendDataToTLC5940(&TWI_InputBuffer, 72); GLB_NeedXLAT = 1; tmpPreviousMode = tmpCurrentMode; break; } case CMD_ClearGS: { if(tmpPreviousMode == CMD_SetGS) { SetHigh(DBP_SCLK_PORT, DBP_SCLK_PIN); SetLow(DBP_SCLK_PORT, DBP_SCLK_PIN); } SetLow(DBP_VPRG_PORT, DBP_VPRG_PIN); SPCR |= (1 << SPE); cli(); for(i = 0; i < 72; ++i) { SPDR = 0x00; while(!(SPSR & (1 << SPIF))); } sei(); SPCR &= ~(1 << SPE); GLB_NeedXLAT = 1; tmpPreviousMode = CMD_SetGS; break; } } } } }
CStVersionInfo::CStVersionInfo(string _base):CStBase(_base) { SetHigh(0); SetMid(0); SetLow(0); }