For LPC1114FN28, LPC1114. Multitask scheduler demo project.,arduino,due,compatible
led_tsk.cpp
- Committer:
- mimi3
- Date:
- 2014-03-08
- Revision:
- 1:be0642fdd704
- Parent:
- 0:79e298c7d4b9
File content as of revision 1:be0642fdd704:
/*
#
# Copyright (C) 2010-2013, audin
# 2013/08: Modify for mbed for LPC1114FN28
# 2013/07: Modify for LPCOpen Platform.
# 2011/04, 2012/11
# 2010/11
# http://avr.paslog.jp
# This file is licensed under the MIT License.
#
*/
#include "mbed.h"
#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);
#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 */
}
/*******************
* Fake PWM
*******************/
static void pwm( int ms )
{
led1_on();
taskWait( ms );
led1_off();
taskWait( max_val - val);
}
/*******************
* LED task
*******************/
void led_task( void)
{
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 ) {
if( ( val >= max_val) || ( val <= MIN_VAL) ) {
max_val = sio_get_led_blink_speed() + 3 ; // change period
max_val <<= 1; // adjust time
if( val <= MIN_VAL ) {
dir = 1;
taskWait( 1000 ); // wait 1src if led off
} else {
dir = -1;
val = max_val;
}
}
val += dir;
pwm( val );
}
}
/*******************
* LED2 init
*******************/
void led2_init(void)
{
led2_off(); /* first off */
}
void led2_task( void )
{
led2_init();
while( 1 ) {
led2_on();
taskWait(2000);
led2_off();
taskWait(2000);
}
}