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

📄 priomid.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 PriorityMid (Byte actual)
{
    Word        i;
    Byte        temp8;
    UNION16     temp16;
    SPI24       temp24;

    
switch (arrayTask[actual].number) 
    {
    case U202_START:
        while(!PITTF_PTF0);
        PITTF = 0x01;               // timer 0 flag down
        PT0AD1_PT0AD114 = 0;		// CSB U202 - PAD22
        temp8 = ReadWriteSPI8bit(U202_MCR, U202_WRITE, U202_NORMAL);	// normal mode active
        PT0AD1_PT0AD114 = 1;

        WAIT_300ns;

        PT0AD1_PT0AD114 = 0;
        temp8 = ReadWriteSPI8bit(U202_TIM, U202_WRITE, U202_350MS);     // feed watch dog
        PT0AD1_PT0AD114 = 1;
        while(!PITTF_PTF0);
        arrayTask[actual].priority = 0; // erase task from list
    break;

    case U201_START: 
        PTS_PTS5 = 0;		// CSB U201 - PTS5
        temp8 = ReadWriteSPI8bit(U201_MCR, U201_WRITE, U201_NORMAL);    // normal mode active
        PTS_PTS5 = 1;
        arrayTask[actual].priority = 0; // erase task from list
    break;

    case U401_START:        // MC 33580 e-Switch
        RST_U401 = 1;         // RST signal is pulling up - PAD9
        for (i=0; i < WAIT_10; i++);

		CSB_U401 = 0;              // CSB U401 - PORTB3
        temp16.BYTES.msB = U401_SOCHLR_HS0;
        temp16.BYTES.lsB = (U401_SOCH_70A | U401_SOCL_8p6A);
        temp16 = ReadWriteSPI16bit(temp16);
		CSB_U401 = 1;
        WAIT_300ns;         //  waiting at least 300ns between CS - see datasheet MC33580
		CSB_U401 = 0;              // CSB U401 - PORTB3
        temp16.BYTES.msB = U401_SOCHLR_HS1;
        temp16.BYTES.lsB = (U401_SOCH_70A | U401_SOCL_8p6A);
        temp16 = ReadWriteSPI16bit(temp16);
		CSB_U401 = 1;
        WAIT_300ns;         //  waiting at least 300ns between CS - see datasheet MC33580
		CSB_U401 = 0;              // CSB U401 - PORTB3
        temp16.BYTES.msB = U401_SOCHLR_HS2;
        temp16.BYTES.lsB = (U401_SOCH_70A | U401_SOCL_8p6A);
        temp16 = ReadWriteSPI16bit(temp16);
		CSB_U401 = 1;
        WAIT_300ns;         //  waiting at least 300ns between CS - see datasheet MC33580
		CSB_U401 = 0;              // CSB U401 - PORTB3
        temp16.BYTES.msB = U401_SOCHLR_HS3;
        temp16.BYTES.lsB = (U401_SOCH_70A | U401_SOCL_8p6A);
        temp16 = ReadWriteSPI16bit(temp16);
		CSB_U401 = 1;
        WAIT_300ns;         //  waiting at least 300ns between CS - see datasheet MC33580
		CSB_U401 = 0;              // CSB U401 - PORTB3
        temp16.BYTES.msB = U401_CDTOLR_HS0;
        temp16.BYTES.lsB = (U401_OCLT_DIS_DNU | U401_OCL_DIS);
        temp16 = ReadWriteSPI16bit(temp16);
		CSB_U401 = 1;
        WAIT_300ns;         //  waiting at least 300ns between CS - see datasheet MC33580
		CSB_U401 = 0;              // CSB U401 - PORTB3
        temp16.BYTES.msB = U401_CDTOLR_HS1;
        temp16.BYTES.lsB = (U401_OCLT_DIS_DNU | U401_OCL_DIS);
        temp16 = ReadWriteSPI16bit(temp16);
		CSB_U401 = 1;
        WAIT_300ns;         //  waiting at least 300ns between CS - see datasheet MC33580
		CSB_U401 = 0;              // CSB U401 - PORTB3
        temp16.BYTES.msB = U401_CDTOLR_HS2;
        temp16.BYTES.lsB = (U401_OCLT_DIS_DNU | U401_OCL_DIS);
        temp16 = ReadWriteSPI16bit(temp16);
		CSB_U401 = 1;
        WAIT_300ns;         //  waiting at least 300ns between CS - see datasheet MC33580
		CSB_U401 = 0;              // CSB U401 - PORTB3
        temp16.BYTES.msB = U401_CDTOLR_HS3;
        temp16.BYTES.lsB = (U401_OCLT_DIS_DNU | U401_OCL_DIS);
        temp16 = ReadWriteSPI16bit(temp16);
		CSB_U401 = 1;
        WAIT_300ns;         //  waiting at least 300ns between CS - see datasheet MC33580
		CSB_U401 = 0;              // CSB U401 - PORTB3
        temp16.BYTES.msB = U401_DICR_HS0;
        temp16.BYTES.lsB = (U401_DIR_DIS);
        temp16 = ReadWriteSPI16bit(temp16);
		CSB_U401 = 1;
        WAIT_300ns;         //  waiting at least 300ns between CS - see datasheet MC33580
		CSB_U401 = 0;              // CSB U401 - PORTB3
        temp16.BYTES.msB = U401_DICR_HS1;
        temp16.BYTES.lsB = (U401_DIR_DIS);
        temp16 = ReadWriteSPI16bit(temp16);
		CSB_U401 = 1;
        WAIT_300ns;         //  waiting at least 300ns between CS - see datasheet MC33580
		CSB_U401 = 0;              // CSB U401 - PORTB3
        temp16.BYTES.msB = U401_DICR_HS2;
        temp16.BYTES.lsB = (U401_DIR_DIS);
        temp16 = ReadWriteSPI16bit(temp16);
		CSB_U401 = 1;
        WAIT_300ns;         //  waiting at least 300ns between CS - see datasheet MC33580
		CSB_U401 = 0;              // CSB U401 - PORTB3
        temp16.BYTES.msB = U401_DICR_HS3;
        temp16.BYTES.lsB = (U401_DIR_DIS);
        temp16 = ReadWriteSPI16bit(temp16);
		CSB_U401 = 1;
        WAIT_300ns;         //  waiting at least 300ns between CS - see datasheet MC33580
		CSB_U401 = 0;              // CSB U401 - PORTB3
        temp16.BYTES.msB = U401_UOVR;
        temp16.BYTES.lsB = (U401_UV_EN | U401_OV_EN);
        temp16 = ReadWriteSPI16bit(temp16);
		CSB_U401 = 1;
        WAIT_300ns;         //  waiting at least 300ns between CS - see datasheet MC33580
		CSB_U401 = 0;              // CSB 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 U402_START:        // MC 33874 e-Switch
        RST_U402 = 1;
        for (i=0; i < WAIT_10; i++);

		CSB_U402 = 0;              // CSB U402 - PTK7
        temp16.BYTES.msB = U402_SOCHLR_HS0;
        temp16.BYTES.lsB = (U402_SOCH_35A | U402_SOCL_2p4A);
        temp16 = ReadWriteSPI16bit(temp16);
		CSB_U402 = 1;
        WAIT_300ns;         //  waiting at least 300ns between CS - see datasheet MC33874
		CSB_U402 = 0;              // CSB U402 - PTK7
        temp16.BYTES.msB = U402_SOCHLR_HS1;
        temp16.BYTES.lsB = (U402_SOCH_35A | U402_SOCL_2p4A);
        temp16 = ReadWriteSPI16bit(temp16);
		CSB_U402 = 1;
        WAIT_300ns;         //  waiting at least 300ns between CS - see datasheet MC33874
		CSB_U402 = 0;              // CSB U402 - PTK7
        temp16.BYTES.msB = U402_SOCHLR_HS2;
        temp16.BYTES.lsB = (U402_SOCH_35A | U402_SOCL_2p4A);
        temp16 = ReadWriteSPI16bit(temp16);
		CSB_U402 = 1;
        WAIT_300ns;         //  waiting at least 300ns between CS - see datasheet MC33874
		CSB_U402 = 0;              // CSB U402 - PTK7
        temp16.BYTES.msB = U402_SOCHLR_HS3;
        temp16.BYTES.lsB = (U402_SOCH_35A | U402_SOCL_2p4A);
        temp16 = ReadWriteSPI16bit(temp16);
		CSB_U402 = 1;
        WAIT_300ns;         //  waiting at least 300ns between CS - see datasheet MC33874
		CSB_U402 = 0;              // CSB U402 - PTK7
        temp16.BYTES.msB = U402_CDTOLR_HS0;
        temp16.BYTES.lsB = U402_OCLT_DIS_75ms;
        temp16 = ReadWriteSPI16bit(temp16);
		CSB_U402 = 1;
        WAIT_300ns;         //  waiting at least 300ns between CS - see datasheet MC33874
		CSB_U402 = 0;              // CSB U402 - PTK7
        temp16.BYTES.msB = U402_CDTOLR_HS1;
        temp16.BYTES.lsB = U402_OCLT_DIS_75ms;
        temp16 = ReadWriteSPI16bit(temp16);
		CSB_U402 = 1;
        WAIT_300ns;         //  waiting at least 300ns between CS - see datasheet MC33874
		CSB_U402 = 0;              // CSB U402 - PTK7
        temp16.BYTES.msB = U402_CDTOLR_HS2;
        temp16.BYTES.lsB = U402_OCLT_DIS_75ms;

⌨️ 快捷键说明

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