?? app_boarddevctrl.c
字號:
/*******************************************************************************/
/**
Copyright (c) 2007 Freescale Semiconductor
\file app_boardDevCtrl.c
\brief APD devices control
\author Freescale Semiconductor
\author RC574C/ B05114
\version 0.2
\date March/2008
*/
/*******************************************************************************/
#include "app_boardDevCtrl.h"
#include "main.h"
#include "lle_GPIO.h"
#include "des_MC33972.h"
#include "des_MC33887.h"
#include "des_MC33742.h"
#include "des_MC33879.h"
#include "des_MC15XS3400.h"
#include "des_MC35XS3400.h"
#include "des_MC10XS3412.h"
#include "lle_XGPWM.h"
// FreeMASTER control variables
extern UINT8 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, fm_action15;
// eSwitch pwm control selection
extern UINT8 pwm1, pwm2, pwmCtr1, pwmCtr2, pwmCtr3;
static UINT8 u8LED_pwm;
// Door lock status
UINT8 lockStatus;
// MC33972 MSDI II tristate SP/SG cmd
UINT8 msdiIISpTrist;
UINT16 msdiIISgTrist;
/*******************************************************************************/
/**
* \brief Main board ADP devices watchdogs update
* \author rc574c
* \param none
* \return void
*/
void app_boardWatchdogUpd(void)
{
// Clear MC33742 watchdog?
if (fm_action13 != WD_TIMEOUT)
{
// Clear MC33742 watchdog
des_MC33742_ClearWDT();
}
// MC15XS3400, MC35XS3400, MC10XS3412 watchdogs toggled, when control command was sent.
}
/*******************************************************************************/
/**
* \brief Brake LED light turn ON - MC15XS3400 HS0 ON
* \author rc574c
* \param none
* \return void
*/
void app_lightBrakeON(void)
{
des_MC15XS3400_HS_Control(XS_HS0, XS_ON, PWM_MAX);
}
/*******************************************************************************/
/**
* \brief Brake LED light turn OFF - MC15XS3400 HS0 OFF
* \author rc574c
* \param none
* \return void
*/
void app_lightBrakeOFF(void)
{
des_MC15XS3400_HS_Control(XS_HS0, XS_OFF, PWM_MAX);
}
/*******************************************************************************/
/**
* \brief Cabin lights turn ON - MC15XS3400 HS1,HS2 ON
* \author rc574c
* \param none
* \return void
*/
void app_lightCabinON(void)
{
if (pwmCtr3)
{
// Cabin Lightning PWM controlled by Analog Voltage 2 (MSDI Board II)
des_MC15XS3400_HS_Control(XS_HS1, XS_ON, pwm2);
des_MC15XS3400_HS_Control(XS_HS2, XS_ON, pwm2);
}
else
{
// Cabin Lightning PWM set to default value
des_MC15XS3400_HS_Control(XS_HS1, XS_ON, PWM_DEFAULT);
des_MC15XS3400_HS_Control(XS_HS2, XS_ON, PWM_DEFAULT);
}
}
/*******************************************************************************/
/**
* \brief Cabin lights turn OFF - MC15XS3400 HS1,HS2 OFF
* \author rc574c
* \param none
* \return void
*/
void app_lightCabinOFF(void)
{
des_MC15XS3400_HS_Control(XS_HS1, XS_OFF, PWM_DEFAULT);
des_MC15XS3400_HS_Control(XS_HS2, XS_OFF, PWM_DEFAULT);
}
/*******************************************************************************/
/**
* \brief Turn lights turn ON - MC35XS3400 HS0,HS1 ON
* \author rc574c
* \param none
* \return void
*/
void app_lightTurnON(void)
{
if (pwmCtr1)
{
// Turn Lightning PWM controlled by Analog Voltage 2 (MSDI Board II)
des_MC35XS3400_HS_Control(XS_HS0, XS_ON, pwm2);
des_MC35XS3400_HS_Control(XS_HS1, XS_ON, pwm2);
}
else
{
// Turn Lightning PWM set to default value
des_MC35XS3400_HS_Control(XS_HS0, XS_ON, PWM_DEFAULT);
des_MC35XS3400_HS_Control(XS_HS1, XS_ON, PWM_DEFAULT);
}
}
/*******************************************************************************/
/**
* \brief Turn lights turn OFF - MC35XS3400 HS0,HS1 OFF
* \author rc574c
* \param none
* \return void
*/
void app_lightTurnOFF(void)
{
des_MC35XS3400_HS_Control(XS_HS0, XS_OFF, PWM_DEFAULT);
des_MC35XS3400_HS_Control(XS_HS1, XS_OFF, PWM_DEFAULT);
}
/*******************************************************************************/
/**
* \brief Rear lights turn ON - MC35XS3400 HS2,HS3 ON
* \author rc574c
* \param none
* \return void
*/
void app_lightRearON(void)
{
if (pwmCtr2)
{
// Rear Lightning PWM controlled by Analog Voltage 2 (MSDI Board II)
des_MC35XS3400_HS_Control(XS_HS2, XS_ON, pwm2);
des_MC35XS3400_HS_Control(XS_HS3, XS_ON, pwm2);
}
else
{
// Rear Lightning PWM set to default value
des_MC35XS3400_HS_Control(XS_HS2, XS_ON, PWM_DEFAULT);
des_MC35XS3400_HS_Control(XS_HS3, XS_ON, PWM_DEFAULT);
}
}
/*******************************************************************************/
/**
* \brief Rear lights turn OFF - MC35XS3400 HS2,HS3 OFF
* \author rc574c
* \param none
* \return void
*/
void app_lightRearOFF(void)
{
des_MC35XS3400_HS_Control(XS_HS2, XS_OFF, PWM_DEFAULT);
des_MC35XS3400_HS_Control(XS_HS3, XS_OFF, PWM_DEFAULT);
}
/*******************************************************************************/
/**
* \brief 55W lights turn ON - MC10XS3412 HS0,HS1 ON
* \author rc574c
* \param none
* \return void
*/
void app_light55WON(void)
{
des_MC10XS3412_HS_Control(XS_HS0, XS_ON, PWM_MAX);
des_MC10XS3412_HS_Control(XS_HS1, XS_ON, PWM_MAX);
}
/*******************************************************************************/
/**
* \brief 55W lights turn OFF - MC10XS3412 HS0,HS1 OFF
* \author rc574c
* \param none
* \return void
*/
void app_light55WOFF(void)
{
des_MC10XS3412_HS_Control(XS_HS0, XS_OFF, PWM_MAX);
des_MC10XS3412_HS_Control(XS_HS1, XS_OFF, PWM_MAX);
}
/*******************************************************************************/
/**
* \brief Washer pump turn ON - MC10XS3412 HS2 ON
* \author rc574c
* \param none
* \return void
*/
void app_washerPumpON(void)
{
des_MC10XS3412_HS_Control(XS_HS2, XS_ON, PWM_MAX);
}
/*******************************************************************************/
/**
* \brief Washer pump turn OFF - MC10XS3412 HS2 OFF
* \author rc574c
* \param none
* \return void
*/
void app_washerPumpOFF(void)
{
des_MC10XS3412_HS_Control(XS_HS2, XS_OFF, PWM_MAX);
}
/*******************************************************************************/
/**
* \brief Imobilizer LED light turn ON - MC10XS3412 HS3 ON
* \author rc574c
* \param none
* \return void
*/
void app_lightImobON(void)
{
des_MC10XS3412_HS_Control(XS_HS3, XS_ON, PWM_MAX);
}
/*******************************************************************************/
/**
* \brief Imobilizer LED light turn OFF - MC10XS3412 HS3 OFF
* \author rc574c
* \param none
* \return void
*/
void app_lightImobOFF(void)
{
des_MC10XS3412_HS_Control(XS_HS3, XS_OFF, PWM_MAX);
}
/*******************************************************************************/
/**
* \brief Door lock CLOSE.
First function call - MC33887 IN1 ON, IN2 OFF
Second function call - MC33887 IN1 OFF, IN2 OFF
* \author rc574c
* \param none
* \return void
*/
void app_doorLockCLOSE(void)
{
if (lockStatus == UNLOCKED)
{
des_MC33887_IN1_H_IN2_L();
}
else
{
des_MC33887_IN1_L_IN2_L();
}
lockStatus = LOCKED;
}
/*******************************************************************************/
/**
* \brief Door lock OPEN.
First function call - MC33887 IN1 OFF, IN2 ON
Second function call - MC33887 IN1 OFF, IN2 OFF
* \author rc574c
* \param none
* \return void
*/
void app_doorLockOPEN(void)
{
if (lockStatus == LOCKED)
{
des_MC33887_IN1_L_IN2_H();
}
else
{
des_MC33887_IN1_L_IN2_L();
}
lockStatus = UNLOCKED;
}
/*******************************************************************************/
/**
* \brief Interior LED lights turn ON - MC33879 IN6 ON/PWM
* \author RC574C/ B05114
* \param none
* \return void
*/
void app_lightInteriorON(void)
{
// If variable voltage 1 (knob in analog stimulus board)
// is less than ~4V, use PWM for gradual turn-on:
if (pwm1 <= 0xCC)
{
if (u8LED_pwm > pwm1)
{
u8LED_pwm = u8LED_pwm - 25; // Decrease PWM duty cycle
}
if (u8LED_pwm < pwm1)
{
u8LED_pwm = u8LED_pwm + 25; // Increase PWM duty cycle
}
// COSS output will follow PWM input stimulus
des_MC33879_Output_Control(COSS_OUT6,OFF);
// Set desired PWM duty cycle
lle_Set_PWM_DutyCycle(&xPWM_ch[0],u8LED_pwm);
}
else
{ // If Analog Voltage exceeds ~4V apply full ON
des_MC33879_Output_Control(COSS_OUT6,ON);
}
}
/*******************************************************************************/
/**
* \brief Interior LED lights turn OFF - MC33879 IN6 OFF
* \author RC574C/ B05114
* \param none
* \return void
*/
void app_lightInteriorOFF(void)
{
// Use PWM for gradual turn-off:
if (u8LED_pwm > 0)
{
u8LED_pwm = u8LED_pwm - 25; // Decrease PWM duty cycle
}
// COSS output will follow PWM input stimulus
des_MC33879_Output_Control(COSS_OUT6,OFF);
// Set PWM duty cycle
lle_Set_PWM_DutyCycle(&xPWM_ch[0],u8LED_pwm);
}
/*******************************************************************************/
/**
* \brief Dashboard LED lights turn ON - MC33972 SG6,SG8,SG10,SG12 ON
* \author rc574c
* \param none
* \return void
*/
void app_lightDashboardON(void)
{
// MSDI Board II Blue LEDs ON (SG6, SG8, SG10, SG12)
msdiIISgTrist = msdiIISgTrist & ((~MSDI_SG6) & (~MSDI_SG8) & (~MSDI_SG10) & (~MSDI_SG12));
des_MC33972_Set_SG_HighImpedance(MSDI_II, msdiIISgTrist);
}
/*******************************************************************************/
/**
* \brief Dashboard LED lights turn OFF - MC33972 SG6,SG8,SG10,SG12 OFF
* \author rc574c
* \param none
* \return void
*/
void app_lightDashboardOFF(void)
{
// MSDI Board II Blue LEDs OFF (SG6, SG8, SG10, SG12)
msdiIISgTrist = msdiIISgTrist | (MSDI_SG6 | MSDI_SG8 | MSDI_SG10 | MSDI_SG12);
des_MC33972_Set_SG_HighImpedance(MSDI_II, msdiIISgTrist);
}
/*******************************************************************************/
/**
* \brief MSDI II none current sink/source demonstration - MC33972 SG1,SP7 tristated
* \author rc574c
* \param none
* \return void
*/
void app_msdiCurNon(void)
{
// MSDI Board II MSDI source yellow LED OFF, SG1
msdiIISgTrist = msdiIISgTrist | MSDI_SG1;
des_MC33972_Set_SG_HighImpedance(MSDI_II, msdiIISgTrist);
// MSDI Board II MSDI sink orange LED OFF, SP7
msdiIISpTrist = msdiIISpTrist | MSDI_SP7;
des_MC33972_Set_SP_HighImpedance(MSDI_II, msdiIISpTrist);
}
/*******************************************************************************/
/**
* \brief MSDI II current sink demonstration - MC33972 SP7 ON
* \author rc574c
* \param none
* \return void
*/
void app_msdiCurSink(void)
{
// MSDI Board II MSDI sink orange LED ON, SP7
msdiIISpTrist = msdiIISpTrist & ~MSDI_SP7;
des_MC33972_Set_SP_HighImpedance(MSDI_II, msdiIISpTrist);
}
/*******************************************************************************/
/**
* \brief MSDI II current source demonstration - MC33972 SG1 ON
* \author rc574c
* \param none
* \return void
*/
void app_msdiCurSrc(void)
{
// MSDI Board II MSDI source yellow LED ON, SG1
msdiIISgTrist = msdiIISgTrist & ~MSDI_SG1;
des_MC33972_Set_SG_HighImpedance(MSDI_II, msdiIISgTrist);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -