This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CC2530:敏感按钮第2部分

Guru**** 2601965 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/832945/cc2530-sensitive-push-button-part-2

器件型号:CC2530

大家好、  

我正在根据现有的 OSAL 计时器实施敏感的按钮、我必须了解如何提高和降低调光器级别。 正如我之前布置过的主算法。

-正常按下,只需打开或关闭

-按住超过3秒钟,第一次将提高液位,

-按住3秒钟以上将降低液位,

我的最后一个参考主题: https://e2e.ti.com/support/wireless-connectivity/zigbee-and-thread/f/158/p/830526/3072158#3072158

我们有两个现有的电平控制函数、如下所述。 我不知道我可以使用的每一个、也许我需要创建一个新的。

zclTTa0003_LevelControlMoveToLevelCB、//级别控制移动到级别命令
zclTTa0003_LevelControlMoveCB、//电平控制移动命令

我 的 BtnHOLD_EVT  代码的一部分:

if (Events & TTa0003_BtnHOLD_EVT)
{
uint8 uint8 uint8 uint8
downlevel;
如果(HAL_push_Button1 ())//BTN 长按
{
// BtnHoldCnt++;

if (BtnHoldCnt >=30)
{
BtnHoldCnt=0;
HalLedSet (HAL_LED_3、HAL_LED_MODE_ON);
if ((zclTTa0003_LevelCurrentLevel >= level_min && zclTTa0003_LevelCurrentLevel < level_MAX)||(zclTTa0003_OnOff = light_OFF)){
uplevel = zclTTa0003_LevelCurrentLevel + 30;
//启动调光器?
Command Up? 否则,如果(zclTTa0003_LevelCurrentLevel == level_MAX){downlevel
= zclTTa0003_LevelCurrentLevel -30;
//启动调光器降压命令???} 

}否则{
BtnHoldCnt++;
HalLedSet (HAL_LED_3、HAL_LED_MODE_OFF);
osal_start_timerEx (zclTTa0003_TaskID、TTa0003_BtnHOLD_EVT、 100);}

} else // BTN 短按
{ret=osal_start_timerEx (zclTTa0003_TaskID、TTa0003_BtnHOLD_EVT、100);}//返回到 handle 键

返回(事件^ TTa0003_BtnHOLD_EVT);
} 

请、有人可以提出一个想法吗?

BR、

Alex

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Alex:

    YK 已经为开发您的应用程序提供了极大的帮助,我不确定这一新的支持请求是什么。  根据代码描述、您最有可能对在给定转换时间内针对特定级别移动到级别命令(ID 0x00)感兴趣。  移动命令(0x01)也可以在指定速率下完全向上或向下移动。  您可以通过照明/开关示例、ZCL 规范、Zigbee HA 规范以及 Zigbee 照明和占位器件规范文档了解有关电平控制仪表组的更多信息。   

    此致、
    Ryan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Ryan、


    我明白,我对黄钱给我的帮助感到很满意! 否则、我总是尝试记录所有内容、以便在论坛中留下材料供将来参考!

    @Ryan、我昨天已使用 Move 命令、此命令支持我的新级别变量(向上/向下)、并将剩余时间设置为零。 ´m 现在我正在努力更好地了解我的规范中如何发现方向(向上或向下)。 我´ll 我的进度告诉你。   

    ,非常感谢! 我真的很感激!

    BR、

    Alex

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Yk 先生和 Ryan。 我要非常感谢您的帮助。  

    Yk 先生,我专门为你们取得这一进展, 特别是你们的不懈帮助!

    我完成了 SW_6算法、该算法提供了打开/关闭和电平上升/下降。 如下所示:

    if (keys & HAL_key_sw_6)
    {osal_start_timerEx (zclTTa0003_TaskID、TTa0003_BtnHOLD_EVT、100);
    //如果
    (Direction=0){
    if ((zclTTa0003_LevelCurrentLevel >= Level_min)&&(zclTTa0003_LevelCurrentLevel <=0x19)}{
    zclTTa0003_LevelTTLevel >=0x20;
    Direction=0;
    //启动 Level up (=0xcl0003
    
    
    );zclCurrentTTl0003 (=zcl0003);zcllevelimer_l0003 (=zcl0003)
    ;zclraslevel_r0003 (=zclr0003)
    
    //
    
    
    
    
    
    启动调光器电平上升命令 zclTTa0003_CurrentMoveBasedOnTime (zclTTa0003_LevelCurrentLevel、0);//步骤3向上}否则(((zclTTa0003_LeCurrentLevel >= 0x33)&(zclTTlvela0003_levelCurrentLevel <=0x4C
    
    
    );= 0xcl0003_level_r1r0003= 0xclvel_r1r0004c);(zclvel_r1rlevel_r0003)= 0xclvr0004c = 0xlvrfr0004c = 0xllevr0004c = 0xrfr0004c = 0;zllevrlevrfrlevr0003 = 0xllevr0004);(zlvrlevr0004 = 0xlvel_rfr0004)= 0xles&r0004 = 0xlvr0004c = 0xllevr0004 rfr0003 = 0xlle
    
    
    //
    
    
    
    
    
    启动调光器电平上升命令 zclTTa0003_MoveBasedOnTime (zclTTa0003_LevelCurrentLevel、0);//如果(zclTTa0003_LeCurrentLevel >= 0x65)&(zclTTl0003_LevelCurrentLevel <=0x0003
    
    
    ),则启动电流上升命令 zclTTa0003_levelCurrentLEVEEL (=0x0003)
    ;zcl1clr0003 = 0x0003;zclvel_levr0003 = 0x0003;zclrlevr1r0003 = 0x0003;zclrlevrlevr1r0003 = 0x0003;zllevrlevrlevr0003 = 0xclr1r1rlevr1r0003;zclr0003 = 0xllevr1r0003 = 0xllevr0003;zllevrfr1r0003 = 0xllevr0003;zclr1r1r1r0003 = 0xrle
    
    //启动调光器电平上升命令
    zclTTa0003_MoveBasedOnTime (zclTTa0003_LevelCurrentLevel、0);
    //步骤7向上
    }否则((zclTTa0003_LeCurrentLevel >= 0x97)&(zclTTlvela0003_levelr1r1r0003
    
    
    
    
    
    )= 0xclr1r0003;zclr1rlevel_r0003 = 0xclrfr0003;zclr1r0003 = 0
    
    = zclrfr1rlevr1r0003 = 0;zclrlevr1r1r0003 = 0xr1rlevr1r1r1r0003 = 0;zclrfr1r1r1r1r1rlevr1rnr0003 = 0 = 0;(zclr1r1r1r1r1r1r1r1r1r1r1r0003)= 0 = 0 = 0xclrnrnr1r1r1r1r1r
    //启动调光器电平上升命令
    zclTTa0003_CurrentMoveBasedOnTime (zclTTa0003_LevelCurrentLevel、0);
    //步骤9向上
    }否则((zclTTa0003_LeCurrentLevel >= 0xC9)&(zclvela0003_levelCurrentLevel <=0xcl0003
    
    
    
    
    
    );zclvel_le0003 = 0xclvel_r1&= 0
    ;zclvelt0003 = 0xclrlevr1r1rft0002 = 0;zllevel_r0002 = 0xclr1rfr1r0002 = 0xclvel_r0003;zlle&rlevel_r1rft0002 = 0xclrft0003;zclr1r1rle&rft0002 = 0xclrlevr0002 = 0xclr0002 = 0xclrft0003;zlle&r0002 = rlevrlevr0003 = rft0002 = rle
    
    //启动调光器电平上升命令
    zclTTa0003_MoveBasedOnTime (zclTTa0003_LevelCurrentLevel、0);
    }
    否则(方向= 1){
    
    //如果
    (((zclTTa0003_LevelLevel <= Level_MAX)&(zleLevel= CurrentLevel000E1& zlevel0003)
    = zclCurrentTT0003;zle_CurrentLevel0 =
    
    0 = 0;zlearetr0003)/zle_CurrentLEVEL3 = 0 = 0 = 0 = 0;zlevel0003;zlevel_start_CurrentLate1 = 0 = 0 = 0;zlevel_CurrentLtTTl0003;zle_CurrentLate3)
    //降低步骤2
    }否则,如果((((zclTTa0003_LevelCurrentLevel <= 0xE1)&&(zclTTa0003_LevelCurrentLevel >=0xC9)&&){
    zclTTa0003_LevelTTLevel <= 0xC8;
    //启动调光器电平降压命令 zcla0003_level_0003)
    
    
    
    ;zclvel_r0003 (zclle_r0003);zclvrlea0003 (zclvr1r&rfr1r&nvrfr1r1r1rfr&nr&nr1r&nrttttttttttttttttttttttt10r&nr&nrfrnr&nr&nr&nr&nrttttttttt10r&nr&nr
    //
    
    
    
    
    启动调光器电平向下命令 zclTTa0003_MoveBasedOnTime (zclTTa0003_LevelCurrentLevel、0);//步骤4向下}否则((((zclTTa0003_LevelCurrentLevel <= 0xTTAF)&(zclTTa0003_LevelCurrentLevel >= 0x0009);命令 zcl0003 = 0x0009);
    0 = 0xclvertzCurrentLevel = 0x0003;0 = 0 = 0;0 = 0xclvelimer_lezl0003;0 = 0 = 0
    //降低步骤5
    }否则(((zclTTa0003_LevelCurrentLevel <= 0x96)&&(zclTTa0003_LevelCurrentLevel >=0x7E)&&方向){
    zclTTa0003_LevelCurrentTTLevel =0x7D;
    //启动调光器电平降压命令 zcl0003_level_0003
    
    
    )
    ;(zclvel_le0003)= 0x65_CurrentLevelTTLevel = 0x0003;(zcl0003 = 0x0003);zclvel_CurrentLevelTTLevel = 0x0003;(zcl0003 = 0x0003)
    //启动调光器电平向下命令
    zclTTa0003_MoveBasedOnTime (zclTTa0003_LevelCurrentLevel、0);
    //步骤7
    向下}否则,如果(zclTTa0003_LeTTCurrentLevel <= 0x64)&(zclvela0003_LevelCurrentLevel >=0x4C
    ;命令 zclT0003)= 0xclvel_CurrentLevel3;/0 = 0x4c = 0x4clevel_CurrentLE0003;
    命令
    0 = 0x4clevel_level_level_le0004;
    //降低步骤8
    }否则,如果((((zclTTa0003_LevelCurrentLevel <= 0x4B)&&(zclTTa0003_LevelCurrentLevel >=0x33)&&方向{
    zclTTa0003_LevelTTLevel <= 0x32;
    //启动调光器电平降压命令 zcla0003_level_0003
    
    
    )
    ;zclvel_r0003 (zcllevel_r0003)=zclvr0003 (zclvr0003);zclvrle_r1r&lvrCurrentttttetr0003 (zclvr0003)=zclvr0003 (zclvr0003);zclvr0003 (zclvr0003)=zclvr0003 (zclvrle_r0003)
    //
    
    
    
    
    
    启动调光器电平向下命令 zclTTa0003_MoveBasedOnTime (zclTTa0003_LevelCurrentLevel、0);//如果(((zclTTa0003_LevelCurrentLevel <= 0x19)&(zclTTa0003_LevelCurrentLevel >=0x02)
    
    ;/0 = 0 = 0;0 = 0 = 0 = 0);0 = 0 = 0 = 0 = 0;0 = 0 = 0 = 0级调光器
    
    
    
    
    

    我需要实现的最后一个电平响应是通过机械开关(SW_6)从 器件更改为网关的每个电平的 ZCL 电平响应。 我´ll´ll 实施方法、并且尽快在这里分享!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您的分享!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我要感谢你帮助了黄先生!