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

📄 priolow.c

📁 freescale最新的16位单片机
💻 C
📖 第 1 页 / 共 2 页
字号:
#include "main.h"
#include "spi.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;

// last fail of each device                     
extern Byte  failCAN, failLINx, failJAGUAR, failPUMA, failCOSS,
                lastfailCAN, lastfailLIN, lastfailJAGUAR, lastfailPUMA, lastfailCOSS, 
                lastfaildevice;
                     
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                  



void PriorityLow (Byte actual)
{
    Word        i;
    UNION16     temp16;
    SPI24       temp24;


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

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

    case LIGHTS_55W_OFF:
        CSB_U401 = 0;        // Chipselect e-Switch MC33580 U401 - PORTB3
        lastmsgU401.BYTES.msB = U401_OCR0;
        lastmsgU401.BYTES.lsB = U401_NO_HS;
        temp16 = ReadWriteSPI16bit(lastmsgU401);
        CSB_U401 = 1;
        arrayTask[actual].priority = 0; // erase task from list
    break;

    case LIGHTS_55W_ON:
        CSB_U401 = 0;        // Chipselect e-Switch MC33580 U401 - PORTB3
        lastmsgU401.BYTES.msB = U401_OCR0;
        lastmsgU401.BYTES.lsB = (U401_HS0 | U401_HS1);
        temp16 = ReadWriteSPI16bit(lastmsgU401);
        CSB_U401 = 1;
        arrayTask[actual].priority = 0; // erase task from list
    break;

    case LIGHTS_5W_OFF:
        CSB_U402 = 0;        // Chipselect e-Switch MC33874 U402 - PORTK7
        lastmsgU402.BYTES.msB = U402_OCR0;
        lastmsgU402.BYTES.lsB = U402_NO_HS;
        temp16 = ReadWriteSPI16bit(lastmsgU402);
        CSB_U402 = 1;
        arrayTask[actual].priority = 0; // erase task from list
    break;

    case LIGHTS_5W_ON:
        CSB_U402 = 0;        // Chipselect e-Switch MC33874 U402 - PORTK7
        lastmsgU402.BYTES.msB = U402_OCR0;
        lastmsgU402.BYTES.lsB = (U402_HS0 | U402_HS1 | U402_HS2 | U402_HS3);
        temp16 = ReadWriteSPI16bit(lastmsgU402);
        CSB_U402 = 1;
        arrayTask[actual].priority = 0; // erase task from list
    break;

    case CABIN_LIGHTS1_OFF:
        CSB_U403 = 0;        // Chipselect COSS MC33880 U403 - PAD13
        lastmsgU403.BYTES.msB = U403_OPEN_LOAD_ON;
        lastmsgU403.BYTES.lsB = (lastmsgU403.BYTES.lsB & U403_LIGHTS1_OFF_AND);
        temp16 = ReadWriteSPI16bit(lastmsgU403);
        CSB_U403 = 1; 
        arrayTask[actual].priority = 0; // erase task from list
    break;

    case CABIN_LIGHTS1_ON:
        CSB_U403 = 0;        // Chipselect COSS MC33880 U403 - PAD13
        lastmsgU403.BYTES.msB = U403_OPEN_LOAD_ON;
        lastmsgU403.BYTES.lsB = (lastmsgU403.BYTES.lsB | U403_LIGHTS1_ON_AND);
        temp16 = ReadWriteSPI16bit(lastmsgU403);
        CSB_U403 = 1;
        arrayTask[actual].priority = 0; // erase task from list
    break;

     case CABIN_LIGHTS2_OFF:
        CSB_U403 = 0;        // Chipselect COSS MC33880 U403 - PAD13
        lastmsgU403.BYTES.msB = U403_OPEN_LOAD_ON;
        lastmsgU403.BYTES.lsB = (lastmsgU403.BYTES.lsB & U403_LIGHTS2_OFF_AND);
        temp16 = ReadWriteSPI16bit(lastmsgU403);
        CSB_U403 = 1; 
        arrayTask[actual].priority = 0; // erase task from list
    break;

    case CABIN_LIGHTS2_ON:
        CSB_U403 = 0;        // Chipselect COSS MC33880 U403 - PAD13
        lastmsgU403.BYTES.msB = U403_OPEN_LOAD_ON;
        lastmsgU403.BYTES.lsB = (lastmsgU403.BYTES.lsB | U403_LIGHTS2_ON_AND);
        temp16 = ReadWriteSPI16bit(lastmsgU403);
        CSB_U403 = 1;
        arrayTask[actual].priority = 0; // erase task from list
    break;

   case DASH_BOARD_LIGHTS_OFF:
        CSB_U405 = 0;
        lastmsgU405.comm = U405_TRISTATE_COMMAND_SG;
        lastmsgU405.data.w = U405_DASH_OFF;
        temp24 = ReadWriteSPI24bit(lastmsgU405);        // 
        CSB_U405 = 1;
        arrayTask[actual].priority = 0;                     // erase task from list
    break;

    case DASH_BOARD_LIGHTS_ON:
        CSB_U405 = 0;
        lastmsgU405.comm = U405_TRISTATE_COMMAND_SG;
        lastmsgU405.data.w = U405_DASH_ON;
        temp24 = ReadWriteSPI24bit(lastmsgU405);
        CSB_U405 = 1;
        arrayTask[actual].priority = 0;                     // erase task from list
    break;

    case WASHER_PUMP_OFF:
        CSB_U401 = 0;        // Chipselect e-Switch MC33580 U401 - PORTB3
        lastmsgU401.BYTES.msB = U401_OCR0;
        if (fm_action2)
            lastmsgU401.BYTES.lsB = (U401_HS0 | U401_HS1);
        else
            lastmsgU401.BYTES.lsB = U401_NO_HS;
        temp16 = ReadWriteSPI16bit(lastmsgU401);
        CSB_U401 = 1;
        arrayTask[actual].priority = 0;                     // erase task from list
    break;

    case WASHER_PUMP_ON:
        CSB_U401 = 0;        // Chipselect e-Switch MC33580 U401 - PORTB3
        lastmsgU401.BYTES.msB = U401_OCR0;
        if (fm_action2)
            lastmsgU401.BYTES.lsB = (U401_HS0 | U401_HS1 | U401_HS2 | U401_HS3);
        else
            lastmsgU401.BYTES.lsB = (U401_HS2 | U401_HS3);
        temp16 = ReadWriteSPI16bit(lastmsgU401);
        CSB_U401 = 1;
        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:
        CSB_U404 = 0;
        lastmsgU404.comm = U404_TRISTATE_COMMAND_SP;
        lastmsgU404.data.w = U404_TRISTATE_OFF;
        temp24 = ReadWriteSPI24bit(lastmsgU404);        // 
        CSB_U404 = 1;

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

    case MSDI_SINK_CURRENT:
        CSB_U404 = 0;
        temp24.comm = U404_SETTING_COMMAND;
        temp24.data.w = U404_SETTING_SINK;
        temp24 = ReadWriteSPI24bit(temp24);        // 
        CSB_U404 = 1;

		for (i=0; i < WAIT_5; i++);

        CSB_U404 = 0;
        lastmsgU404.comm = U404_TRISTATE_COMMAND_SP;
        lastmsgU404.data.w = U404_TRISTATE_SINK;
        temp24 = ReadWriteSPI24bit(lastmsgU404);        // 
        CSB_U404 = 1;

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

    case MSDI_SOURCE_CURRENT:
        CSB_U404 = 0;
        temp24.comm = U404_SETTING_COMMAND;
        temp24.data.w = U404_SETTING_SOURCE;
        temp24 = ReadWriteSPI24bit(temp24);        // 
        CSB_U404 = 1;

		for (i=0; i < WAIT_5; i++);

        CSB_U404 = 0;
        lastmsgU404.comm = U404_TRISTATE_COMMAND_SP;
        lastmsgU404.data.w = U404_TRISTATE_SOURCE;
        temp24 = ReadWriteSPI24bit(lastmsgU404);        // 
        CSB_U404 = 1;

        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

⌨️ 快捷键说明

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