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

📄 request.c

📁 freescale最新的16位单片机
💻 C
📖 第 1 页 / 共 2 页
字号:
/******************************************************************************
*
* Freescale Semiconductor Inc.
* (c) Copyright 2004-2005 Freescale Semiconductor, Inc.
* ALL RIGHTS RESERVED.
*
***************************************************************************//*!
*
* @file      request.c
*
* @author    r89994
* 
* @version   1.0.18.0
* 
* @date      Aug-1-2006
* 
* @brief     Checking analog values - 30ms
*            running tasks via Freemaster
*******************************************************************************/
#include <stdlib.h>
#include "main.h"
#include "spi.h"
#include "request.h"
#include <linxgate.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                  



/******************************************************************************
* Module            : void CheckingHW30ms(void)
* Description       : Function checked status of HW, it is called every 30 ms
* Global Data       : countercheck,fm_action 
* Static Global Data: none
* Returns           : none
* Arguments         : none
* Special Issues    : none
******************************************************************************/


void CheckingHW30ms (void)
{

Byte                temp8, temptask, newtask;
UNION16             temp16;
SPI24               temp24;

    switch (fm_task)
    {
        case MANUAL_CONTROLL:
            CSB_U404 = 0;
            temp24.comm = U404_SWITCH_STATUS;
            temp24.data.w = U404_ZERO;
            temp24 = ReadWriteSPI24bit(temp24);        // 
            CSB_U404 = 1;

            if (temp24.data.BYTES.msB & U404_TEST_SG8_SET)
                fm_action8 = 4;
            else
                fm_action8 = 0;
            RequestFM(MIRROR);

            if (temp24.data.BYTES.msB & U404_TEST_SG9_SET)
                fm_action8 = 5;
            else
                fm_action8 = 0;
            RequestFM(MIRROR);
                
            if (temp24.data.BYTES.msB & U404_TEST_SG10_SET)
                fm_action8 = 2;
            else
                fm_action8 = 0;
            RequestFM(MIRROR);

            if (temp24.data.BYTES.msB & U404_TEST_SG11_SET)
                fm_action8 = 3;
            else
                fm_action8 = 0;
            RequestFM(MIRROR);
                
            if (temp24.data.BYTES.msB & U404_TEST_SG12_SET)
                fm_action6 = 1;
            else
                fm_action6 = 0;
            RequestFM(DASH_BOARD_LIGHTS);

            if (temp24.data.BYTES.msB & U404_TEST_SP0_SET)
                fm_action9 = 2;
            else
                fm_action9 = 0;
            RequestFM(WINDOW_LIFT);

            if (temp24.data.BYTES.msB & U404_TEST_SP1_SET)
                fm_action9 = 1;
            else
                fm_action9 = 0;
            RequestFM(WINDOW_LIFT);

            if (temp24.data.BYTES.lsB & U404_TEST_SG0_SET)
                fm_action3 = 1;
            else
                fm_action3 = 0;
            RequestFM(LIGHTS_5W);

            if (temp24.data.BYTES.lsB & U404_TEST_SG1_SET)
                fm_action2 = 1;
            else
                fm_action2 = 0;
            RequestFM(LIGHTS_55W);
                
            if (temp24.data.BYTES.lsB & U404_TEST_SG2_SET)
                fm_action4 = 1;
            else
                fm_action4 = 0;
            RequestFM(CABIN_LIGHTS1);

            if (temp24.data.BYTES.lsB & U404_TEST_SG3_SET)
                fm_action13 = 1;
            else
                fm_action13 = 0;
            RequestFM(CABIN_LIGHTS2);
                
            if (temp24.data.BYTES.lsB & U404_TEST_SG4_SET)
                fm_action5 = 1;
            else
                fm_action5 = 0;
            RequestFM(CABIN_DIMM);

            if (temp24.data.BYTES.lsB & U404_TEST_SG5_SET)
                fm_action1 = 1;
            else
                fm_action1 = 0;
            RequestFM(DOOR_LOCK);
                
            if (temp24.data.BYTES.lsB & U404_TEST_SG6_SET)
                fm_action7 = 1;
            else
                fm_action7 = 0;
            RequestFM(WASHER_PUMP);

            if (temp24.data.BYTES.lsB & U404_TEST_SG7_SET)
                fm_action8 = 1;
            else
                fm_action8 = 0;
            RequestFM(MIRROR);

            lastmsgU404 = temp24;
        break;

        case DOOR_LOCK:
            CSB_U404 = 0;
            temp24.comm = U404_SWITCH_STATUS;
            temp24.data.w = U404_ZERO;
            temp24 = ReadWriteSPI24bit(temp24);         
            CSB_U404 = 1;        
        break;

        case LIGHTS_55W:
            switch(countercheck)
            {
                case ZEROTH_30ms:
                case SECOND_30ms:
                case FOURTH_30ms:
                case SIXTH_30ms:
                    temptask = FindTask(LOW, ANALOG_JAGUAR_CURRENT_HS0); 
                    if (temptask == NO_TASK)
                    {
                        newtask = NewTask();
                        if (arrayTask[newtask].priority < LOW)
                        {
                            arrayTask[newtask].priority = LOW;
                            arrayTask[newtask].number = ANALOG_JAGUAR_CURRENT_HS0;
                        }
                    }
                break;

                case FIRST_30ms:
                case THIRD_30ms:
                case FIFTH_30ms:
                case SEVENTH_30ms:
                    temptask = FindTask(LOW, ANALOG_JAGUAR_CURRENT_HS1); 
                    if (temptask == NO_TASK)
                    {
                        newtask = NewTask();
                        if (arrayTask[newtask].priority < LOW)
                        {
                            arrayTask[newtask].priority = LOW;
                            arrayTask[newtask].number = ANALOG_JAGUAR_CURRENT_HS1;
                        }
                    }
                break;
            }
        break;

        case LIGHTS_5W:
            switch(countercheck)
            {
                case ZEROTH_30ms:
                case FOURTH_30ms:
                    temptask = FindTask(LOW, ANALOG_PUMA_CURRENT_HS0); 
                    if (temptask == NO_TASK)
                    {
                        newtask = NewTask();
                        if (arrayTask[newtask].priority < LOW)
                        {
                            arrayTask[newtask].priority = LOW;
                            arrayTask[newtask].number = ANALOG_PUMA_CURRENT_HS0;
                        }
                    }
                break;

                case FIRST_30ms:
                case FIFTH_30ms:
                    temptask = FindTask(LOW, ANALOG_PUMA_CURRENT_HS1); 
                    if (temptask == NO_TASK)
                    {
                        newtask = NewTask();
                        if (arrayTask[newtask].priority < LOW)
                        {
                            arrayTask[newtask].priority = LOW;
                            arrayTask[newtask].number = ANALOG_PUMA_CURRENT_HS1;
                        }
                    }
                case SECOND_30ms:
                case SIXTH_30ms:
                    temptask = FindTask(LOW, ANALOG_PUMA_CURRENT_HS2); 
                    if (temptask == NO_TASK)
                    {
                        newtask = NewTask();
                        if (arrayTask[newtask].priority < LOW)
                        {
                            arrayTask[newtask].priority = LOW;
                            arrayTask[newtask].number = ANALOG_PUMA_CURRENT_HS2;
                        }
                    }
                break;

                case THIRD_30ms:
                case SEVENTH_30ms:
                    temptask = FindTask(LOW, ANALOG_PUMA_CURRENT_HS3); 
                    if (temptask == NO_TASK)
                    {
                        newtask = NewTask();
                        if (arrayTask[newtask].priority < LOW)
                        {
                            arrayTask[newtask].priority = LOW;
                            arrayTask[newtask].number = ANALOG_PUMA_CURRENT_HS3;
                        }
                    }
                break;
            }
        break;

        case CABIN_LIGHTS1:
        break;

        case CABIN_LIGHTS2:
        break;

        case CABIN_DIMM:
        break;

        case DASH_BOARD_LIGHTS:
        break;

        case WASHER_PUMP:
            switch(countercheck)
            {
                case ZEROTH_30ms:
                case SECOND_30ms:
                case FOURTH_30ms:
                case SIXTH_30ms:
                    temptask = FindTask(LOW, ANALOG_JAGUAR_CURRENT_HS2); 
                    if (temptask == NO_TASK)
                    {
                        newtask = NewTask();
                        if (arrayTask[newtask].priority < LOW)
                        {
                            arrayTask[newtask].priority = LOW;
                            arrayTask[newtask].number = ANALOG_JAGUAR_CURRENT_HS2;
                        }
                    }
                break;

                case FIRST_30ms:
                case THIRD_30ms:
                case FIFTH_30ms:
                case SEVENTH_30ms:
                    temptask = FindTask(LOW, ANALOG_JAGUAR_CURRENT_HS3); 
                    if (temptask == NO_TASK)
                    {
                        newtask = NewTask();
                        if (arrayTask[newtask].priority < LOW)
                        {
                            arrayTask[newtask].priority = LOW;
                            arrayTask[newtask].number = ANALOG_JAGUAR_CURRENT_HS3;
                        }
                    }
                break; 
            }
        break;

        case MIRROR:
        break;

        case WINDOW_LIFT:
        break;

        case MSDI:
            temptask = FindTask(MID, ANALOG_BUTTON_SELECTION); 
            if (temptask == NO_TASK)
            {
                newtask = NewTask();
                if (arrayTask[newtask].priority < MID)
                {
                    arrayTask[newtask].priority = MID;
                    arrayTask[newtask].number = ANALOG_BUTTON_SELECTION;
                }
            }
            
            switch (countercheck)
            {            
                case ZEROTH_30ms:
                    temptask = FindTask(LOW, ANALOG_VOLTAGE1); 
                    if (temptask == NO_TASK)
                    {
                        newtask = NewTask();
                        if (arrayTask[newtask].priority < LOW)
                        {
                            arrayTask[newtask].priority = LOW;
                            arrayTask[newtask].number = ANALOG_VOLTAGE1;
                        }
                    }
                break;

                case FIRST_30ms:
                    temptask = FindTask(LOW, ANALOG_VOLTAGE2); 
                    if (temptask == NO_TASK)
                    {
                        newtask = NewTask();
                        if (arrayTask[newtask].priority < LOW)
                        {
                            arrayTask[newtask].priority = LOW;
                            arrayTask[newtask].number = ANALOG_VOLTAGE2;
                        }
                    }
                break;

                case SECOND_30ms:
                    temptask = FindTask(LOW, ANALOG_AMBIENT_TEMPERATURE); 
                    if (temptask == NO_TASK)
                    {
                        newtask = NewTask();
                        if (arrayTask[newtask].priority < LOW)
                        {
                            arrayTask[newtask].priority = LOW;
                            arrayTask[newtask].number = ANALOG_AMBIENT_TEMPERATURE;
                        }

⌨️ 快捷键说明

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