Example #1
0
/*****************************************************************************
* Function Name : tca_i2c_setgpio(int ch)
* Description: I2C port configuration
* input parameter:
* 		int core; 	// I2C Core
*       int ch;   	// I2C master channel
******************************************************************************/
void tca_i2c_setgpio(int core, int ch)
{
	PGPIO gpio = (PGPIO)tcc_p2v(HwGPIO_BASE);

	switch (core) {
		case 0:
		{
			if (ch == 0) {
				BITCSET(gpio->GPAFN0, (Hw8-Hw0), Hw4|Hw0);			/* GPIO_A[1:0] */
				BITSET(gpio->GPAEN, Hw1|Hw0);
				BITCLR(gpio->GPADAT, Hw1|Hw0);
			} else if (ch == 1) {
				BITCSET(gpio->GPAFN0, (Hw32-Hw28), Hw28);			/* GPIO_A[7] */
				BITCSET(gpio->GPAFN1, (Hw4-Hw0), Hw0);			    /* GPIO_A[8] */
				BITSET(gpio->GPAEN, Hw8|Hw7);
				BITCLR(gpio->GPADAT, Hw8|Hw7);
			}
			break;
		}
		case 1:
		{
			if (ch == 0) {
                /* Not used */
			} else if (ch == 1) {
                /* Not used */
			}
			break;
		}
	}
}
Example #2
0
/**
 * \brief Disable SPI and change to GPIO
 */
