mi mi / mbed-scli-test

Dependencies:   Scheduler

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers led_tsk.cpp Source File

led_tsk.cpp

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