blueice1108 发表于 2013-11-13 16:49:27

QP NANO状态机问题

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);

}

blueice1108 发表于 2013-11-14 08:06:23

看来这好像比较少人用...

mdcao 发表于 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来做
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
菜单,用状态机做,岂不是更直观和明了,画几个状态图就行了,谁用谁知道呀

blueice1108 发表于 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~~~

Gorgon_Meducer 发表于 2014-1-7 14:05:32

blueice1108 发表于 2014-1-7 13:04
谢谢回答
1.
因为进入QF_onIdle 会进入省电模式 有些操作在省电模式下会异常


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

sbk100 发表于 2014-1-7 16:19:34

Gorgon_Meducer 发表于 2014-1-7 14:05
如果有兴趣,可以用我的状态机调度器,我提供技术支持。

在哪个帖子?

blueice1108 发表于 2014-1-7 17:49:57

Gorgon_Meducer 发表于 2014-1-7 14:05
如果有兴趣,可以用我的状态机调度器,我提供技术支持。

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

Gorgon_Meducer 发表于 2014-1-7 21:45:17

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


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

blueice1108 发表于 2014-1-8 10:41:30

Gorgon_Meducer 发表于 2014-1-7 21:45
不用AVR好多年。现在的东西都是硬件无关的。

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

Gorgon_Meducer 发表于 2014-1-8 12:36:16

blueice1108 发表于 2014-1-8 10:41
现在的东西 有参考的帖子吗?
谢谢

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

blueice1108 发表于 2014-1-8 14:44:04

这帖子 我很早以前就看过了
大概是我水平不够
有些东西看不明白 就不太敢贸然使用在项目上

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

blueice1108 发表于 2014-4-7 15:43:44

Gorgon_Meducer 发表于 2014-1-8 12:36
http://www.amobbs.com/thread-4319119-1-1.html
你先看看这个帖子,如果感兴趣的话,可以联系我,我提供 ...

傻孩子大侠
有新版的可供参考吗
谢谢~!
页: [1]
查看完整版本: QP NANO状态机问题