Beispiel #1
0
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
}
Beispiel #2
0
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;
}
Beispiel #3
0
/********************************************************************************************************
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);	
	}
}
Beispiel #4
0
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;
            }
            }
        }
    }
}
Beispiel #5
0
CStVersionInfo::CStVersionInfo(string _base):CStBase(_base)
{
	SetHigh(0);
	SetMid(0);
	SetLow(0);
}