Esempio n. 1
0
// ----SPI模块片选拉低-------------------------------------------
//功能:目前仅提供SPI1片选,适用于WB9260板
//参数:SPIx    SPI模块选择
//      tgCsSel 片选信号
//返回:true=成功,false=失败
// --------------------------------------------------------------
bool_t Spi_ActiveCS(volatile tag_SpiReg * tpSpi,ufast_t ufCsNo)
{
    if(tpSpi == g_ptSpi0Reg)
    {
        if( true != SPI_WaitFor(tpSpi) )
        {
            return false;
        }

        switch (ufCsNo)
        {
           case SPI_CS0:
              sysreg_bit_clr( sysreg_FLAGS, FLG4 ); //拉低ss0线 FLASH
              break;
           case SPI_CS1:
              sysreg_bit_clr( sysreg_FLAGS, FLG5 ); //拉低ss1线 FLASH
              break;
           case SPI_CS2:
              sysreg_bit_clr( sysreg_FLAGS, FLG6 ); //拉低ss2线 RTC
              break;
           default:
              return false;
        }
        return true;
    }
    else if(tpSpi == g_ptSpi1Reg)
    {
        return false;
    }
    else
        return false;

}
Esempio n. 2
0
//Timer interrupt service routine
void timer_isr (int sig)
{ 
    Sint16 iCounter;
    Uint16 UART_crc;
    float   aa = 1.0;

    sysreg_bit_set(sysreg_FLAGS,FLG2);//флаг измерения длительности процесса.
    sysreg_bit_set(sysreg_FLAGS,FLG1);

    //WrDACX();//Запись в ЦАП компенсации
    WrDACY();//Запись в ЦАП компенсации


    Delay(125);//1.6uS 
    sysreg_bit_clr(sysreg_FLAGS,FLG1);
    RdADC(); //Считывание и преобраз. в float АЦП пучности и узла + формир.LDAC ЦАП.
             // Выход:
             //	(global_andata) = значение пучности float
             // (global_ndata) = значение узла float
    RdTEMP();//Считывание и преобраз. в float значения температуры.
             //Выход:
             //(global_TEMP) = значение температуры float 

    // ***************************
            Gyro.in_Ux       = global_andata;
            Gyro.in_Uy       = global_ndata;
            Gyro.Temperature = global_TEMP;

            Run_Algo( &Gyro );

            global_DACX = Gyro.out_Ux;
            global_DACY = Gyro.out_Uy;

            if ( Gyro.isUART_DataPresent == 1 )  
            { 
                Gyro.isUART_DataPresent = 0; 
                global_flagpack         = 1; 
                ForPack2();
            }  
    // ***************************

    //WrDACY();//Запись в ЦАП возбуждения
    WrDACX();//Запись в ЦАП возбуждения
             //Вход:
             //(global_DACX) = значение возбуждения float
             //(global_DACY) = значение Компенсации float

    WrUART2();//Данные заносить в буфер global_UARTbuf[48]
              // Передача пакета иниц.записью данных # 0 в global_flagpack
    sysreg_bit_clr(sysreg_FLAGS,FLG2);
}
Esempio n. 3
0
int main( void )
{
/****************UART SET*******************/

	*pPICR2 &= ~(0x1F); //Sets the UART0 receive interrupt to P12

	*pPICR2 |= (0x13<<0); 
	
	initPLL_DDR2();

	*pUART0LCR=0;
	
    *pUART0IER   = UARTRBFIE;    // enables UART0 receive interrupt
    
	
/****************SYS INIT*******************/
	initDPI();
	initUART();
	Init_LEDs();
	Init_PushButtons();
	
	sysreg_bit_clr(sysreg_MODE1, IRPTEN ); /* disable global interrupts */
	/* unmask individual interrupts */
	(*pDAI_IRPTL_PRI) = (SRU_EXTMISCA1_INT | SRU_EXTMISCA2_INT);
	
	/* make sure interrupts latch on the rising edge */
    (*pDAI_IRPTL_RE) = (SRU_EXTMISCA1_INT | SRU_EXTMISCA2_INT);

  	/* setup the IRQ pins to use the pushbuttons */
	(*pSYSCTL) |= (IRQ1EN | IRQ2EN);
	
	sysreg_bit_set(sysreg_MODE2, (IRQ1E | IRQ2E) );
	
	/* enable IRQ interrupts and make DAI interrupts high priority */
	sysreg_bit_set(sysreg_IMASK, (IRQ1I | IRQ2I | DAIHI) );
	sysreg_bit_clr(sysreg_IMASKP, (IRQ1I | IRQ2I | DAIHI) );
	sysreg_bit_set(sysreg_LIRPTL, P12IMSK );
	sysreg_bit_clr(sysreg_LIRPTL, P12IMSKP );
	
	sysreg_bit_clr(sysreg_IRPTL, (IRQ1I | IRQ2I) );
	sysreg_bit_clr(sysreg_LIRPTL, P12I );

	/* register the interrut handlers */
	Int_Init();
	
    Int_IsrConnect(cn_int_line_IRQ2I,SW9_IRQ2_handler);
    Int_RestoreRealLine(cn_int_line_IRQ2I);
    
    Int_IsrConnect(cn_int_line_IRQ1I,SW8_IRQ1_handler);
    Int_RestoreAsynLine(cn_int_line_IRQ1I);
    
    Int_IsrConnect(cn_int_line_DAII,__int_engine_dai);
    Int_RestoreAsynLine(cn_int_line_DAII);
    
	Int_IsrConnect(cn_int_line_P12I,UARTisr);
    Int_RestoreAsynLine(cn_int_line_P12I);
    
    Int_CutTrunk();
    Int_ContactTrunk();
    	
	sysreg_bit_clr(sysreg_IRPTL, (IRQ1I | IRQ2I) );
	NOP;NOP;
	sysreg_bit_clr(sysreg_LIRPTL, P12I );
    NOP;NOP;
	sysreg_bit_set(sysreg_MODE1, NESTM ); /* enable interrupts nest */
	sysreg_bit_set(sysreg_MODE1, IRPTEN ); /* enable global interrupts */
	
// 测试通过	
//	atom_high_test=Int_HighAtomStart();
//	Int_HighAtomEnd(atom_high_test);
//	atom_low_test=Int_LowAtomStart();
//	Int_LowAtomEnd(atom_low_test);
// 测试通过	
	Int_TapLine(cn_int_line_IRQ2I);
//	Int_TapLine(cn_int_line_DAII);
//	Int_TapLine(cn_int_line_P12I);
	Int_TapLine(cn_int_line_IRQ1I);
// 测试通过	
//  bool_value=Int_QueryLine(cn_int_line_IRQ2I);
//  bool_value=Int_QueryLine(cn_int_line_IRQ1I);
//  bool_value=Int_QueryLine(cn_int_line_DAII);
//  bool_value=Int_QueryLine(cn_int_line_P12I);
// 测试通过	
//  Int_CutLine(cn_int_line_SFT3I);
//  Int_CutLine(cn_int_line_P17I);
//  Int_CutLine(cn_int_line_IRQ2I);
    
/****************UART TEST******************/

    xmitUARTmessage(welcomemessage,sizeof(welcomemessage));   
	xmitUARTmessage("CYG Copyright \n\r",sizeof("CYG Copyright \n\r")); 
	
	while(1)
	{
		Blink_LED(10000000);
//		Int_TapLine(cn_int_line_IRQ2I);
//		xmitUARTmessage("CYG Copyright \n\r",sizeof("CYG Copyright \n\r")); 
//		Int_TapLine(cn_int_line_DAII);
	}
	
	/* Begin adding your custom code here */
	return 0;
}