📄 priomid.c
字号:
#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 + -