飞扬琴声 发表于 2014-8-9 15:25:55

潜水关注好久了,新手坐等教程

sunliezhi 发表于 2014-8-9 17:55:02

再出个调度器,极小资源单片机值得一用,学习!

hyc07209 发表于 2014-8-12 21:04:31

楼主的程序我都看了从1楼看到1010楼,我发现这个程序不好嵌套啊:假如有一个Beep();,有两个任务都有可能嵌套它,那怎么办?如果TaskA中嵌套了TaskB和Beep,并且TaskB里也嵌套了Beep,那怎么办啊?

deadline2012 发表于 2014-8-12 23:13:47

smset 发表于 2014-4-24 13:37
顶到1000楼,就写详细的中文教程。

楼主啊,1000楼到啦{:lol:} {:lol:}{:lol:}

zcan 发表于 2014-8-14 10:48:00

这都满楼了 {:sweat:}{:sweat:}{:sweat:}{:sweat:}

enthier 发表于 2014-8-14 20:27:14

学习了。

Junsea 发表于 2014-8-14 22:46:58

也来再加一楼,希望能够早日看到教程!

zhudeng66 发表于 2014-8-16 08:12:23

我也想要教程真心求教楼主 加油!!!

wmm20031015 发表于 2014-8-16 15:39:25

本帖最后由 wmm20031015 于 2014-8-16 15:55 编辑

移植了一个到新唐的NuTiny-SDK-MINI54FDE上



yoyo_fly 发表于 2014-8-16 17:52:24

非常好, 学习一下

papa0305 发表于 2014-8-16 18:47:56

支持一下         

pixiu 发表于 2014-8-16 22:08:30

好贴,mark先

pxq8410 发表于 2014-8-17 08:26:07

收藏看看

ycping 发表于 2014-8-17 18:28:02

请教一下。
程序不能嵌套,如果你做运行了一TASK1,另一个task里调用的话就乱套了。
另外CallSub做什么用,调用两个TASK,因为task里面都有while(1);在一个里面出不来了。 运行不了两个。失去调用的意义,还不如直接写进去。
不知道对不对。

jesen_2010 发表于 2014-8-20 12:32:46

mute 发表于 2014-7-16 12:23
每个任务的开头都有 _SS,里面就是switch。
碰到了wait,就return了tick回去。
等tick时间完了后,main就 ...

这个要mark      

jesen_2010 发表于 2014-8-20 12:35:29

楼主正在编教程{:lol:}

papa0305 发表于 2014-8-20 12:57:42

mark         

papa0305 发表于 2014-8-20 12:58:06

可以参考原理                     

four_zhg 发表于 2014-8-20 20:43:47

jesen_2010 发表于 2014-8-20 12:35
楼主正在编教程

你怎么知道楼主在编教程{:lol:}

allanwang1101 发表于 2014-8-21 09:48:23

学习了,谢谢分享!

GZZXB 发表于 2014-8-23 09:25:54

8错   够小{:smile:}

holts2 发表于 2014-8-23 09:53:32

ycping 发表于 2014-8-17 18:28
请教一下。
程序不能嵌套,如果你做运行了一TASK1,另一个task里调用的话就乱套了。
另外CallSub做什么用, ...

你怎么知道不能? 想当然, 从头再细看一遍贴子。

Kwangsi 发表于 2014-8-23 10:46:56

eddia2012 发表于 2014-7-17 11:21
顶楼主到1000楼,加油!

你有 STM8 的版本 放出吗这个值得期待

毕竟STM8S003 做到1.21的价格

jesen_2010 发表于 2014-8-23 22:11:58

Kwangsi 发表于 2014-8-23 10:46
你有 STM8 的版本 放出吗这个值得期待

毕竟STM8S003 做到1.21的价格

这里来了,STM8S103的。

Kwangsi 发表于 2014-8-23 22:33:51

本帖最后由 Kwangsi 于 2014-8-23 22:41 编辑

