mirror of
https://github.com/rvtr/ctr_mcu.git
synced 2025-06-19 00:55:37 -04:00

VC 2010 Express でとりあえずビルドできます。 とりあえず実機上でも動いてる git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-05-23%20-%20ctr.7z%20+%20svn_v1.068.zip/ctr/svn/ctr_mcu@345 013db118-44a6-b54f-8bf7-843cb86687b1
146 lines
2.6 KiB
C
146 lines
2.6 KiB
C
/******************************************************//**
|
|
LED_Cam TO02
|
|
\n BLINK,*_PLUSE の時は、1周期分は必ずその状態になります。
|
|
\n その間に OFF→BLINK などされると、OFFが無視されます。
|
|
*********************************************************/
|
|
#ifndef _WIN32
|
|
|
|
#pragma sfr
|
|
|
|
#endif
|
|
|
|
#include "incs.h"
|
|
#include "led.h"
|
|
|
|
|
|
|
|
// ========================================================
|
|
static u8 state_led_cam = 0;
|
|
static u16 task_interval;
|
|
|
|
bit cam_led_update;
|
|
|
|
|
|
|
|
// ========================================================
|
|
static void cam_led_twl();
|
|
|
|
|
|
|
|
// ========================================================
|
|
void tsk_led_cam( )
|
|
{
|
|
DI(); // レジスタへの書き込みで強制起動がかかることがあるため
|
|
if( !cam_led_update )
|
|
{
|
|
if( task_interval != 0 )
|
|
{
|
|
task_interval -= 1;
|
|
return;
|
|
}
|
|
}
|
|
cam_led_update = false; // TWL のブリンク設定(一発だけ点灯)のため
|
|
EI();
|
|
|
|
if( system_status.pwr_state == SLEEP ) // sleep中、強制消灯
|
|
{
|
|
LED_CAM = 0;
|
|
state_led_cam = 0;
|
|
}
|
|
else
|
|
{
|
|
// ブリンクのように待たせたいとき以外は毎週起動する
|
|
// (レジスタの変更にすぐに反応する)
|
|
switch ( vreg_ctr[VREG_C_LED_CAM] )
|
|
{
|
|
case ( CAM_LED_OFF ):
|
|
default:
|
|
LED_CAM = 0;
|
|
state_led_cam = 0;
|
|
break;
|
|
|
|
case ( CAM_LED_ON ):
|
|
LED_CAM = 1;
|
|
state_led_cam = 0;
|
|
break;
|
|
|
|
case ( CAM_LED_BLINK ):
|
|
if( state_led_cam == 0 )
|
|
{
|
|
LED_CAM = 1;
|
|
state_led_cam = 1;
|
|
}
|
|
else
|
|
{
|
|
LED_CAM = 0;
|
|
state_led_cam = 0;
|
|
}
|
|
task_interval = 250;
|
|
break;
|
|
|
|
case ( CAM_LED_ON_PLUSE ):
|
|
if( state_led_cam == 0 )
|
|
{
|
|
LED_CAM = 1;
|
|
state_led_cam = 1;
|
|
task_interval = 250;
|
|
}
|
|
else
|
|
{
|
|
vreg_ctr[VREG_C_LED_CAM] = CAM_LED_OFF;
|
|
}
|
|
break;
|
|
|
|
case ( CAM_LED_OFF_PLUSE ):
|
|
if( state_led_cam == 0 )
|
|
{
|
|
LED_CAM = 0;
|
|
state_led_cam = 1;
|
|
task_interval = 250;
|
|
}
|
|
else
|
|
{
|
|
vreg_ctr[VREG_C_LED_CAM] = CAM_LED_ON;
|
|
}
|
|
break;
|
|
|
|
case( CAM_LED_BY_TWL ):
|
|
cam_led_twl();
|
|
}
|
|
} // if( system_status.pwr_state == sleep ) ... else ...
|
|
}
|
|
|
|
|
|
|
|
void cam_led_twl()
|
|
{
|
|
// TWL互換 //
|
|
switch ( vreg_twl[ REG_TWL_INT_ADRS_CAM ] ){
|
|
case( TWL_CAMLED_OFF ):
|
|
LED_CAM = 0;
|
|
state_led_cam = 0;
|
|
break;
|
|
|
|
case( TWL_CAMLED_BLINK ):
|
|
if( state_led_cam == 0 )
|
|
{
|
|
LED_CAM = 1;
|
|
state_led_cam = 1;
|
|
}
|
|
else
|
|
{
|
|
LED_CAM = 0;
|
|
state_led_cam = 0;
|
|
}
|
|
task_interval = 600 / SYS_INTERVAL_TICK + 250;
|
|
break;
|
|
|
|
case( TWL_CAMLED_ON ):
|
|
case( TWL_CAMLED_DEF_ON ):
|
|
default:
|
|
LED_CAM = 1;
|
|
state_led_cam = 1;
|
|
break;
|
|
}
|
|
}
|