Beispiel #1
1
void Mclib_API_init(void)
{
	ENC_Init();
	
  SVPWM_3ShuntInit();

  TB_Init();

//#ifdef BRAKE_RESISTOR
//    MCL_Brake_Init();
//#endif

	/* TIM1 Counter Clock stopped when the core is halted */
  DBGMCU_Config(DBGMCU_TIM1_STOP, ENABLE);
  
  // Init Bus voltage and Temperature average  
  MCL_Init_Arrays();
	
  Res_f=1;

}
// Main
void main (void)
{
	// Init the system clock
	SystemInitClock();
	
	// Enable the peripherals
	SystemEnablePeripheral(PERIPHERAL_AFIO);
	SystemEnablePeripheral(PERIPHERAL_IOPA);
	SystemEnablePeripheral(PERIPHERAL_IOPB);
	SystemEnablePeripheral(PERIPHERAL_IOPC);
	SystemEnablePeripheral(PERIPHERAL_IOPD);
	SystemEnablePeripheral(PERIPHERAL_IOPE);
	SystemEnablePeripheral(PERIPHERAL_DMA1);

	// Init the FLASH chip and SPI module
	// Init the ENC chip and SPI module
	FLASH_Init();
	SPI1_Init();
	SPI2_Init();
	ENC_Init();

	// Init kernel
	KERNEL_Init();

	// Create tasks
	KERNEL_AddTask(&TaskDescriptor_TaskENC);

	// Start kernel (this function never returns)
	KERNEL_Start();
}
Beispiel #3
0
void setup()
{
  // Serial.begin(9600);

  // init
  resetData();
  // dec_init();

//  pixel_segment = 0;
//  pixel_count = 0;
//  pixel_start = 0;
//  for (uint8_t i = 0; i < DEC_MAX_NUMBER_OF_PIXELS_PER_LIGHT_STRIP; ++i)
//  {
//    red_buffer[i] = (uint8_t)0;
//    green_buffer[i] = (uint8_t)0;
//    blue_buffer[i] = (uint8_t)0;
//  }

  CPU_PRESCALE(0); /* Run at 16 MHz */
  DDRD = _BV(DDD6); /* Teensy onboard Led Enable */
  /* ADC */
  DDRF = ~_BV(DDF0); /* F0 as Input */
  //PORTF = _BV(PORTF0);
  /* Enable Pullup */
  DIDR0 = _BV(ADC0D); /* Disable Digital Pin */

  // initialize the digital pin as an output to blink the LED.
  // pinMode(led_pin, OUTPUT);

  dbg_init
  ; /* If Debug State On, Init USB */
  SPI_Init(SPI_DP2, SPI_PRESC_1); /* AVR SPI Init */
  do
  {
    ENC_Init(MACAddr); /* ENC28J60 Init */
    _delay_ms(500);
    aux_init = ENC_RevID;
  } while (!aux_init);

  ENC_LEDInit; /* ENC Leds Init */
  is_setup = 0;
}
Beispiel #4
0
/*******************************************************************************
* Function Name  : main
* Description    : Main program.
* Input          : None
* Output         : None
* Return         : None
*******************************************************************************/
int main(void)
{			
	SystemInit();
	
	/*速度反馈初始化*/	
	ENC_Init( );
	
	/*电流反馈初始化*/
	SVPWM_3ShuntInit();
	
	/*时基初始化,并启动TIM6计算速度,初始化PID*/
	TB_Init( );
	Tim6_Init( );
	PID_Init(&PID_Torque_InitStructure, &PID_Flux_InitStructure, &PID_Speed_InitStructure);	
	
	/*温度,电压数组初始化*/
	MCL_Init_Arrays();  

	/*交互界面初始化*/		
	KEYS_Init( );
	LCD_Display_init();
	/*-------------------*/
	Res_f=1; //上电完成

	//串口示波器初始化
	usart_init(115200);
	while(1)
	{ 
		
		/*UI显示,以及电源报警,用户管理*/
		Display_LCD( );
		MCL_ChkPowerStage( );    
		KEYS_process( );

		/*状态机开启运行*/
		switch (State)
		{
			case IDLE:    //通过sel按键进入INIT ,在WAIT和FAULT中进入IDEL
			break;

			case INIT:
				MCL_Init( );//初始化电机控制层
				TB_Set_StartUp_Timeout(3000);
				State = START; 
			break;

			case START:  
				//passage to state RUN is performed by startup functions; 
			break;

			case RUN:  //电机运行过程中,检测速度反馈是否存在问题      
				if(ENC_ErrorOnFeedback() == TRUE)
				{
					MCL_SetFault(SPEED_FEEDBACK);
				}

			break;  

			case STOP:  //关闭TIM1的输出,状态转为等待,停止电流检测,设置Valpha和Vbeta为0,计算三相占空比 
				TIM_CtrlPWMOutputs(TIM1, DISABLE);
				State = WAIT;								        
				SVPWM_3ShuntAdvCurrentReading(DISABLE);											
				Stat_Volt_alfa_beta.qV_Component1 = Stat_Volt_alfa_beta.qV_Component2 = 0;
				SVPWM_3ShuntCalcDutyCycles(Stat_Volt_alfa_beta);
				TB_Set_Delay_500us(2000); // 1 sec delay		
			break;

			case WAIT:    // 等待速度为零时,将状态转为IDEL
				if (TB_Delay_IsElapsed( ) == TRUE) 
				{
					if(ENC_Get_Mechanical_Speed( ) ==0)             
					{              
						State = IDLE;              
					}
				}
			break;

			case FAULT: //状态变为IDEL,全局变量设为第一次启动                  
				if (MCL_ClearFault( ) == TRUE)
				{
					if(wGlobal_Flags & SPEED_CONTROL == SPEED_CONTROL)
					{
						//速度控制模式
						bMenu_index = CONTROL_MODE_MENU_1;
					}
					else
					{
						//力矩控制模式
						bMenu_index = CONTROL_MODE_MENU_6;
					} 					
					State = IDLE;
					wGlobal_Flags |= FIRST_START;
					Hall_Start_flag=0;
				}
			break;

			default:        
			break;
		}	
		usart_watcher(Speed_Iq_Id_watch);
		/********End of Usart_watch**************/
	}
}
Beispiel #5
0
int main(void)
{
	utDisInt;
	utInitInt();	
	utInitSys();
	utEnInt;
	/* Can bus init */
	can_Init();
	/* iobus init */
	iobus_init();

	/* 步进电机初始化 */
#if defined(motor_device)

	/* L6470端口及SPI初始化 */
	dSPIN_Peripherals_Init();
	
	/* L6470复位 */
	dSPIN_Reset_And_Standby(dSPIN_Device_All);

	/* L6470中断初始化 */
	dSPIN_Interrupt_Channel_Config();

	/* 电机参数初始化 */
	motor_init_set();
	
	ENC_Init();
	
#endif

	utPrt("********************************\r\n");
	utPrt("CPU: STM32F103RCT6 at 72 MHz	\r\n");
	utPrt("Board: TMCS    Board (Version2) \r\n");
	utPrt("Editor: Tsui					\r\n");
	utPrt("Compant: TMCS					\r\n");
	utPrt("Shell: Shell Version1			\r\n");
	utPrt("Compile Date: %s	   \r\n",__DATE__);
	utPrt("Compile TIME: %s	   \r\n",__TIME__);
	utPrt("********************************\r\n");

	/* set can baud rate at 250Kbit */
	can_set_baudrate(can_parameter._t_bit_rate);

#if 0
	g_tCanTxMsg.DLC 	= 3;
	g_tCanTxMsg.Data[0] = 0x11;
	g_tCanTxMsg.Data[1] = 0x22;
	g_tCanTxMsg.Data[2] = 0x33;
	SendCanMsg(&g_tCanTxMsg); 
#endif

	DetectCal();
	iobus_reload();

	utDelay1s(1);
	ENC_Clean();

	/* Start os */
	utPrt("Start utOs......\n");

	utStartOS();	
}