mirror of
https://github.com/rvtr/ctr_mcu.git
synced 2025-06-19 17:15:31 -04:00

・pwsw_hold割り込みを入れるまでの時間が現行よりも遅くなっているのを修正。実測すると現行が正しい。プリスケーラ(task_interbal)のリファクタリング時に帳尻合わせ忘れてた ・試遊台で自動電源onが機能しなくなっていた。起動理由フラグの管理を間違えていた。 adc.c getmean3() 使っていないので削除、それに伴い不要になった変数も削除 batt_params.c バッテリパラメータを別ファイルに pm.c コメント間違い修正 git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-05-23%20-%20ctr.7z%20+%20svn_v1.068.zip/ctr/svn/ctr_mcu@362 013db118-44a6-b54f-8bf7-843cb86687b1
147 lines
2.7 KiB
C
147 lines
2.7 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 --;
|
|
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 = (u8)( 600 / SYS_INTERVAL_TICK ) + 250;
|
|
break;
|
|
|
|
case( TWL_CAMLED_ON ):
|
|
case( TWL_CAMLED_DEF_ON ):
|
|
default:
|
|
LED_CAM = 1;
|
|
state_led_cam = 1;
|
|
break;
|
|
}
|
|
}
|