jesen_2010 发表于 2014-8-23 22:11
这里来了,STM8S103的。

谢谢我今天在用 极小资源调度器 做松翰的一个案子的时候
我开了 两个 timer中断

T1每 32us产生一次中断反转一个 io口的电平
TC0 每 4ms产生一次 中断UpdateTimers(); 放在 TC0中

MAXTASKS ==3
用示波器 发现 T1 中反转的 io口周期性出现 宽于 32us的 波形可见UpdateTimers();只放了三个数组 在32us里还是 跑不完 造成T1中断 执行延后

用 数组方式还是太低效的

随着 MAXTASKS的增多必然执行 越来越耗时

dgtg 发表于 2014-8-23 23:38:06

这个要学习学习!!

Ai_evan 发表于 2014-8-24 09:35:32

谢谢楼主分享

atl0402 发表于 2014-8-24 10:28:01

求详细教程

jesen_2010 发表于 2014-8-24 11:14:58

楼主去哪儿了

qq325600 发表于 2014-8-24 11:24:05

好难 学习学习 先标记下 等教程

在途中 发表于 2014-8-24 11:52:18

这更多的是给我们提供一种思维,楼上那些想着拿来就用的,只能说非得服务一条龙么

fgdzypf 发表于 2014-8-24 13:16:53

等楼主教程,耐心等待中。。。。。。。

four_zhg 发表于 2014-8-25 22:32:28

寻找楼主,你的教程好了吗

wshg 发表于 2014-8-25 23:06:31

收藏先,谢谢分享

Tonyhai 发表于 2014-8-25 23:29:49

学习,谢谢!!!

holts2 发表于 2014-8-26 21:34:10

Kwangsi 发表于 2014-8-23 22:33
谢谢我今天在用 极小资源调度器 做松翰的一个案子的时候
我开了 两个 timer中断



你的松翰MCU 1us能跑几条指令 ?

yixin1851 发表于 2014-8-26 22:20:08

顶一下楼主

dgtg 发表于 2014-8-30 22:49:54

不能用switch感觉不太习惯啊

NEXEN1106 发表于 2014-8-31 08:57:27

好东西必须要MARK

alan_yzh 发表于 2014-8-31 09:42:50

先收藏,总有用得着的时候哦!

myxiaonia 发表于 2014-8-31 13:09:16

smset 发表于 2012-11-27 15:35
写程序本来就是精细活,写成死循环本来就是程序员的问题啊,谁让你去写个死循环呢?

哪怕是抢 ...

确实有这样的思路,不过是重启任务,建立个最高优先级任务监视每一个任务,超时则重启

lpantonie 发表于 2014-9-4 16:53:39

{:smile:}顶,楼主加油!

hehao9051 发表于 2014-9-6 23:29:59

#define _SS static unsigned char _lc=0; switch(_lc){default:
#define _EE ;}; _lc=0; return 255;
unsigned chartask2(){
_SS
while(1){
   WaitX(100);
   LED2=!LED2;   
}
_EE
}
替换一下

unsigned chartask2()
{
        static unsigned char _lc=0;
        switch(_lc)
        {
                default:
                while(1)
                {
                       WaitX(100);
                       LED2=!LED2;   
                }
        ;};
_lc=0;
return 255;
}
这个有什么意义呢,特别是这个switch和这个_lc,干什么用的呢?望各位老大指点一下

liuzhe910422 发表于 2014-9-7 10:15:40

不错!!!支持一下!

hehao9051 发表于 2014-9-7 15:47:56


unsigned chartask2()
{
      static unsigned char _lc=0;
      switch(_lc)
      {
                default:
                  while(1)
                {
                           //WaitX(100);
                           do {_lc=(__LINE__+((__LINE__%256)==0))%256; return 100;} while(0); case (__LINE__+((__LINE__%256)==0))%256:
                           LED2=!LED2;   
                  }
         ;};
_lc=0;
return 255;
}

hehao9051 发表于 2014-9-7 15:55:42

本帖最后由 hehao9051 于 2014-9-7 15:59 编辑

RunTask(Task2,2)进行宏替换
#define RunTask(TaskName,TaskID) do { if (timers==0) timers=TaskName(); }while(0);


do
{
        if (timers==0)
        {
                timer = Task2();                //时间减为0时执行一次,同时给Timer重新赋值
        }
}while(0);


unsigned chartask2()
{
      static unsigned char _lc=0;
      switch(_lc)
      {
                default:
                  while(1)
                {
                           //WaitX(100);
                           do {_lc=(__LINE__+((__LINE__%256)==0))%256; return 100;} while(0); case (__LINE__+((__LINE__%256)==0))%256:
                           LED2=!LED2;   
                  }
         ;};
_lc=0;
return 255;
}

hehao9051 发表于 2014-9-7 16:19:43

本帖最后由 hehao9051 于 2014-9-7 16:25 编辑

终于有点小懂了,原来是switch{}里面的如果有CASE且满足条件,就执行case下的代码,而且无论case和default处于什么地方,都会执行。

hehao9051 发表于 2014-9-7 16:22:31

整体还是每个任务函数定时调用,只是如果任务多了,可能中断中执行的代码太多,效率可能变低

didadida 发表于 2014-9-7 16:31:04

我只想问一个问题,如果完成任务1需要执行30ms,但是任务2不允许等待这么长时间,楼主怎么办?

baoqi 发表于 2014-9-7 18:52:12

标记学习一下

踏浪 发表于 2014-9-7 20:03:22

学习了!!!!!!!

sweet_136 发表于 2014-9-16 15:11:25

楼主该兑现承诺 ——> 写个详细教程了!
楼主该兑现承诺 ——> 写个详细教程了! 哈哈..求教程..

lihuaping0357 发表于 2014-9-16 15:27:26

多谢lz分享!

anotherlast 发表于 2014-9-16 18:23:59

很好很好很好很好很好很好

bli19 发表于 2014-9-17 03:09:24

我擦,厉害,lz为何这么叼.

19711972f 发表于 2014-9-17 08:28:02

十分感谢楼主!

boy007 发表于 2014-9-17 09:02:58

mark







pensty 发表于 2014-9-17 09:20:07

收藏,谢谢分享

19711972f 发表于 2014-9-17 10:17:07

smset 发表于 2012-11-27 15:35
写程序本来就是精细活,写成死循环本来就是程序员的问题啊,谁让你去写个死循环呢?

哪怕是抢 ...

说的是,受教了。再次谢谢。

sweet_136 发表于 2014-9-17 21:27:25

本帖最后由 sweet_136 于 2014-9-17 21:31 编辑

smset 发表于 2012-12-18 18:29
优化无止境!呵呵,330楼看似不能再优化了,但我再尝试做一次优化:

敬请评测该版本,看是否还能优化:在k ...

楼主.我在PIC CCS里面用这个调度器..发现如下错误



这个编译qi的意思的是,不能够这么写吧..




这个编译器不能这样写额..

ycping 发表于 2014-9-24 17:40:13

建议楼主加个开始延时时间,如果多个task都是一样的延时时间的话,就会冲突。
在函数开始时可以自定义一个延时时间,就不会冲突。

ycping 发表于 2014-9-24 17:45:05

就是错开开始运行时间,那么大家都可以获得比较准的运行周期。

bondxie3 发表于 2014-9-28 13:20:09

ycping 发表于 2014-9-24 17:45
就是错开开始运行时间,那么大家都可以获得比较准的运行周期。

怎么错都是错不开的! 任何系统也不能保证这一点。

chinaboy25 发表于 2014-9-28 15:03:05

我程序基本就是这样的架构写的,没做成模块,但还是有很多局限性;正在学习QM架构,以后准备上他了

lj11hy 发表于 2014-9-28 20:18:11

学习学习{:smile:}

fcmer 发表于 2014-9-28 21:33:29

