📄 app_dali.c
字号:
// DALI code task ----------
#include "includes.h"
//#include "app_cfg.h"
//extern OS_EVENT *AppKbdQ;
extern OS_EVENT *AppKeyQ;
extern CPU_INT08U DisableMainMenu;
extern CPU_INT08U Menu_Value = 0; /* ca.*/
extern CPU_INT08U start_command =0; /* ca.*/
extern CPU_INT08U period; /* ca.*/
extern CPU_INT08U counter; /* ca.*/
extern CPU_INT08U start;
extern CPU_INT08U stop;
extern CPU_INT08U dali_bit;
extern CPU_INT08U dali_bitX;
void Run_DALI_CMD(CPU_INT08U address, CPU_INT08U command);
extern void DALI_New_Menu(void);//ca.
void DALI_KEY_Menu(void);
CPU_INT08U dali_addr;
CPU_INT08U dali_cmd;
//extern CPU_INT08U Key_Flag;
//------------------------ App Task Stuff --------------------------------
//------------------------ Defines ----------------------------------------
//------------------------KeyPad decode ----------------------------------
void AppTaskDali(void *p_arg)
{
void *msg;
CPU_INT08U err;
CPU_INT08U Menu_Value;
(void)p_arg;
while (DEF_TRUE) {
// DispStr(3,0,"F1");
if(DisableMainMenu == 1){
msg = OSQAccept(AppKeyQ, &err); //get keypad press //dali_stuff()
if(err != OS_Q_EMPTY && msg!=0)
{
Menu_Value = (CPU_INT32U)msg;
counter = 0;
if(Menu_Value == KEY_MENU){
DispStr(0,0,"1:LampOn 2:DimUp ");
DispStr(1,0,"3:DimDown 4:LampOff");
DispStr(2,0,"5:RGB Test ");
DispClrLine(3);
}
else if(Menu_Value == KEY_F3)
Menu_Value = (CPU_INT32U)msg;
/*---------------- ca. Dali Main Function loop---------------------- */
else if (Menu_Value == KEY_1)
{
DispStr(3,0,"SENT CMD=Lamp On ");
dali_cmd = 0x05; // Dali command 0x05 is turn LEDs On to full brightness
Run_DALI_CMD (dali_addr,dali_cmd);
}
else if (Menu_Value == KEY_4)
{
DispStr(3,0,"SENT CMD=Lamp OFF");
dali_cmd = 0x00; // Dali command 0x00 is turn all LEDs Off
Run_DALI_CMD (dali_addr,dali_cmd);
}
else if (Menu_Value == KEY_2)
{
DispStr(3,0,"SENT CMD=Dim Up ");
dali_cmd = 0x01; // Dali command 0x01 is Dim Up LEDs
Run_DALI_CMD (dali_addr,dali_cmd);
}
else if (Menu_Value == KEY_3)
{
DispStr(3,0,"SENT CMD=Dim Down ");
dali_cmd = 0x02; // Dali command 0x02 is Dim Down LEDs
Run_DALI_CMD (dali_addr,dali_cmd);
}
else if (Menu_Value == KEY_5)
{
DispStr(3,0,"SENT CMD=RGB Test ");
dali_cmd = 0x93; // DALI command 0x93 is Run RGB Test
Run_DALI_CMD (dali_addr,dali_cmd);
}
}
}
OSTimeDlyHMSM(0, 0, 0, 50);
}
}
/* Send DALI Forward Frame from Master(IRD Board) to Slave (LED) board */
void Run_DALI_CMD(CPU_INT08U address, CPU_INT08U command)
{
counter = 0x00;
while (counter < 0x13)
{
switch (counter) {
case 0x00:
stop = 0;
start = 1; // 1 to signal Start
dali_bitX = 1; //start bit 1
break;
case 0x01:
dali_bitX = ((address >> 7) & 0x01); // address bit 7
break;
case 0x02:
dali_bitX = ((address >> 6) & 0x01) ; // address bit 6
break;
case 0x03:
dali_bitX = ((address >> 5) & 0x01); // address bit 5
break;
case 0x04:
dali_bitX = ((address >> 4) & 0x01); // address bit 4
break;
//////////////
case 0x05:
dali_bitX = ((address >> 3) & 0x01); // address bit 3
break;
case 0x06:
dali_bitX = ((address >> 2) & 0x01); // address bit 2
break;
case 0x07:
dali_bitX = ((address >> 1) & 0x01); // address bit 1
break;
case 0x08:
dali_bitX = address >> 0; // address bit 0
break;
/////////////////
case 0x09:
dali_bitX = ((command >> 7) & 0x01); // data bit 7 MSB
break;
case 0x0A:
dali_bitX = ((command >> 6) & 0x01); // data bit 6
break;
case 0x0B:
dali_bitX = ((command >> 5) & 0x01); // data bit 5
break;
case 0x0C:
dali_bitX = ((command >> 4) & 0x01); // data bit 4
break;
case 0x0D:
dali_bitX = ((command >> 3) & 0x01); // data bit 3
break;
case 0x0E:
dali_bitX = ((command >> 2) & 0x01); // data bit 2
break;
case 0x0F:
dali_bitX = ((command >> 1) & 0x01); // data bit 1
break;
case 0x10:
dali_bitX = ((command >> 0) & 0x01); // data bit 0
break;
case 0x11:
dali_bitX = 1; //stop bit /*ca.*/
break;
case 0x12:
stop = 1; // Dali driver Stop
start = 0;
dali_bitX = 1; //stop bit
start_command =0;
Menu_Value =0;
counter++;
break;
default:
start = 0;
stop = 1;
dali_bitX = 0;
break;
}
}
}
/*--------------------------------------------------------------*/
/* Address_Decoder() ca.*/
/*----------------------------------------------------------------*/
void Menu_DALI_Address_Decoder()
{
switch (Menu_Value)
{
case 0x01: // F1 - Change address to 00
dali_addr = 0x00;
break;
case 0x02:// F2- Change address to 01
dali_addr = 0x01;
break;
case 0x03:// F3- Change address to 02
dali_addr = 0x02;
break;
case 0x04: // F4- Change DALI address to 03
dali_addr = 0x03;
break;
default:
dali_addr = 0x00;
break;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -