For CQ LPC1U35 board. Multitask scheduler demo project.,arduino,due,compatible

Dependencies:   Scheduler mbed

Fork of scheduler-demo by mi mi

Revision:
1:48a906a94c32
Parent:
0:79e298c7d4b9
--- a/led_tsk.cpp	Sun Aug 25 10:28:46 2013 +0000
+++ b/led_tsk.cpp	Fri Mar 07 14:37:12 2014 +0000
@@ -1,6 +1,7 @@
 /*
 #
-# Copyright (C) 2010-2013, audin
+# Copyright (C) 2010-2014, audin
+# 2014/02: Modify for mbed for CQ LPC11U35
 # 2013/08: Modify for mbed for LPC1114FN28
 # 2013/07: Modify for LPCOpen Platform.
 # 2011/04, 2012/11
@@ -14,60 +15,43 @@
 #include "led_tsk.h"
 #include "Scheduler.h"
 
-static int max_val	= 0;
-static int val		= 0;
-#define sio_get_led_blink_speed()	9 /* fixed preiod */
 
-/* for CQ MyARM ,lpc1114fn28 */
-DigitalOut led1(LED1);
-DigitalOut led2(LED2);
+/* for CQ ,lpc11u35 */
+DigitalOut led1(P0_20);
+DigitalOut led2(P0_21);
+
 #define led1_on()		led1=0	/*  Negative on */
 #define led1_off()		led1=1
-#define led2_on()		led2=1
-#define led2_off()		led2=0
-
-/*******************
-
-* LED1 init
-
- *******************/
-void led_init(void)
-{
-    led1_off();									/*  first off	*/
-}
+#define led2_on()		led2=0	/*  Negative on */
+#define led2_off()		led2=1
 
 /*******************
 
-* Fake PWM
+* Fake PWM class
 
  *******************/
-static void pwm( int ms )
+static void pwm_elm( int ms, int max_ms, DigitalOut *led )
 {
-    led1_on();
+    *led=0; 			// negative on
     taskWait( ms );
-    led1_off();
-    taskWait( max_val - val);
+    *led=1;
+    taskWait( max_ms - ms);
 }
 
-/*******************
-
-* LED task
-
- *******************/
-void led_task( void)
+class pwm_fake_t
 {
-    led_tsk( (void *)0 );	/* Just stub */
-}
-
-void led_tsk( void *pvParameters )
-{
-    ( void ) pvParameters;								// not used
-    led_init();
-    const int MIN_VAL	= 0;
-    static int dir		= 1;
-    while( 1 ) {
+    int max_val, val, MIN_VAL, dir, speed;
+    DigitalOut *led;
+public:
+    pwm_fake_t(DigitalOut *_led, int _speed) {
+        max_val = speed = _speed;
+        val = MIN_VAL = 0;
+        dir =1;
+        led = _led;
+    }
+    void run() {
         if( ( val >= max_val) || ( val <= MIN_VAL) ) {
-            max_val = sio_get_led_blink_speed() + 3 ;	// change period
+            max_val = speed;//sio_get_led_blink_speed() + 3 ;	// change period
             max_val <<= 1;								// adjust time
             if( val <= MIN_VAL ) {
                 dir = 1;
@@ -78,28 +62,36 @@
             }
         }
         val += dir;
-        pwm( val );
+        pwm_elm( val, max_val, led );
+    }
+};
+
+/*******************
+
+* LED1 task
+
+ *******************/
+void led1_task( void )
+{
+    led1_off();
+    pwm_fake_t pwm_led( &led1, 10+3);
+    while( 1 ) {
+        pwm_led.run();
     }
 }
 
 /*******************
 
-* LED2 init
+* LED2 task
 
  *******************/
-void led2_init(void)
-{
-    led2_off();									/*  first off	*/
-}
-
 void led2_task( void )
 {
-    led2_init();
+    led2_off();
+    taskWait( 666 );
+    pwm_fake_t pwm_led( &led2, 6+3);
     while( 1 ) {
-        led2_on();
-        taskWait(2000);
-        led2_off();
-        taskWait(2000);
+        pwm_led.run();
     }
 }