这种东西应该再多一些。

卢台长 发表于 2014-9-28 21:38:46

前排留名啊、、、、、、、我来的太晚了啊

xurenhui 发表于 2014-9-28 23:18:42

学习一下,很不错

ycping 发表于 2014-9-28 23:38:59

在一起启动几个任务后,比如其中一个任务是250MS反转一个LED。
你就会发现LED并无固定的时间间隔,时间偏散很大,一会两次闪灯很近,一会又很久闪一次。
除非你把这任务放中断。
所有的系统都是这样吗?

一夕nandy 发表于 2014-10-15 12:22:20

还没细看 mark一下

qxc16b 发表于 2014-10-21 10:04:42

关注中....................

yebx 发表于 2014-10-21 10:36:10

好东西,一定要顶,mark

abszy 发表于 2014-10-31 15:35:28

感谢楼主 极小资源调度器
备用啊

renmin 发表于 2014-11-4 17:55:07

今天又过来读一遍

rh.s 发表于 2014-11-4 23:47:26

ycping 发表于 2014-9-28 23:38
在一起启动几个任务后,比如其中一个任务是250MS反转一个LED。
你就会发现LED并无固定的时间间隔,时间偏散 ...

按我的理解,精确计时的任务要放在任务循环的首位,同时在一次任务循环里所有任务的总执行时间不能超出系统时间片长度。满足这两点的话应该不会出现你说的这种情况的。

yuhuwyh 发表于 2014-11-5 07:03:10

收藏先,谢谢分享

OYL 发表于 2014-11-6 12:22:27

和djyos差不多

xly2014 发表于 2014-11-6 13:35:56

调度器 时间调度 系统

buptzjw 发表于 2014-11-6 13:55:50

支持,这个确实很好

jjj 发表于 2014-11-15 00:12:46

这个要顶八周调度器

funnybow 发表于 2014-11-26 23:13:42

不懂,帮定顶顶顶顶顶顶顶顶

999 发表于 2014-11-27 00:42:23

好贴,学习了

yht0312 发表于 2014-11-27 08:19:21

这个很牛叉,收藏慢慢研究。。。

coltex 发表于 2014-11-27 08:27:29

观摩一下

hhww8280 发表于 2014-11-27 08:33:25

这个调度器的切换原理跟UCOS是一样的吗?

snaky_mok 发表于 2014-11-27 08:46:28

MARK!感谢分享

zb_zcj 发表于 2014-11-27 08:49:36

先收藏啊!

szy494468597 发表于 2014-11-27 09:11:47

多谢分享好资料

ldj7501 发表于 2014-11-27 16:52:57

这个不错,很好,值得推广!

dmzy 发表于 2014-11-27 19:14:23

正是需要这样的东西啊啊

lushanlq 发表于 2014-11-27 21:28:57

取PT之精华,又有自己的创新,顶楼主!

机器人天空 发表于 2014-11-27 23:06:20

好热闹啊{:lol:}

Krise@pasion 发表于 2014-12-28 14:22:09

厉害啊。

lwb807 发表于 2014-12-29 09:50:01

坐等楼主教程{:lol:}

乌托青年 发表于 2014-12-29 10:31:35

占用空间蛮少的

feikong 发表于 2014-12-29 10:54:16

收藏留用

lfgc 发表于 2015-2-4 16:10:01

建议出一个完整的文档和程序。

holts2 发表于 2015-2-4 16:14:40

lfgc 发表于 2015-2-4 16:10
建议出一个完整的文档和程序。

把贴子从头到尾看三编,自然有收获

mikeliujia 发表于 2015-2-15 18:50:39

楼主必须要出教程啊!{:lol:}

holts2 发表于 2015-2-15 19:26:57

mikeliujia 发表于 2015-2-15 18:50
楼主必须要出教程啊!

楼主已经失联
页: 1 2 3 4 5 6 7 8 9 10 [11] 12 13
查看完整版本: 再出个调度器,极小资源单片机值得一用