Пример #1
0
/********** INIT *************************************************************/
void init_rctx( void ) {
  hw_init();
  sys_time_init();
#ifdef LED
  led_init();
#endif
#ifdef USE_UART1
    Uart1Init();
#endif
#ifdef ADC
  adc_init();
  adc_buf_channel(ADC_CHANNEL_VSUPPLY, &vsupply_adc_buf, DEFAULT_AV_NB_SAMPLE);
#endif
#ifdef RADIO_CONTROL
  ppm_init();
#endif
  int_enable();

  /** - wait 0.5s (for modem init ?) */
  uint8_t init_cpt = 30;
  while (init_cpt) {
    if (sys_time_periodic())
      init_cpt--;
  }

#if defined DATALINK
#if DATALINK == XBEE
  xbee_init();
#endif
#endif /* DATALINK */
}
Пример #2
0
/**
 * Initializes all PIC functionality beyond the clock.
 *  * Maps all ECAN/UART pins
 *  * Assigns pins as input/output
 *  * Initializes the UART
 */
void Init(void)
{
    // And configure the Peripheral Pin Select pins:
    PPSUnLock;

#ifdef __dsPIC33FJ128MC802__
    // To enable ECAN1 pins: TX on 7, RX on 4
    PPSOutput(OUT_FN_PPS_C1TX, OUT_PIN_PPS_RP7);
    PPSInput(IN_FN_PPS_C1RX, IN_PIN_PPS_RP4);

    // To enable UART1 pins: TX on B11/P11, RX on B13/P13
    PPSOutput(OUT_FN_PPS_U1TX, OUT_PIN_PPS_RP11);
    PPSInput(IN_FN_PPS_U1RX, IN_PIN_PPS_RP13);
#elif __dsPIC33EP256MC502__
    // To enable ECAN1 pins: TX on 39, RX on 36
    PPSOutput(OUT_FN_PPS_C1TX, OUT_PIN_PPS_RP39);
    PPSInput(IN_FN_PPS_C1RX, IN_PIN_PPS_RP36);

    // To enable UART1 pins: TX on B11/P43, RX on B13/P45
    PPSOutput(OUT_FN_PPS_U1TX, OUT_PIN_PPS_RP43);
    PPSInput(IN_FN_PPS_U1RX, IN_PIN_PPS_RPI45);
#else
#error Invalid processor selected.
#endif

    PPSLock;

    // Initialize status LEDs for use.
    // A3 (output): Red LED, off by default.
    _TRISA3 = 0;
    _LATA3 = 0;
    // A4 (output): Amber LED, on by default.
    _TRISA4 = 0;
    _LATA4 = 1;

    _TRISB7 = 0; // Set ECAN1_TX pin to an output
    _TRISB4 = 1; // Set ECAN1_RX pin to an input;

    _TRISB11 = 0; // Set UART1_TX pin to an output
    _TRISB13 = 1; // Set UART1_RX pin to an input;

    // Set up UART1 for 57600 baud. There's no round() on the dsPICs, so we implement our own.
    double brg = (double) F_OSC / 2.0 / 16.0 / UART_BAUD - 1.0;
    if (brg - floor(brg) >= 0.5) {
        brg = ceil(brg);
    } else {
        brg = floor(brg);
    }
    Uart1Init((uint16_t)brg);

    // Initialize the Canaconda interface library callback functions
    commandFunction[COMMAND_FUNCTION_INDEX_OPEN] = CommandOpen;
    commandFunction[COMMAND_FUNCTION_INDEX_CLOSE] = CommandClose;
    commandFunction[COMMAND_FUNCTION_INDEX_SETUP] = CommandSetup;
    commandFunction[COMMAND_FUNCTION_INDEX_TRANSMIT] = CommandTransmit;
}
Пример #3
0
/***************************************************************
** 作   者: Songyimiao
** 官    网:http://www.miaowlabs.com
** 淘    宝:http://miaowlabs.taobao.com
** 日   期: 2015年11月29日
** 函数名称: DriversInit
** 功能描述: 底层驱动初始化            
** 输   入:   
** 输   出:   
** 备    注: 
********************喵呜实验室版权所有**************************
***************************************************************/
void DriversInit(void)
{

	GPIOInit();
  	Timer1Init();
	PWMInit();
	Uart1Init();
	Uart2Init();
	Timer3Timer4Init();

}
Пример #4
0
int main (int argc, char** argv) {
  hw_init();
  sys_time_init();
  led_init();
  adc_init();

  adc_buf_channel(ADC_0, &buf_adc[0], ADC_NB_SAMPLES);
  adc_buf_channel(ADC_1, &buf_adc[1], ADC_NB_SAMPLES);
  adc_buf_channel(ADC_2, &buf_adc[2], ADC_NB_SAMPLES);
  adc_buf_channel(ADC_3, &buf_adc[3], ADC_NB_SAMPLES);
  adc_buf_channel(ADC_4, &buf_adc[4], ADC_NB_SAMPLES);
  adc_buf_channel(ADC_5, &buf_adc[5], ADC_NB_SAMPLES);
#ifdef ADC_6
  adc_buf_channel(ADC_6, &buf_adc[6], ADC_NB_SAMPLES);
#endif
#ifdef ADC_7
  adc_buf_channel(ADC_7, &buf_adc[7], ADC_NB_SAMPLES);
#endif

#if NB_ADC != 8
#error "8 ADCs expected !"
#endif

#ifdef USE_UART0
  Uart0Init();
#endif
#ifdef USE_UART1
  Uart1Init();
#endif

  int_enable();

  while(1) {
    if (sys_time_periodic()) {
      LED_TOGGLE(1);
      uint16_t values[NB_ADC];
      uint8_t i;
      for(i = 0; i < NB_ADC; i++)
	values[i] = buf_adc[i].sum / ADC_NB_SAMPLES;

      uint8_t id = 42;
      DOWNLINK_SEND_ADC(&id, NB_ADC, values);
    }
  }
  return 0;
}
Пример #5
0
static void csc_main_init( void ) {

  mcu_init();
  sys_time_init();
  led_init();

  Uart0Init();
  Uart1Init();

  ppm_init();

  // Configure P0.21 as GPIO, output and then pull high as we use it to drive ppm input transistor
  PINSEL1 = PINSEL1 & ~(0x3 << 10);
  IO0DIR = IO0DIR | (0x1 << 21);
  IO0PIN = IO0DIR | (0x1 << 21);

  mcu_int_enable();

}
Пример #6
0
main()
{
    SysCtlClockSet(SYSCTL_SYSDIV_2_5| SYSCTL_USE_PLL | SYSCTL_OSC_MAIN | SYSCTL_XTAL_6MHZ);
    IntMasterEnable();
    Uart0Init(19200);
    Uart1Init(19200);
    DPRINTF(("Bat=%d  ,cha=%x ,Temp=%f \n",1,20,3.0));
//    ADCBAT_init();
//    Ssi0Init();   //AD7367
    //spi_ad7705Init();   //AD7705
    IoPortInit();	  //IO口初始化
//  I2CM_Init(); //Fm31256
    //TimerInit();
    PIN_JR_relay(ERelay_off);
    PIN_JRTG_relay(ERelay_off);
    PIN_JUNX_relay(ERelay_off);
    PIN_JUN_relay(ERelay_off);
    PIN_JUX_relay(ERelay_off);
    FlashUsecSet(49);
    AD7367_init();
    AD7705_init();
    //   PIN_JR_relay(ERsample_1M);
    /*
    {

      uint32 i;
      set.Debug=EDebug_sub;
      set.Fre=EFre_500;

      gainchange();
      Vac_read();
      for(i=0;i<500;i++)
           {

            Fourier_Samplestart(); ;
    		delay(0xf000*200);
           }
    }

    */
    /*
    	{
    		 uint32 i;
    	     set.Debug=EDebug_sub;
    	     set.Fre=EFre_000;
    		 V_read();
    		 for(i=0;i<50;i++)
    		 	{

    			  DPRINTF(("I=%x   \n",Read_ad7705_I(0x07,1)));
    		 	}

    		 for(i=0;i<50;i++)
    		 	{

    			  DPRINTF(("U=%x \n",Read_ad7705_U(0x07,1)));
    		 	}
             for(i=0;i<500;i++)
               {
                R_test();
    			delay(0xf000*200);
               }
        }
    */
    modifyK_js();
    rx_flag=0;
    while(1)
    {
        // uint8 option=0;

        if((rx_flag==rx_succeed))
        {

            Sendstc_ask();
            set.Work=0x0f&rx_data.mune.workcommand;
            set.Debug=0x0f&(rx_data.mune.workcommand>>4);
            set.Fre=rx_data.mune.Fre;
            set.Voltage=rx_data.mune.Voltage;
            rx_flag=0x00;

            switch(set.Work)
            {
            case EstartV_main:
                V_read();
                break;
            case  EstartTg_main://AC
                Fourier_Samplestart();
                PIN_JRTG_relay(ERelay_off);
                PIN_JUNX_relay(ERelay_off);
                PIN_JUN_relay(ERelay_off);
                PIN_JUX_relay(ERelay_off);
                break;
            case  EstartR_main://DC
                R_test();
                PIN_JRTG_relay(ERelay_off);
                break;
            case 	Emodifyin_main:
                modify_save();
                modifyK_js();
                //DPRINTF(("In \n"));
                break;
            case  Emodifyout_main	:
                delay(0x80000);
                modify_ToView();
                modifyK_js();
                //DPRINTF(("out \n"));
                break;
            case  EstartX_main  :
                Vacx_read();
                break;

            case ERelay_main:
                PIN_JRTG_relay(ERelay_on);
                PIN_JR_relay(ERsample_50);
                break;
            default :
                SysCtlReset();
                break;

            }
            if((rx_flag==rx_succeed))
            {
                if(set.Work==0x0f&rx_data.mune.workcommand)
                {
                    rx_flag=0;
                }
            }

        }
    }
Пример #7
0
int main ( void )
{
	//uint8_t static active= 0;
	//uint8_t static ledstat;
	SystemInit();//系统时钟等初始化

	if(SysTick_Config(72000*1))	 //配置错误返回1,max 16777216   默认72Mhz 时钟 ,1ms延时
	{							
		//LED4_ON; 	//错误处理 		
		while(1);
	}
	
	LED_Init();	 //LED端口初始化
	LED2_ON;
	NVIC_Configuration();//设置NVIC中断分组2:2位抢占优先级,2位响应优先级
	
	
	Uart1Init ( 115200 ); //串口初始化为115200

	GSM_RST = 0; //启动GSM模块
	
	delay_ms(1800);
	USB_Port_Set(0); 	//USB???
	delay_ms(700);
	USB_Port_Set(1);	//USB????
 	Set_USBClock();   
 	USB_Interrupts_Config();    
 	USB_Init();	
	
	
	Uart2Init ( 115200 ); //串口初始化为115200
	Uart3Init ( 115200 );//串口初始化为115200

	//Uart1SendStr(STR("uart1 init\r\n"));

	//Uart2SendStr(STR("uart2 init\r\n"));

	//Uart3SendStr(STR("uart3 init\r\n"));
	
	C_bt_init();
	C_bt_module_reset();
	C_bt_module_init();

	GSM_RST = 1; //启动GSM模块
	while(1)
	{
		
		if(C_bt_device_active())
		{
			LED2_ON;
			if(USB_USART_RX_STA&0x8000){
				//delay_ms(100);
				C_bt_sendBinary((char*)USB_USART_RX_BUF,USB_USART_RX_STA&0x3FFF);
				USB_USART_RX_STA=0;	
			}		
		}
		else
		{
			LED2_OFF;
		}
		
		if((ms_timer %2) == 0){
			C_bt_step();
		}
		
		//模块初始化
		if(C_bt_selftest()){
			LED2_OFF;
		}else{
			//LED2_ON;			
		}
	}
}
Пример #8
0
  main()
  {
     uint8 option=0;
     uint8 key;
  
    SysCtlClockSet(SYSCTL_SYSDIV_4| SYSCTL_USE_PLL | SYSCTL_OSC_MAIN | SYSCTL_XTAL_6MHZ);
    Uart0Init(19200);
	Uart1Init(9600);
	Uart2Init(19200);
    IntMasterEnable();
    SysLinearTimer =0;
    IoPortInit();	  //IO口初始化
    I2C1Init() ;//Fm31256
   	TimerInit();
	xs6963_init();
	PIN_TDA7367stand_Write(ETDA7367work_no);
	FlashUsecSet(49);
	//T1Init_LM331();
    DPRINTF(("Bat=%d  ,cha=%d ,Temp=%d \n",1,2,3));
    Usb_Host_Init();  
    mainHandleinit();
	
    signPWM_init(50.0);
    PWM_sign_stop();
	/*LCD初始化*/
	start_mune();
	/* fm31256 eeprom 8 */
    readbyte_much(setsto_addr,settype_nub,set.byte );
 	/*修正系数*/
    modify_read();
	/**/
	Oiltempset.oilTwork=EOiltemp_Workon; 
	/*lm331初始化 温度测量使用*/
	T1Init_LM331();
	/*系统节拍*/
    SysLinearTimer=0;	
	while(SysLinearTimer<3*TIMER_FREQ)//后台参数设置
     {
       key=Keyset.keyEfficiency;
       if(key==key_modify)
    	 {
		   while(Keyset.keyEfficiency==key_modify); 
    	   option++;
		   if(option>=4)
	       	{
			   modify_read();//读取修正参数
			   TgC_read();
    	       modify();//修正
	   	    }
       	 }
    }	
   	modifyK_js();
    SysLinearTimer=0;
    rx_flag=0;
 	option=0;
mainset_go:
	  key=Keyset.keyEfficiency;
      mainset_mune();
      Reversepic(mainset_lin+option*mainset_high, mainset_column, mainset_high, 2*4);
	  while(1)
	  	{
	      while(key==Keyset.keyEfficiency)
		    {
		     if(SysLinearTimer>(3*TIMER_FREQ/4))  	   
              {
			    // Temp_account();
			  if(TRUE_z==Gandispose())//地线检测
			  	{
			  	  mainset_mune();
				  Reversepic(mainset_lin+option*mainset_high, mainset_column, mainset_high, 2*4);
			  	}
           	 
			   read_time();
			    {
				 uint8 byte[12];	
			   	 Clock_viewxs(byte)	;
			   	}
				 SysLinearTimer=0;
			 }
	  	   }
		   key=Keyset.keyEfficiency;
		  /*按键处理*/
           switch(key)
		   	{
               case key_no:
			   case key_back:
			   	        continue;
		       case key_down:
			   case key_up:
			   	      Reversepic(mainset_lin+option*mainset_high, mainset_column, mainset_high, 2*4);
			   	      option=keyoption_js(option, key,4,Emune_key);//
					  Reversepic(mainset_lin+option*mainset_high, mainset_column, mainset_high, 2*4);
                    /*  if(key==key_up)
                      	{
                         PWM_sign_acc(0.0, 0.0);
						 delay(0x80000);
                         PIN_DCAC_pwm(EDC_power);
                      	 PWM_sign_acc(0.0, 0.7);
                      	}
					  else
					  	{
					  	 PWM_sign_acc(0.0, 0.0);
						 delay(0x80000);
					   	 PIN_DCAC_pwm(EAC_power);
					  	 PWM_sign_acc(50.0, 0.8);
					  	}
					 */ 	
					  break;				
			   case key_ok:	
			   	      switch(option)
			   	      	{
			   	      	 
                          case ELan_main://语言
							    set.mune.Langue++;
							    set.mune.Langue&=0x01;
                                //ShowtextLine(mainset_lin+option*mainset_high, mainset_column+0x10,Lanset_p[set.mune.Langue]);	
								break;
					      case EOilset_main://油样设置
						  	    oidset();
							    break;
						  case EView_main://历史数据
						  	    Viewdata_Hander();
						  	   break;
						  case EClock_main://时钟设置
							   clockset_mune();
                               break;			   
			   	      	}					  
					    goto mainset_go ;
               case key_oil:                     			
			          Oilclear();//排油
					 break;
			   	     					  
		   	}
	  	}
}	
Пример #9
0
void init_ap( void ) {
#ifndef SINGLE_MCU /** init done in main_fbw in single MCU */
  hw_init();
  sys_time_init();

#ifdef LED
  led_init();
#endif

#ifdef ADC
  adc_init();
#endif
#endif /* SINGLE_MCU */

  /************* Sensors initialization ***************/
#ifdef USE_INFRARED
  ir_init();
#endif
#ifdef USE_GYRO
  gyro_init();
#endif
#ifdef USE_GPS
  gps_init();
#endif
#ifdef USE_UART0
  Uart0Init();
#endif
#ifdef USE_UART1
  Uart1Init();
#endif
#ifdef USE_UART2
  Uart2Init();
#endif
#ifdef USE_UART3
  Uart3Init();
#endif
#ifdef USE_USB_SERIAL
  VCOM_init();
#endif

#ifdef USE_GPIO
  GpioInit();
#endif

#ifdef USE_I2C0
  i2c0_init();
#endif
#ifdef USE_I2C1
  i2c1_init();
#endif
#ifdef USE_I2C2
  i2c2_init();
#endif

  /************* Links initialization ***************/
#if defined USE_SPI
  spi_init();
#endif
#if defined MCU_SPI_LINK
  link_mcu_init();
#endif
#ifdef MODEM
  modem_init();
#endif

  /************ Internal status ***************/
  h_ctl_init();
  v_ctl_init();
  estimator_init();
#ifdef ALT_KALMAN
  alt_kalman_init();
#endif
  nav_init();

  modules_init();

  /** - start interrupt task */
  int_enable();

  /** wait 0.5s (historical :-) */
  sys_time_usleep(500000);

#if defined GPS_CONFIGURE
  gps_configure_uart();
#endif

#if defined DATALINK

#if DATALINK == XBEE
  xbee_init();
#endif
#endif /* DATALINK */

#if defined AEROCOMM_DATA_PIN
  IO0DIR |= _BV(AEROCOMM_DATA_PIN);
  IO0SET = _BV(AEROCOMM_DATA_PIN);
#endif

  power_switch = FALSE;

  /************ Multi-uavs status ***************/

#ifdef TRAFFIC_INFO
  traffic_info_init();
#endif

}
Пример #10
0
void ImuNodeInit(uint32_t f_osc)
{
    // And configure the Peripheral Pin Select pins:
    PPSUnLock;
	PPSUnLock;

#ifdef __dsPIC33FJ128MC802__
	// To enable ECAN1 pins: TX on 7, RX on 4
	PPSOutput(OUT_FN_PPS_C1TX, OUT_PIN_PPS_RP7);
	PPSInput(IN_FN_PPS_C1RX, IN_PIN_PPS_RP4);

	// To enable UART1 pins: TX on 9, RX on 8
	PPSOutput(OUT_FN_PPS_U1TX, OUT_PIN_PPS_RP9);
	PPSInput(IN_FN_PPS_U1RX, IN_PIN_PPS_RP8);
#elif __dsPIC33EP256MC502__
	// To enable ECAN1 pins: TX on 39, RX on 36
	PPSOutput(OUT_FN_PPS_C1TX, OUT_PIN_PPS_RP39);
	PPSInput(IN_FN_PPS_C1RX, IN_PIN_PPS_RP36);

	// To enable UART1 pins: TX on 41, RX on 40
	PPSOutput(OUT_FN_PPS_U1TX, OUT_PIN_PPS_RP41);
	PPSInput(IN_FN_PPS_U1RX, IN_PIN_PPS_RP40);
#endif

    PPSLock;
	
	// Also disable analog functionality on B8 so we can use it for UART1 RX.
	// This only applies to the dsPIC33E family.
#ifdef __dsPIC33EP256MC502__
	ANSELBbits.ANSB8 = 0;
#endif

    // Initialize status LEDs for use.
	// A3 (output): Red LED, off by default, and is solid when the system hit a fatal error.
    _TRISA3 = 0; 
    _LATA3 = 0;
	// A4 (output): Amber LED, blinks at 1Hz when disconnected from the IMU, 2Hz otherwise.
    _TRISA4 = 0;
    _LATA4 = 0;

	_TRISB7 = 0; // Set ECAN1_TX pin to an output
	_TRISB4 = 1; // Set ECAN1_RX pin to an input;

    // Set up UART1 for 115200 baud. There's no round() on the dsPICs, so we implement our own.
	double brg = (double)f_osc / 2.0 / 16.0 / 115200.0 - 1.0;
	if (brg - floor(brg) >= 0.5) {
		brg = ceil(brg);
	} else {
		brg = floor(brg);
	}
	Uart1Init((uint16_t)brg);

    // Initialize ECAN1 for input and output using DMA buffers 0 & 2
    Ecan1Init(f_osc, NODE_CAN_BAUD);

    // Set the node ID
    nodeId = CAN_NODE_IMU_SENSOR;

    // Set up all of our tasks.
    // Blink at 1Hz
    if (!AddMessageRepeating(&taskSchedule, TASK_BLINK, RATE_TRANSMIT_BLINK_DEFAULT)) {
            FATAL_ERROR();
    }
    // Transmit node status at 2Hz
    if (!AddMessageRepeating(&taskSchedule, TASK_TRANSMIT_STATUS, RATE_TRANSMIT_NODE_STATUS)) {
            FATAL_ERROR();
    }
    // Transmit IMU data at 25Hz
    if (!AddMessageRepeating(&taskSchedule, TASK_TRANSMIT_IMU, RATE_TRANSMIT_IMU_DATA)) {
            FATAL_ERROR();
    }
}