mi mi / Mbed 2 deprecated scheduler-demo-cq-lpc11u35

Dependencies:   Scheduler mbed

Fork of scheduler-demo by mi mi

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers led_tsk.cpp Source File

led_tsk.cpp

00001 /*
00002 #
00003 # Copyright (C) 2010-2014, audin
00004 # 2014/02: Modify for mbed for CQ LPC11U35
00005 # 2013/08: Modify for mbed for LPC1114FN28
00006 # 2013/07: Modify for LPCOpen Platform.
00007 # 2011/04, 2012/11
00008 # 2010/11
00009 # http://avr.paslog.jp
00010 # This file is licensed under the MIT License.
00011 #
00012 */
00013 
00014 #include "mbed.h"
00015 #include "led_tsk.h"
00016 #include "Scheduler.h"
00017 
00018 
00019 /* for CQ ,lpc11u35 */
00020 DigitalOut led1(P0_20);
00021 DigitalOut led2(P0_21);
00022 
00023 #define led1_on()       led1=0  /*  Negative on */
00024 #define led1_off()      led1=1
00025 #define led2_on()       led2=0  /*  Negative on */
00026 #define led2_off()      led2=1
00027 
00028 /*******************
00029 
00030 * Fake PWM class
00031 
00032  *******************/
00033 static void pwm_elm( int ms, int max_ms, DigitalOut *led )
00034 {
00035     *led=0;             // negative on
00036     taskWait( ms );
00037     *led=1;
00038     taskWait( max_ms - ms);
00039 }
00040 
00041 class pwm_fake_t
00042 {
00043     int max_val, val, MIN_VAL, dir, speed;
00044     DigitalOut *led;
00045 public:
00046     pwm_fake_t(DigitalOut *_led, int _speed) {
00047         max_val = speed = _speed;
00048         val = MIN_VAL = 0;
00049         dir =1;
00050         led = _led;
00051     }
00052     void run() {
00053         if( ( val >= max_val) || ( val <= MIN_VAL) ) {
00054             max_val = speed;//sio_get_led_blink_speed() + 3 ;   // change period
00055             max_val <<= 1;                              // adjust time
00056             if( val <= MIN_VAL ) {
00057                 dir = 1;
00058                 taskWait( 1000 );                           // wait 1src if led off
00059             } else {
00060                 dir = -1;
00061                 val = max_val;
00062             }
00063         }
00064         val += dir;
00065         pwm_elm( val, max_val, led );
00066     }
00067 };
00068 
00069 /*******************
00070 
00071 * LED1 task
00072 
00073  *******************/
00074 void led1_task( void )
00075 {
00076     led1_off();
00077     pwm_fake_t pwm_led( &led1, 10+3);
00078     while( 1 ) {
00079         pwm_led.run();
00080     }
00081 }
00082 
00083 /*******************
00084 
00085 * LED2 task
00086 
00087  *******************/
00088 void led2_task( void )
00089 {
00090     led2_off();
00091     taskWait( 666 );
00092     pwm_fake_t pwm_led( &led2, 6+3);
00093     while( 1 ) {
00094         pwm_led.run();
00095     }
00096 }
00097