void epd_spi_detach(void) {
	BITCLR(SPISEL, SPICLK_PIN + SPIMOSI_PIN + SPIMISO_PIN);
	BITCLR(SPISEL2, SPICLK_PIN + SPIMOSI_PIN + SPIMISO_PIN);
	//config_gpio_dir_o(SPICLK_PORT,SPICLK_PIN);
	//config_gpio_dir_o(SPIMOSI_PORT,SPIMOSI_PIN);
	//config_gpio_dir_o(SPIMISO_PORT,SPIMISO_PIN);
	SPIMISO_low();
	SPIMOSI_low();
	SPICLK_low();
	spi_flag = FALSE;
}
Example #3
0
void tchal_reset_device(void)
{
#ifdef __USE_TC_CPU__
	tcbd_debug(DEBUG_TCHAL, "\n");
#if defined(__CSPI_ONLY__)
	/* select peripheral mode as SPI */
#if defined(__USE_DXB1_IRQ__)
	BITCLR(RGPIO->GPAFN1, Hw16 - Hw12); /* DXB1_IRQ Set GPIO mode*/
	BITSET(RGPIO->GPAEN,  Hw11); /* DXB1_IRQ output mode*/
	BITCLR(RGPIO->GPADAT, Hw11); /* DXB1_IRQ clear*/
#elif defined(__USE_DXB0_IRQ__)
	BITCLR(RGPIO->GPDFN1, Hw8 - Hw4);  /* DXB0_IRQ Set GPIO mode*/
	BITSET(RGPIO->GPDEN,  Hw9); /* DXB0_IRQ output mode*/
	BITCLR(RGPIO->GPDDAT, Hw9); /* DXB0_IRQ clear*/
#endif /*__USE_DXB1_IRQ__*/
#endif /*__CSPI_ONLY__*/

	/* reset */
#if defined(__CSPI_ONLY__)
	BITCLR(RGPIO->GPEFN1, Hw16 - Hw12); /* DXB1_RST# Set GPIO mode */
	BITSET(RGPIO->GPEEN,  Hw11); /* DXB1_RST# Set GPIO Output mode*/
	BITCLR(RGPIO->GPEDAT, Hw11); /* DXB1_RST# Clear */
	tcpal_msleep(10);
	BITSET(RGPIO->GPEDAT, Hw11); /* DXB1_RST# Set*/
#elif defined(__I2C_STS__)
	BITCLR(RGPIO->GPDFN1, Hw4 - Hw0); /* DXB0_RST# Set GPIO mode */
	BITSET(RGPIO->GPDEN,  Hw8); /* DXB0_RST# Set GPIO Output mode*/
	BITCLR(RGPIO->GPDDAT, Hw8); /* DXB0_RST# Clear */
	tcpal_msleep(10);
	BITSET(RGPIO->GPDDAT, Hw8); /* DXB0_RST# Set*/
#else /*__CSPI_ONLY__ || __I2C_STS__*/
#error "you must define __CSPI_ONLY__ or __I2C_STS__"
#endif /*!__CSPI_ONLY__ && !__I2C_STS__*/
#endif
}
Example #4
0
void tchal_power_down_device(void)
{
#ifdef __USE_TC_CPU__
	tcbd_debug(DEBUG_TCHAL, "\n");
	BITCLR(RGPIO->GPEFN0, Hw16 - Hw12);
	BITSET(RGPIO->GPEEN,  Hw3);/* DXB1_PD Set GPIO Output mode*/
	BITCLR(RGPIO->GPEDAT, Hw3);/* DXB1_PD Clear*/
#if defined(__CSPI_ONLY__)
	BITCLR(RGPIO->GPEDAT, Hw11);/* DXB1_RST# Clear*/
#elif defined(__I2C_STS__)
	BITCLR(RGPIO->GPDDAT, Hw8);/* DXB0_RST# Clear */
#else
#error "you must define __CSPI_ONLY__ or __I2C_STS__"
#endif
#endif
}
Example #5
0
void tchal_power_on_device(void)
{
#ifdef __USE_TC_CPU__
	tcbd_debug(DEBUG_TCHAL, "\n");
	BITCLR(RGPIO->GPEFN0, Hw16 - Hw12);/* DXB1_PD Set GPIO mode*/

	BITSET(RGPIO->GPEEN,  Hw3);/* DXB1_PD Set GPIO Output mode*/
	BITCLR(RGPIO->GPEDAT, Hw3);/* DXB1_PD Clear*/
	tcpal_msleep(10);
	BITSET(RGPIO->GPEDAT, Hw3);/* DXB1_PD Set*/
	tcpal_msleep(10);

	tchal_reset_device();
	tchal_irq_setup();
#endif
}
/** Change stepper ic controller direction. 1 is CW, 0 is CCW seen from top
*/
void stepper_set_direction( int8_t dir )
{
	if(dir >= 1)
		BITSET(PORTL,PL3);	//Rotation direcion CW
	else
		BITCLR(PORTL,PL3);	//Rotation direcion to CCW
}
Example #7
0
static void
tcc88xx_osmr0_set_mode(enum clock_event_mode mode, struct clock_event_device *c)
{
	unsigned long flags;

#if defined(TICKLESS_DEBUG_TCC)
	printk("%s: mode %s... %d\n", __func__,
	       mode == CLOCK_EVT_MODE_ONESHOT  ? "ONESHOT"   :
	       mode == CLOCK_EVT_MODE_UNUSED   ? "UNUSED"    :
	       mode == CLOCK_EVT_MODE_SHUTDOWN ? "SHUTDOWN"  :
	       mode == CLOCK_EVT_MODE_RESUME   ? "RESUME"    :
	       mode == CLOCK_EVT_MODE_PERIODIC ? "PERIODIC"  : "non",
	       gTimer_cnt++);
#endif

	switch (mode) {
	case CLOCK_EVT_MODE_ONESHOT:
	case CLOCK_EVT_MODE_UNUSED:
	case CLOCK_EVT_MODE_SHUTDOWN:
		raw_local_irq_save(flags);
		BITCLR(pTIMER->TC32IRQ, Hw16);			/* Disable interrupt when the counter value matched with CMP0 */
		BITSET(pPIC->CLR0, TCC_ENABLE_BIT(INT_TC32));	/* PIC Interrupt clear */
		if(pTIMER->TC32IRQ & Hw31)			/* IRQ clear */
			BITSET(pTIMER->TC32IRQ, Hw31);
		raw_local_irq_restore(flags);
		break;

	case CLOCK_EVT_MODE_RESUME:
	case CLOCK_EVT_MODE_PERIODIC:
		break;
	}
}
Example #8
0
void CIF_OpStop(char wait_SOF, char sw_reset )
{
#if defined(CONFIG_ARCH_TCC79X)	
	if(wait_SOF)
	{
		BITSET(HwCIF->CIRQ, HwCIRQ_SOF);
		CIF_WaitFrameSync(400);
		BITSET(HwCIF->CIRQ, HwCIRQ_SOF);
	}
#elif defined(CONFIG_ARCH_TCC92XX) || defined(CONFIG_ARCH_TCC93XX)  || defined(CONFIG_ARCH_TCC88XX)
	volatile PCIF 		pCIF 		= (PCIF)tcc_p2v(HwCIF_BASE);
	#if defined(CONFIG_ARCH_TCC92XX)
	volatile PDDICONFIG pDDICfg 	= (PDDICONFIG)tcc_p2v(HwDDI_CONFIG_BASE);
	#elif defined(CONFIG_ARCH_TCC93XX)  || defined(CONFIG_ARCH_TCC88XX)
	volatile PCAMBUSCFG pCamBusCfg 	= (PCAMBUSCFG)tcc_p2v(HwCAMBUSCFG_BASE);
	#endif
	
	if(wait_SOF)
	{
		BITSET(pCIF->CIRQ, HwCIRQ_SOF);
		CIF_WaitFrameSync(400);
		BITSET(pCIF->CIRQ, HwCIRQ_SOF);
	}
#elif	defined(CONFIG_ARCH_TCC892X)
	//	In case of 892X, we have to add.
	
#endif

	CIF_ONOFF(OFF);

	if(sw_reset)
	{
#if defined(CONFIG_ARCH_TCC79X)
		BITSET(HwSWRESET, HwSWRESET_CIC_ON);
		BITCLR(HwSWRESET, HwSWRESET_CIC_ON);
#elif defined(CONFIG_ARCH_TCC92XX)
		BITSET(pDDICfg->SWRESET, HwDDIC_SWRESET_CIF);   // Reset
		BITCLR(pDDICfg->SWRESET, HwDDIC_SWRESET_CIF);  // Normal
#elif defined(CONFIG_ARCH_TCC93XX) || defined(CONFIG_ARCH_TCC88XX)
		BITSET(pCamBusCfg->SoftResetRegister, HwCAMBUS_SWRESET_CIF);   // Reset
		BITCLR(pCamBusCfg->SoftResetRegister, HwCAMBUS_SWRESET_CIF);  // Normal
#elif	defined(CONFIG_ARCH_TCC892X)
	//	In case of 892X, we have to add.
	
#endif
	}
}
Example #9
0
void tchal_irq_setup(void)
{
#ifdef __USE_TC_CPU__
#if defined(__USE_DXB1_IRQ__)
	BITCLR(RGPIO->GPAFN1, Hw16 - Hw12); /* DXB1_IRQ Set GPIO mode*/
	BITCLR(RGPIO->GPAEN, Hw11);         /* DXB1_IRQ input mode*/

	BITCSET(RGPIO->EINTSEL0, Hw32 - Hw24, 11<<24); /*GPIO_A11*/
#elif defined(__USE_DXB0_IRQ__)
	BITCLR(RGPIO->GPDFN1, Hw8 - Hw4); /* DXB0_IRQ Set GPIO mode*/
	BITCLR(RGPIO->GPDEN, Hw9);        /* DXB0_IRQ input mode*/

	BITCSET(RGPIO->EINTSEL0, Hw32 - Hw24, 20<<24); /*GPIO_D9*/
#endif /*__USE_DXB1_IRQ__*/
	BITSET(RPIC->POL0, 1<<IRQ_TC317X);
#endif
}
void
EvrInput::levelHighSet(bool v)
{
    if(v)
        BITCLR(NAT,32, base, InputMapFP(idx), InputMapFP_lvl);
    else
        BITSET(NAT,32, base, InputMapFP(idx), InputMapFP_lvl);
}
void
EvrInput::edgeRiseSet(bool v)
{
    if(v)
        BITCLR(NAT,32, base, InputMapFP(idx), InputMapFP_edge);
    else
        BITSET(NAT,32, base, InputMapFP(idx), InputMapFP_edge);
}
void internal_tve_enable(unsigned int type, unsigned int onoff)
{
	volatile PNTSCPAL pHwTVE = (volatile PNTSCPAL)tcc_p2v(HwTVE_BASE);
	volatile PNTSCPAL_ENCODER_CTRL 	pHwTVE_VEN = (volatile PNTSCPAL_ENCODER_CTRL)tcc_p2v(HwNTSCPAL_ENC_CTRL_BASE);
	
	if(onoff)
	{
		internal_tve_set_config(type);
		BITSET(pHwTVE_VEN->VENCON.nREG, HwTVEVENCON_EN_EN);
		BITSET(pHwTVE->DACPD.nREG, HwTVEDACPD_PD_EN);
		BITCLR(pHwTVE->ECMDA.nREG, HwTVECMDA_PWDENC_PD);
	}
	else
	{
		BITCLR(pHwTVE_VEN->VENCON.nREG, HwTVEVENCON_EN_EN);
		BITCLR(pHwTVE->DACPD.nREG, HwTVEDACPD_PD_EN);
		BITSET(pHwTVE->ECMDA.nREG, HwTVECMDA_PWDENC_PD);
	}
}
Example #13
0
/*****************************************************************************
* Function Name : static void remocon_irq_init(void);
* Description : IRQ register init
* Arguments :
******************************************************************************/
static void remocon_irq_init(void)
{
	volatile PPIC pPIC = (volatile PPIC)tcc_p2v(HwPIC_BASE);

	#if defined(CONFIG_ARCH_TCC892X)
		BITSET(pPIC->IEN1.nREG, Hw10);
		BITSET(pPIC->SEL1.nREG, Hw10);
		BITSET(pPIC->INTMSK1.nREG, Hw10);
		BITCLR(pPIC->POL1.nREG, Hw10);
		BITSET(pPIC->MODE1.nREG, Hw10);
		BITCLR(pPIC->MODEA1.nREG, Hw10);
	#else
	BITSET(pPIC->IEN1, HwINT1_RMT);
	BITSET(pPIC->SEL1, HwINT1_RMT);
	BITSET(pPIC->INTMSK1, HwINT1_RMT);
	BITCLR(pPIC->POL1, HwINT1_RMT);
	BITSET(pPIC->MODE1, HwINT1_RMT);
	BITCLR(pPIC->MODEA1, HwINT1_RMT);
	#endif
}
Example #14
0
/*
 *	BroadCasting DXB Interface.
 */
