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

📄 app_dali.c

📁 嵌入式的tcpip协议栈
💻 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 + -