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

📄 execute.c

📁 freescale最新的16位单片机
💻 C
字号:
/******************************************************************************
*
* Freescale Semiconductor Inc.
* (c) Copyright 2004-2006 Freescale Semiconductor, Inc.
* ALL RIGHTS RESERVED.
*
***************************************************************************//*!
*
* @file      execute.c
*
* @author    R89994
* 
* @version   1.0.10.0
* 
* @date      Jul-28-2006
* 
* @brief     Executing required task with expected inputs
*
******************************************************************************/

#include "main.h"
#include "spi.h"
#include "LCD_HD44780.h"
#include "DoorLock.h"
#include "tft_main_file.h"
#include "controlfunctions.h"
#include "start_Ux_device.h"
#include "controllbuttons.h"
#include "analog_values.h"
#include <hidef.h>

extern Byte     fm_status, fm_task, fm_action0, fm_action1, fm_action2, fm_action3,
                fm_action4, fm_action5, fm_action6, fm_action7, fm_action8, fm_action9,
                fm_action10, fm_action11, fm_action12, fm_action13, fm_action14;

extern Byte     last_action0, last_action1, last_action2, last_action3,
                last_action4, last_action5, last_action6, last_action7, last_action8,
                last_action9, last_action10, last_action11, last_action12, last_action13,
                last_action14;

extern Word     fm_analog1, fm_analog2, fm_analog3, fm_analog4, fm_analog5, 
                fm_analog6, fm_analog7, fm_analog11, fm_analog12, fm_analog13,
                fm_analog14, fm_analog21, fm_analog22, fm_analog23, fm_analog24;


extern Byte     lastmsgU201, lastmsgU202;
extern UNION16  lastmsgU401, lastmsgU402, lastmsgU403, lastmsgU501, lastmsgU601, lastmsgU605;
extern SPI24    lastmsgU404, lastmsgU405;


extern Byte     countercheck;   // counter of cycles 30 ms; value is <0,7>                  

extern TASK     arrayTask[SIZE_TASK_ARRAY];
extern Byte     actualTask;   // pointer to actualy solved task in arrayTask 

extern Bool     disable_55W;                 



void ExecuteTask (Byte actual)
{

    Byte        temp8;
    UNION16     temp16;
    SPI24       temp24;
    


switch (arrayTask[actual].number) 
    {
    case MANUAL_GO_TO_FM:
        arrayTask[actual].priority = 0; // erase task from list
    break;

    // Go to sleep mode SBC, there are no power supply for microporcessor
    case LOWPWR_GO_TO_SLEEP:            // Sleep mode enter procedure
																																				  
		 Lowpwr_go_to_sleep();
		 arrayTask[actual].priority = 0;    // erase task from list
    
    break;

    // Go to pseu or full Stop Mode procesor. Waking up is provided by IRQ pin
    case LOWPWR_GO_TO_PSEUDOSTOP:
        
        Lowpwr_go_to_pseudostop();
        arrayTask[actual].priority = 0; // erase task from list
    
    break;
    case LOWPWR_GO_TO_FULLSTOP:
    		
    		Lowpwr_go_to_stop();
    		arrayTask[actual].priority = 0; // erase task from list
    		
    break;

    // Show SBC Watchdog timeou
    case LOWPWR_WD_TIMEOUT:	
        
        Lowpwr_wd_timeout();
        arrayTask[actual].priority = 0; // erase task from list
        
    break;

    // Show write valid watchdog data but outside watchdog window 
    case LOWPWR_WD_WINDOW_OUT:
    
				Lowpwr_wd_window_out();
        arrayTask[actual].priority = 0; // erase task from list
        
    break;

    // start procedure of Lo speed CAN - SBC (U201 - MC33889
    case U202_START:
        
        U202_start();
        arrayTask[actual].priority = 0; // erase task from list
        
    break;

    // start procedure of Hi Speed CAN - SBC (U201 - MC33742)
    case U201_START: 
        
        U201_start();
        arrayTask[actual].priority = 0; // erase task from list
        
    break;

    // start procedure of 
    case U401_START:                    // MC 33580 e-Switch
        
        U401_start();
        arrayTask[actual].priority = 0; // erase task from list
        
    break;

    case U402_START:                    // MC 33874 e-Switch
        
				U402_start();
        arrayTask[actual].priority = 0; // erase task from list
        
    break;

    case U403_START:
        
        U403_start();
        arrayTask[actual].priority = 0; // erase task from list
        
    break;

    case U404_START:
        
				U404_start();
        arrayTask[actual].priority = 0; // erase task from list
        
    break;

    case U405_START:
				
				U405_start();
        arrayTask[actual].priority = 0; // erase task from list
        
    break;

    case U501_START:
        arrayTask[actual].priority = 0; // erase task from list
    break;

    case U601_START:
        arrayTask[actual].priority = 0; // erase task from list
    break;

    case U602_START:
        arrayTask[actual].priority = 0; // erase task from list
    break;

    case U604_START:
        arrayTask[actual].priority = 0; // erase task from list
    break;

    case U605_START:
        
        U605_start();
        arrayTask[actual].priority = 0; // erase task from list
        
    break;

    case ANALOG_BUTTON_SELECTION:
        
        Analog_button_selection();
        arrayTask[actual].priority = 0; // erase task from list
        
    break;

    case DOOR_LOCK_UNLOCK:					//unlock
        arrayTask[actual].priority = DoorOpen(); // erase task from list
    break;

    case DOOR_LOCK_LOCK:					 //lock
        arrayTask[actual].priority = DoorClose();// erase task from list
    break;

    case LIGHTS_55W_OFF:
        
        Lights_55W_OFF();
        arrayTask[actual].priority = 0; // erase task from list
        
    break;

    case LIGHTS_55W_ON:

          if(arrayTask[actual].parameter == 0x0)
          {
           Lights_55WA_on();	 //lightA on  
           arrayTask[actual].parameter = 0x4F0;
          }
        
          arrayTask[actual].parameter -= 1;
        
          if(arrayTask[actual].parameter == 0x1)//wait
          {									 
           Lights_55WB_on();							 //lightB on
           arrayTask[actual].priority = 0; // erase task from list
           arrayTask[actual].parameter = 0;
          }		
        
    break;

    case LIGHTS_5W_OFF:
        
        Lights_5W_off();
        arrayTask[actual].priority = 0;   // erase task from list
        
    break;

    case LIGHTS_5W_ON:
        
        Lights_5W_on();
        arrayTask[actual].priority = 0;   // erase task from list
        
    break;

    case CABIN_LIGHTS1_OFF:
				
				Cabin_lights_1_off();
        arrayTask[actual].priority = 0;   // erase task from list
        
    break;

    case CABIN_LIGHTS1_ON:
        
        Cabin_lights_1_on();
        arrayTask[actual].priority = 0;   // erase task from list
        
    break;

     case CABIN_LIGHTS2_OFF:
				
				Cabin_lights2_off();
        arrayTask[actual].priority = 0;   // erase task from list
        
    break;

    case CABIN_LIGHTS2_ON:
        
        Cabin_lights2_on();
        arrayTask[actual].priority = 0;   // erase task from list
        
    break;

   case DASH_BOARD_LIGHTS_OFF:
        
        Dash_board_lights_off();
        arrayTask[actual].priority = 0;  // erase task from list
        
    break;

    case DASH_BOARD_LIGHTS_ON:
        
        Dash_board_lights_on();
        arrayTask[actual].priority = 0;  // erase task from list
        
    break;

    case WASHER_PUMP_OFF:
        
        Washer_pump_off();
        arrayTask[actual].priority = 0;  // erase task from list
        
    break;

    case WASHER_PUMP_ON:
        
        Washer_pump_on();
        arrayTask[actual].priority = 0;  // erase task from list
        
    break;

    case MIRROR_OFF:
        arrayTask[actual].priority = 0;  // erase task from list
    break;

    case MIRROR_FOLD:
        arrayTask[actual].priority = 0;  // erase task from list
    break;

    case MIRROR_DOWN:
        arrayTask[actual].priority = 0;  // erase task from list
    break;

    case MIRROR_UP:
        arrayTask[actual].priority = 0;  // erase task from list
    break;

    case MIRROR_LEFT:
        arrayTask[actual].priority = 0;  // erase task from list
    break;

    case MIRROR_RIGHT:
        arrayTask[actual].priority = 0;  // erase task from list
    break;

    case WINDOW_LIFT_OFF:
         arrayTask[actual].priority = 0;  // erase task from list
    break;

    case WINDOW_LIFT_DOWN:
        arrayTask[actual].priority = 0;  // erase task from list
    break;

    case WINDOW_LIFT_UP:
        arrayTask[actual].priority = 0;  // erase task from list
    break;

    case MSDI_OFF:
        
				Msdi_off();
        arrayTask[actual].priority = 0;  // erase task from list
        
    break;

    case MSDI_SINK_CURRENT:
        
				Msdi_sink_current();
        arrayTask[actual].priority = 0;  // erase task from list
        
    break;

    case MSDI_SOURCE_CURRENT:
        
				Msdi_source_current();
        arrayTask[actual].priority = 0;  // erase task from list
        
    break;

    case CAN_MESSAGE_STOP:
        arrayTask[actual].priority = 0;  // erase task from list
    break;

    case CAN_MESSAGE_START:
        arrayTask[actual].priority = 0;  // erase task from list
    break;

    case LIN_MESSAGE_STOP:
        arrayTask[actual].priority = 0;  // erase task from list
    break;

    case LIN_MESSAGE_START:
        arrayTask[actual].priority = 0;  // erase task from list
    break;

    case ANALOG_AMBIENT_TEMPERATURE:
        
        Analog_ambient_temperature();
        arrayTask[actual].priority = 0;  // erase task from list
        
    break;

    case ANALOG_LIGHT_INTENSITY:
        
        Analog_light_intensity();
        arrayTask[actual].priority = 0;  // erase task from list
        
    break;

    case ANALOG_VOLTAGE1:
        
        Analog_voltage1();
        arrayTask[actual].priority = 0;  // erase task from list
        
    break;

    case ANALOG_VOLTAGE2:
        
        Analog_voltage2();
        arrayTask[actual].priority = 0;  // erase task from list
        
    break;

    case ANALOG_JAGUAR_TEMPERATURE:
        
        Analog_jaguar_temperature();
        arrayTask[actual].priority = 0;  // erase task from list
        
    break;

    case ANALOG_JAGUAR_CURRENT_HS0:
        
				Analog_jaguar_current_hso();
        arrayTask[actual].priority = 0; // erase task from list
        
    break;

    case ANALOG_JAGUAR_CURRENT_HS1:
        
        Analog_jaguar_current_hs1();
        arrayTask[actual].priority = 0; // erase task from list
        
    break;

    case ANALOG_JAGUAR_CURRENT_HS2:
        
        Analog_jaguar_current_hs2();
        arrayTask[actual].priority = 0; // erase task from list
        
    break;

    case ANALOG_JAGUAR_CURRENT_HS3:
        
        Analog_jaguar_current_hs3();
        arrayTask[actual].priority = 0; // erase task from list
        
    break;

    case ANALOG_PUMA_TEMPERATURE:
        
        Analog_puma_temperature();
        arrayTask[actual].priority = 0; // erase task from list
        
    break;

    case ANALOG_PUMA_CURRENT_HS0:
        
        Analog_puma_current_hs0();
        arrayTask[actual].priority = 0; // erase task from list
        
    break;

    case ANALOG_PUMA_CURRENT_HS1:
        
        Analog_puma_current_hs1();
        arrayTask[actual].priority = 0; // erase task from list
        
    break;

    case ANALOG_PUMA_CURRENT_HS2:
        
        Analog_puma_curent_hs2();
        arrayTask[actual].priority = 0; // erase task from list
        
    break;

    case ANALOG_PUMA_CURRENT_HS3:
        
        Analog_puma_current_hs3();
        arrayTask[actual].priority = 0; // erase task from list
        
    break;

    case LCD_START:
		arrayTask[actual].parameter -= 1;
		if(arrayTask[actual].parameter == 0)
		{
            LcdReset();
            LcdSetup(LCD_CURSORRIGHT | LCD_SHIFTOFF | LCD_DISPLAYON | LCD_CURSOROFF | LCD_BLINKOFF | LCD_LARGEFONT ) ;  					  
            arrayTask[actual].priority = 0; // erase task from list
		}
    break;

    case FOLLOWMASTERDOORLOCK:
    
      arrayTask[actual].priority = 0;      // erase task from list
     // FollowMasterDoorLock function not implemented - need to change HW
     
    break;

    case LCD_WELCOME: 
		arrayTask[actual].parameter -= 1;
		if(arrayTask[actual].parameter == 0)
		{
            LcdOutTextL(0,"Freescale semiconductor");
            arrayTask[actual].priority = 0; // erase task from list
		}
    break;
      
    case LCD_MESSAGE:
       	arrayTask[actual].parameter -= 1;
    	if(arrayTask[actual].parameter == 0)
    	{
            LcdShowFaultStatus(fm_status);
            arrayTask[actual].priority = 0; // erase task from list
    	}
    break;

    case TFT_INIT:
        arrayTask[actual].parameter -= 1;
        if(arrayTask[actual].parameter == 0)
        {
            TFT_Init();
            arrayTask[actual].parameter = 0;
            arrayTask[actual].priority = 0; // erase task from list
        }
    break;

    case CABIN_DIMM_OFF:
    if (PITTF_PTF2) 	// 20 ms 
    {
        PITTF = PITTF_PTF2_MASK; // clear the PIT channel 2 interrupt flag
        arrayTask[actual].parameter += 1;
        PWMDTY6 = (Byte) arrayTask[actual].parameter;
        PWMDTY7 = (Byte) arrayTask[actual].parameter;
        if (arrayTask[actual].parameter == PWM_MIN)
        {
            arrayTask[actual].priority = 0;  // erase task from list
        }
    }
    break;

    case CABIN_DIMM_ON:
        PWMDTY6 = PWM_MAX;
        PWMDTY7 = PWM_MAX;
        arrayTask[actual].priority = 0; // erase task from list
    break;

      default: 
      break;
    }
}

⌨️ 快捷键说明

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