void init_bc_interrupt(tcc_intr_data_t *tcc_intr)
{	
	PGPIO pGPIO = (volatile PGPIO)tcc_p2v(HwGPIO_BASE);
	
	tcc_intr->irq = INT_TSD;
	tcc_intr->irq_bit = (1 << INT_TSD);
	tcc_intr->irq_regs = (volatile PPIC)tcc_p2v(HwPIC_BASE);

	/* DXB0_IRQ - GPIO_E5 - ExINT3 */	
	BITCLR(pGPIO->GPEFN0, Hw24-Hw20);	// gpio
	BITCLR(pGPIO->GPEEN, Hw5); 		// input mode

	BITCSET(pGPIO->EINTSEL0, Hw30-Hw24, (53<<24));
	BITSET(tcc_intr->irq_regs->EI37SEL, Hw3);

	/* Int trigger setting */
	BITCLR(tcc_intr->irq_regs->MODE0, tcc_intr->irq_bit);	// edge-triggered
	BITCLR(tcc_intr->irq_regs->MODEA0, tcc_intr->irq_bit);	// single-edge
	BITCLR(tcc_intr->irq_regs->POL0, tcc_intr->irq_bit);	// active-high
}
/** Generate step
*/
void stepper_advance()
{
	BITCLR(PORTL,PL0);	
	_delay_us(900);	// Hold line down to advance one step
	BITSET(PORTL,PL0);
	
	// check direction to update step counter
	if( stepper_get_direction() )
		curr_step_num++ ;
	else
		curr_step_num-- ;
}
Example #16
0
/**
 * Clear a item of event which you don't care anymore.
 * @ref sockwatch_run stop to detect the item on the socket.
 * It is possible to set plural item of event at the same time.
 *
 * @ingroup sockwatch_module
 * @param sock The socket number to clear
 * @param item The item of event to clear
 * @return RET_OK: Success
 * @return RET_NOK: Error
 */
int8_t sockwatch_clr(uint8_t sock, uint8_t item)
{
	DBGA("WATCH Clear - sock(%d), item(0x%x)", sock, item);
	if(sock >= TOTAL_SOCK_NUM) {
		ERRA("wrong sock(%d)", sock);
		return RET_NOK;
	}

	BITCLR(watch_sock[sock], 0x7F & item);

	return RET_OK;
}
void
EvrInput::extModeSet(TrigMode m)
{
    switch(m){
    case TrigNone:
        // Disable both level and edge
        BITCLR(NAT,32, base, InputMapFP(idx), InputMapFP_eedg);
        BITCLR(NAT,32, base, InputMapFP(idx), InputMapFP_elvl);
        break;
    case TrigLevel:
        // disable edge, enable level
        BITCLR(NAT,32, base, InputMapFP(idx), InputMapFP_eedg);
        BITSET(NAT,32, base, InputMapFP(idx), InputMapFP_elvl);
        break;
    case TrigEdge:
        // disable level, enable edge
        BITSET(NAT,32, base, InputMapFP(idx), InputMapFP_eedg);
        BITCLR(NAT,32, base, InputMapFP(idx), InputMapFP_elvl);
        break;
    }
}
Example #18
0
void Gre2d_Set_interrupt(char onoff)
{
	PPIC pHwPIC;
	pHwPIC  = (volatile PPIC)tcc_p2v(HwPIC_BASE);
#if defined(CONFIG_ARCH_TCC92XX) || defined(CONFIG_ARCH_TCC93XX)
	if(onoff)
	{
		BITSET(pHwPIC->CLR0,  HwINT0_G2D); 
		BITCLR(pHwPIC->POL0,  HwINT0_G2D); 
		BITSET(pHwPIC->SEL0,  HwINT0_G2D); 
		BITSET(pHwPIC->IEN0,  HwINT0_G2D); 
		BITSET(pHwPIC->MODE0,  HwINT0_G2D); 
	}
	else
	{
		BITCLR(pHwPIC->IEN0,  HwINT0_G2D); 
	}

#elif defined(CONFIG_ARCH_TCC892X)
	if(onoff)	{

	}
	else	{
		
	}
#else
	if(onoff)
	{
		BITSET(pHwPIC->CLR1,  HwINT1_G2D); 
		BITCLR(pHwPIC->POL1,  HwINT1_G2D); 
		BITSET(pHwPIC->SEL1,  HwINT1_G2D); 
		BITSET(pHwPIC->IEN1,  HwINT1_G2D); 
		BITSET(pHwPIC->MODE1,  HwINT1_G2D); 
	}
	else
	{
		BITCLR(pHwPIC->IEN1,  HwINT1_G2D); 
	}
#endif//
}
Example #19
0
static struct lcd_panel * lcdc_io_init(unsigned char lcdc_num)
{
	struct lcd_panel *panel;
	unsigned int 	lclk;

#if 0
// reset VIOD
	BITSET(pDDICfg->SWRESET, Hw3);
	BITSET(pDDICfg->SWRESET, Hw2);

	BITCLR(pDDICfg->SWRESET, Hw3);
	BITCLR(pDDICfg->SWRESET, Hw2);	
#endif//

	panel = tccfb_get_panel();
	panel->dev.power_on = GPIO_LCD_ON;
	panel->dev.display_on = GPIO_LCD_DISPLAY;
	panel->dev.bl_on = GPIO_LCD_BL;
	panel->dev.reset = GPIO_LCD_RESET;
	panel->dev.lcdc_num = lcdc_num;
	panel->init(panel);

	if(lcdc_num)
	{
		tca_ckc_setperi(PERI_LCD1,ENABLE, panel->clk_freq * panel->clk_div);
		lclk  = tca_ckc_getperi(PERI_LCD1);
	}
	else
	{
		tca_ckc_setperi(PERI_LCD0,ENABLE, panel->clk_freq * panel->clk_div);
		lclk  = tca_ckc_getperi(PERI_LCD0);
	}
	printf("telechips tcc88xx %s lcdc:%d clk:%d set clk:%d \n", __func__, lcdc_num, panel->clk_freq, lclk);

       panel->set_power(panel, 1);

	printf("%s end\n", __func__);

	return panel;
}
Example #20
0
static int eth16i_probe_port(int ioaddr)
{
	int i;
	int retcode;
	unsigned char dummy_packet[64];

	/* Powerup the chip */
	outb(0xc0 | POWERUP, ioaddr + CONFIG_REG_1);

	BITSET(ioaddr + CONFIG_REG_0, DLC_EN);

	eth16i_select_regbank(NODE_ID_RB, ioaddr);

	for(i = 0; i < 6; i++) {
		dummy_packet[i] = inb(ioaddr + NODE_ID_0 + i);
		dummy_packet[i+6] = inb(ioaddr + NODE_ID_0 + i);
	}

	dummy_packet[12] = 0x00;
	dummy_packet[13] = 0x04;
	memset(dummy_packet + 14, 0, sizeof(dummy_packet) - 14);

	eth16i_select_regbank(2, ioaddr);

	for(i = 0; i < 3; i++) {
		BITSET(ioaddr + CONFIG_REG_0, DLC_EN);
		BITCLR(ioaddr + CONFIG_REG_0, DLC_EN);
		eth16i_set_port(ioaddr, i);

		if(eth16i_debug > 1)
			printk(KERN_DEBUG "Set port number %d\n", i);

		retcode = eth16i_send_probe_packet(ioaddr, dummy_packet, 64);
		if(retcode == 0) {
			retcode = eth16i_receive_probe_packet(ioaddr);
			if(retcode != -1) {
				if(eth16i_debug > 1)
					printk(KERN_DEBUG "Eth16i interface port found at %d\n", i);
				return i;
			}
		}
		else {
			if(eth16i_debug > 1)
				printk(KERN_DEBUG "TRANSMIT_DONE timeout when probing interface port\n");
		}
	}

	if( eth16i_debug > 1)
		printk(KERN_DEBUG "Using default port\n");

	return E_PORT_BNC;
}
Example #21
0
void Gre2d_SW_reset(void)
{ 
//SW Reset
#ifdef CONFIG_ARCH_TCC92XX
	BITSET(HwGRPBUS->GRPBUS_SWRESET,  HwGRP_OM); 
	Gre2d_DELAY(100);
	BITCLR(HwGRPBUS->GRPBUS_SWRESET,  HwGRP_OM); 
#else
	//tcc88xx // tcc93xx

#endif//
	Gre2d_DELAY(200);
} 
Example #22
0
BOOL ACCEL_readID(threeAxis_t* result) {

    while(!SPI_acquirePort());

    BITCLR(POUT_ACCEL_CS, PIN_ACCEL_CS);
    SPI_transaction(gpRxBuf, (uint8_t*)ADXL_READ_DEVID, sizeof(ADXL_READ_DEVID));
    BITSET(POUT_ACCEL_CS, PIN_ACCEL_CS);

    SPI_releasePort();

    result->x = gpRxBuf[2];

    return SUCCESS;
}
Example #23
0
static int tcc_tsif_dmastop(struct tcc_tsif_handle *h)
{
	volatile PGDMACTRL dma_regs;

	if(h->dma_controller == 0)
		dma_regs = (volatile PGDMACTRL)tcc_p2v(HwGDMA0_BASE);
	else if(h->dma_controller == 1)
		dma_regs = (volatile PGDMACTRL)tcc_p2v(HwGDMA1_BASE);
	else if(h->dma_controller == 2)
		dma_regs = (volatile PGDMACTRL)tcc_p2v(HwGDMA2_BASE);

	if(h->dma_ch == 0)			BITCLR(dma_regs->CHCTRL0.nREG, 	Hw0);	//dma disable
	else if(h->dma_ch == 1)	BITCLR(dma_regs->CHCTRL1.nREG, 	Hw0);	//dma disable
	else						BITCLR(dma_regs->CHCTRL2.nREG, 	Hw0);	//dma disable

	BITCLR(h->regs->TSRXCR, Hw31);								//tsif disable

#ifdef DEBUG_INFO
	printk("%s\n", __func__);
#endif

	return 0;
}
Example #24
0
void SDMMC_ms_delay(unsigned long ul_ms)
{
#define TCFG_TCKSEL(x) 		(x<<4)
#define TCFG_CON 		Hw1
#define TCFG_EN 		Hw0
	PTIMER pTIMER = (TIMER*)TCC_TIMER_BASE;
	volatile unsigned int baseCounter;
	volatile unsigned int  timed;
#if defined(TCC892X_EMMC_BOOT)
	pTIMER->TCFG1.nREG= TCFG_TCKSEL(5)|TCFG_CON|TCFG_EN;
	baseCounter = pTIMER->TCNT1.bREG.TCNT;
	do{
		timed = (pTIMER->TCNT1.bREG.TCNT - baseCounter) & 0xFFFF;
	}while(timed < 12 * ul_ms);//1ms
	BITCLR(pTIMER->TCFG1.nREG, TCFG_EN);
#else
	pTIMER->TCFG1= TCFG_TCKSEL(5)|TCFG_CON|TCFG_EN;
	baseCounter = pTIMER->TCNT1;
	do{
		timed = (pTIMER->TCNT1 - baseCounter) & 0xFFFF;
	}while(timed < 12 * ul_ms);//1ms
	BITCLR(pTIMER->TCFG1, TCFG_EN);
#endif
}
Example #25
0
BOOL ACCEL_initialize() {

    // TODO Figure out optimal ADXL configuration for single measurement
    while(!SPI_acquirePort());
    //BITSET(POUT_ACCEL_EN, PIN_ACCEL_EN);
    //BITSET(POUT_ACCEL_CS, PIN_ACCEL_CS);

    //TODO find the proper length of delay

    BITCLR(POUT_ACCEL_CS, PIN_ACCEL_CS);
    BITCLR(POUT_ACCEL_EN, PIN_ACCEL_EN);
    SPI_transaction(gpRxBuf, (uint8_t*)ADXL_CONFIG_MEAS, sizeof(ADXL_CONFIG_MEAS));
    BITSET(POUT_ACCEL_CS, PIN_ACCEL_EN);
    BITSET(POUT_ACCEL_CS, PIN_ACCEL_CS);

    SPI_releasePort();

    //__delay_cycles(5000);

    //Timer_LooseDelay(LP_LSDLY_200MS);// To let ADXL start measuring? How much time is actually required here, if any?

    // TODO Use a pin interrupt to let us know when first measurement is ready
    return SUCCESS;
}
Example #26
0
static irqreturn_t tcc88xx_ost0_interrupt(int irq, void *dev_id)
{
	struct clock_event_device *c = dev_id;

	BITCLR(pTIMER->TC32IRQ, Hw16);			/* Disable interrupt when the counter value matched with CMP0 */
	BITSET(pPIC->CLR0, TCC_ENABLE_BIT(irq));	/* Interrupt clear */
	if(pTIMER->TC32IRQ & Hw31)			/* IRQ clear */
		BITSET(pTIMER->TC32IRQ, Hw31);
	c->event_handler(c);

#if defined(TICKLESS_DEBUG_TCC)
	gInt_cnt++;
#endif

	return IRQ_HANDLED;
}
Example #27
0
/**
 * Grab one sample from the ADXL362 accelerometer
 */
