ichiro shirasaka / Mbed 2 deprecated scheduler-demo-cq-lpc11u35

Dependencies:   Scheduler mbed

Fork of scheduler-demo-cq-lpc11u35 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 DigitalIn s2(P0_2);
00021 DigitalOut led1(P0_20);
00022 
00023 #define led1_on()       led1=0  /*  Negative on */
00024 #define led1_off()      led1=1
00025 
00026 /*******************
00027 
00028 * Fake PWM class
00029 
00030  *******************/
00031 static void pwm_elm( int ms, int max_ms, DigitalOut *led )
00032 {
00033     *led=0;             // negative on
00034     taskWait( ms );
00035     *led=1;
00036     taskWait( max_ms - ms);
00037 }
00038 
00039 class pwm_fake_t
00040 {
00041     int max_val, val, MIN_VAL, dir, speed;
00042     DigitalOut *led;
00043 public:
00044     pwm_fake_t(DigitalOut *_led, int _speed) {
00045         max_val = speed = _speed;
00046         val = MIN_VAL = 0;
00047         dir =1;
00048         led = _led;
00049     }
00050     void run() {
00051         if( ( val >= max_val) || ( val <= MIN_VAL) ) {
00052             max_val = speed;//sio_get_led_blink_speed() + 3 ;   // change period
00053             max_val <<= 1;                              // adjust time
00054             if( val <= MIN_VAL ) {
00055                 dir = 1;
00056                 taskWait( 1000 );                           // wait 1src if led off
00057             } else {
00058                 dir = -1;
00059                 val = max_val;
00060             }
00061         }
00062         val += dir;
00063         pwm_elm( val, max_val, led );
00064     }
00065 };
00066 
00067 /*******************
00068 
00069 * LED1 task
00070 
00071  *******************/
00072 void led1_task( void )
00073 {
00074     led1_off();
00075     taskWait( 1000 );
00076     pwm_fake_t pwm_led( &led1, 10+3);
00077     while( 1 ) {
00078         pwm_led.run();
00079     }
00080 }
00081