搜索
bottom↓
回复: 11

QP NANO状态机问题

[复制链接]

出0入0汤圆

发表于 2013-11-13 16:49:27 | 显示全部楼层 |阅读模式
QP NANO状态机问题
1.想请问一下 最后一定会跑到QF_onIdle 所以中断必须先__low_power_mode_off_on_exit();
如果不想进QF_onIdle 应当如何修改
2. Send_DATA(B1_ad,B2_ad,B3_ad);
占用时间过久
会进入Q_onAssert
多中断源 无嵌套 只能减少Send_DATA(B1_ad,B2_ad,B3_ad)占用时间吗
3.因为2种产品需要
菜单
分别是段式LCD 和12864LCD
有看过傻孩子的菜单代码
有推荐比较可移植的架构吗
目前打算用QP来做

ISR POST ACTIVE OBJECT
#pragma vector=ADC_VECTOR
__interrupt void ADCISR(void)
{
  //static unsigned int index = 0;
  __low_power_mode_off_on_exit();
  switch (SD12IV)
  {
    case 2:                                   // SD16MEM Overflow
      break;
    case 4:                                   // SD16MEM0 IFG
      
      break;
    case 6:                                   // SD16MEM1 IFG
      break;
    case 8:  
      B1_ad=SD12MEM0;
      B2_ad=SD12MEM1;
      B3_ad=SD126MEM2;
      QActive_postISR((QActive *)&AO_comp, ARM_SIG, 0);
      break;
  }
}

void QF_onIdle(void) {
        __low_power_mode_1();                              
}

主程序
QState XXX_initial(XXX_t *me) {
   
     switch (Q_SIG(me)) {
     case Q_INIT_SIG:
       {
           Set_XXX(23,0);
           return Q_HANDLED();
       }
     case Q_ENTRY_SIG: {
            QActive_arm((QActive *)me, 5);
            QActive_post((QActive *)&AO_comp, ARM_SIG, me->timeout);
            me->timeout=10;
            Set_XXX(me->xyz,0);
        return Q_HANDLED();
        }
     case Q_EXIT_SIG: {
             Set_XXX(99,0);
            return Q_TRAN(&Measure_state);
        }
     case Q_TIMEOUT_SIG:
         QActive_arm((QActive *)me, 1000);
         QActive_post((QActive *)&AO_ comp, ARM_SIG, me->timeout--);
         //Set_Dia(me->xyz++,0);
         return Q_HANDLED();
     
     case ARM_SIG:
         Set_Dia(me->timeout++,0);
      
         Send_DATA(B1_ad,B2_ad,B3_ad);
         return Q_HANDLED();
}
   return Q_TRAN(&XXX_initial);  

}

出0入0汤圆

 楼主| 发表于 2013-11-14 08:06:23 | 显示全部楼层
看来这好像比较少人用...

出0入0汤圆

发表于 2014-1-7 09:53:46 | 显示全部楼层
我来试着回答一下楼主的问题:
1.想请问一下 最后一定会跑到QF_onIdle 所以中断必须先__low_power_mode_off_on_exit(); 如果不想进QF_onIdle 应当如何修改
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
有事件触发时,状态机就会执行相应的事件处理,处理完后进入QF_onIdle,继续等待有新的事件(外部)或信号(内部)到来,QF_onIdle用在低功耗方面
楼主为何不想进QF_onIdle,实在是不理解,没有事件触发,你让程序干啥呢?那样的话岂不是失去了QP的意义


2. Send_DATA(B1_ad,B2_ad,B3_ad);
占用时间过久,会进入Q_onAssert
多中断源 无嵌套 只能减少Send_DATA(B1_ad,B2_ad,B3_ad)占用时间吗
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
奇怪了,程序没有出错的情况下,不会跑到Q_onAssert呀,楼主程序有问题
占用时间过久:那就进行状态分解呀,这正是状态机的强处呢



3.因为2种产品需要
菜单
分别是段式LCD 和12864LCD
有看过傻孩子的菜单代码
有推荐比较可移植的架构吗
目前打算用QP来做
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
菜单,用状态机做,岂不是更直观和明了,画几个状态图就行了,谁用谁知道呀

出0入0汤圆

 楼主| 发表于 2014-1-7 13:04:34 | 显示全部楼层
mdcao 发表于 2014-1-7 09:53
我来试着回答一下楼主的问题:
1.想请问一下 最后一定会跑到QF_onIdle 所以中断必须先__low_power_mode_off ...

谢谢回答
1.
因为进入QF_onIdle 会进入省电模式 有些操作在省电模式下会异常
只能利用中断唤醒

2.
程序在裸机下是没错的 裸机下最多loss操作  当然最后状态是要分割的

3.
因为版权问题 只好先放弃QP~~~

出0入296汤圆

发表于 2014-1-7 14:05:32 | 显示全部楼层
blueice1108 发表于 2014-1-7 13:04
谢谢回答
1.
因为进入QF_onIdle 会进入省电模式 有些操作在省电模式下会异常

如果有兴趣,可以用我的状态机调度器,我提供技术支持。

出0入0汤圆

发表于 2014-1-7 16:19:34 | 显示全部楼层
Gorgon_Meducer 发表于 2014-1-7 14:05
如果有兴趣,可以用我的状态机调度器,我提供技术支持。

在哪个帖子?

出0入0汤圆

 楼主| 发表于 2014-1-7 17:49:57 | 显示全部楼层
Gorgon_Meducer 发表于 2014-1-7 14:05
如果有兴趣,可以用我的状态机调度器,我提供技术支持。

有参考过傻孩子的大作
不过目前使用MSP430 傻孩子我看之前都使用AVR系列的吧
比较期待傻孩子的新书~~~

出0入296汤圆

发表于 2014-1-7 21:45:17 | 显示全部楼层
blueice1108 发表于 2014-1-7 17:49
有参考过傻孩子的大作
不过目前使用MSP430 傻孩子我看之前都使用AVR系列的吧
比较期待傻孩子的新书~~~

不用AVR好多年。现在的东西都是硬件无关的。

出0入0汤圆

 楼主| 发表于 2014-1-8 10:41:30 | 显示全部楼层
Gorgon_Meducer 发表于 2014-1-7 21:45
不用AVR好多年。现在的东西都是硬件无关的。

现在的东西 有参考的帖子吗?
谢谢

出0入296汤圆

发表于 2014-1-8 12:36:16 | 显示全部楼层
blueice1108 发表于 2014-1-8 10:41
现在的东西 有参考的帖子吗?
谢谢

http://www.amobbs.com/thread-4319119-1-1.html
你先看看这个帖子,如果感兴趣的话,可以联系我,我提供最新的版本给你。

出0入0汤圆

 楼主| 发表于 2014-1-8 14:44:04 | 显示全部楼层
这帖子 我很早以前就看过了
大概是我水平不够
有些东西看不明白 就不太敢贸然使用在项目上

不过
对傻孩子的东西 也还是很感兴趣
希望能得到最新的版本
慢慢提升自己的水平

出0入0汤圆

 楼主| 发表于 2014-4-7 15:43:44 | 显示全部楼层
Gorgon_Meducer 发表于 2014-1-8 12:36
http://www.amobbs.com/thread-4319119-1-1.html
你先看看这个帖子,如果感兴趣的话,可以联系我,我提供 ...

傻孩子大侠
有新版的可供参考吗
谢谢~!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-3 07:24

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表