BOOL ACCEL_singleSample(threeAxis_t* result) {

    while(!SPI_acquirePort());

    BITCLR(POUT_ACCEL_CS, PIN_ACCEL_CS);
    SPI_transaction(gpRxBuf, (uint8_t*)ADXL_READ_XYZ_8BIT, sizeof(ADXL_READ_XYZ_8BIT));
    BITSET(POUT_ACCEL_CS, PIN_ACCEL_CS);

    SPI_releasePort();

    result->x = gpRxBuf[2];
    result->y = gpRxBuf[3];
    result->z = gpRxBuf[4];

    return SUCCESS;
}
Example #28
0
long io_interrupt(tcc_intr_data_t *tcc_intr, long flag)
{
	/* NOTE: irq_regs->XXX0, XXX1 */
	long ret = 0;
	if (flag == 0) {
		BITSET(tcc_intr->irq_regs->CLR0, tcc_intr->irq_bit);			// clear intr
		BITCLR(tcc_intr->irq_regs->INTMSK0, tcc_intr->irq_bit);			// disable intr
	} else if (flag == 1) {
		BITSET(tcc_intr->irq_regs->CLR0, tcc_intr->irq_bit);
		BITSET(tcc_intr->irq_regs->INTMSK0, tcc_intr->irq_bit);			// enable intr
	} else if (flag == 2) {
		ret = (tcc_intr->irq_regs->INTMSK0 & tcc_intr->irq_bit)?1:0;	// get int-mask status
	} else {
		ret = -1;
	}
	return ret;
}
Example #29
0
static void tca_clear_pid_tables(struct tcc_tsif_handle *h)
{
    int i;
#if defined(SUPPORT_PIDFILTER_DMA)
    volatile unsigned long* PIDT;
    for (i = 0; i < 32; i++) {
        PIDT = (volatile unsigned long *)tcc_p2v(HwTSIF_PIDT(i));
        *PIDT = 0;
    }
#endif        
#ifdef      SUPPORT_PIDFILTER_INTERNAL
    for (i = 0; i < 16; i++) {            
        BITCLR(h->regs->TSPID[i], (Hw32-Hw0));
    }
//    printk("%s\n", __func__);
#endif
}
Example #30
0
/**
 * \brief Configure SPI
 */
void epd_spi_init(void) {
	if (spi_flag)
		return;
	spi_flag = TRUE;
	//config  i/o
	config_gpio_dir_o(SPICLK_PORT, SPICLK_PIN);
	config_gpio_dir_o(SPIMOSI_PORT, SPIMOSI_PIN);
	config_gpio_dir_i(SPIMISO_PORT, SPIMISO_PIN);

	BITSET(SPISEL, SPICLK_PIN + SPIMOSI_PIN + SPIMISO_PIN);
	BITSET(SPISEL2, SPICLK_PIN + SPIMOSI_PIN + SPIMISO_PIN);
	//comfig SPI
	SPICTL0 = UCCKPH | UCMST | UCSYNC | UCMSB;
	SPICTL1 = UCSSEL_2 + UCSWRST;
	SPIBR0 = 2; //16MHz/2=8MHz
	SPIBR1 = 0;

	BITSET(REN (SPIMISO_PORT), SPIMISO_PIN);
	BITCLR(SPICTL1, UCSWRST);
}