⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 motor_test.mp

📁 用ICC编写的程序包括SPI
💻 MP
字号:
/*============================================
12月17日修改:
              1.面板上的初始定位测试只测试不起弧
              2.上升下降限位需现场调试
==============================================*/
/*============================================
1月13日修改:
              1.PWM调速修改,加面板PWM限制,经测试
              2.上升下降限位需现场调试
==============================================*/
#include <inavr.h>
#include "ADC.h"
#include "IO.h"
#include "time.h"
#include "USART.h"
#include "PositionPI.h"
#include "main.h"
#include <math.h>

__no_init ARC_CONTROL_PARA_EROM   Arc_Para_Erom;
ARC_CONTROL_PARA_SRAM   Arc_Para_Sram;
MACHINE_STATE           machine_state_flag;
MACHINE_CONTROL         machine_control;
unsigned char __eeprom *pPara_Erom;
unsigned char *pPara_Sram;

void (*ControlHandle[])(void)=
{
        pwm_open_loop,
	Arc_Welding_Control_For_Debug_step,
	
};
void UpBrake(void)
{
  #if (BRAKE_ENABLE>0)
    machine_control.pwm=UP_BRAKE_PWM;
    pwm_open_loop();
    Delay_10ms(Arc_Para_Sram.Up_Brake_Time);
    machine_control.pwm=STOP_PWM;
    pwm_open_loop();
  #endif
}
void DownBrake(void)
{
  #if (BRAKE_ENABLE>0)
    machine_control.pwm=DOWN_BRAKE_PWM;
    pwm_open_loop();
    Delay_10ms(Arc_Para_Sram.Down_Brake_Time);
    machine_control.pwm=STOP_PWM;
    pwm_open_loop();
  #endif
}

void Eeprom2Sram(unsigned char __eeprom *pPara_Erom,unsigned char *pPara_Sram,unsigned char size)
{
  unsigned char i;
  for(i=0;i<size;i++)
    *(pPara_Sram++)=*(pPara_Erom++);
}
void Sram2Eeprom(unsigned char *pPara_Sram,unsigned char __eeprom *pPara_Erom,unsigned char size)
{
  unsigned char i;
  for(i=0;i<size;i++)
   *(pPara_Erom++)= *(pPara_Sram++);
}
///////////////////////////////////////////////////////////////////////////////////////

int main( void )
{

  __disable_interrupt();
  Eeprom2Sram((unsigned char __eeprom *)&Arc_Para_Erom
             ,(unsigned char *)&Arc_Para_Sram
             ,sizeof(ARC_CONTROL_PARA_EROM));
  PortInit();
  adc_init();
  USART_Init();
  timer1_init();
  Arc_Welding_Control_For_Debug_initialize(1);  //初始化PID参数模块
  timer2_init();
  machine_state_flag.value=0;           //清所有的标志
  InDelayTime=FALSE;
  machine_control.DelayTime=0;          //机器定时长度,无条件延时,即等待延时
  machine_control.TouchCount=0;         //For 智能调节
  machine_control.IntelAdjMemory=0;     //智能调节
  machine_control.pwm=STOP_PWM;
  pwm_open_loop();
  PORTD|=(1<<IR2112_EN);                //使能IR2112
  PORTC&=~(1<<PORTECT_LOCATION_DISABLE); //保护帽定位使能
  Arc_Welding_Control_For_Debug_P.Kp_Gain=(real_T)(Arc_Para_Sram.Auto_Pwm_Amp);
  __enable_interrupt();


  machine_control.pwm=RESET_PWM;
#if ((DEBUG)>0)
  while(1)
  {
    if(InDelayTime==FALSE)
    {
      Delay(100);
      PutChar(0xaa);
    }
  } //For Commuincation debug
#endif

  while(1)
  {

    //参数设置状态
    __enable_interrupt();
    while(machine_state_flag.bits.configuration_ok==0)
    {
      switch(machine_state_flag.bits.machine_state)
      {
          case  MACHINE_RESET:
          case  MACHINE_HANDLE:
                              pwm_open_loop();
                              machine_control.pwm=STOP_PWM;
                              break;
          case  MACHINE_AUTO :
                       switch(machine_state_flag.bits.control_state)
                             {
                                case OPEN_LOOP :
                                                pwm_open_loop();
                                                machin

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -