mirror of
https://github.com/rvtr/ctr_mcu.git
synced 2025-10-31 13:51:10 -04:00
コメント等修正
git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-05-23%20-%20ctr.7z%20+%20svn_v1.068.zip/ctr/svn/ctr_mcu@4 013db118-44a6-b54f-8bf7-843cb86687b1
This commit is contained in:
parent
047644344a
commit
0c0ecf9023
@ -1,8 +1,14 @@
|
|||||||
#pragma sfr
|
#pragma sfr
|
||||||
|
|
||||||
|
|
||||||
#include "incs_loader.h"
|
#include "incs_loader.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//=========================================================
|
||||||
|
// ウォッチドッグタイマのリスタート
|
||||||
|
// 0xACはマジック
|
||||||
void WDT_Restart( void ){
|
void WDT_Restart( void ){
|
||||||
WDTE = 0xAC; // restart watch dog timer
|
WDTE = WDT_RESTART_MAGIC;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
12
trunk/WDT.h
12
trunk/WDT.h
@ -1,8 +1,18 @@
|
|||||||
#ifndef _WDT_
|
#ifndef _WDT_
|
||||||
#define _WDT_
|
#define _WDT_
|
||||||
|
|
||||||
#define mcu_reset WDTE = 0x5A
|
|
||||||
|
|
||||||
|
|
||||||
|
//=========================================================
|
||||||
|
#define WDT_RESTART_MAGIC 0xAC
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//=========================================================
|
||||||
void WDT_Restart(void);
|
void WDT_Restart(void);
|
||||||
|
|
||||||
|
// 規定値以外を書くと例外でリセットがかかる
|
||||||
|
#define mcu_reset WDTE = 0x5A
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@ -1,10 +1,10 @@
|
|||||||
/*****************************************************************************
|
/* ========================================================
|
||||||
加速度センサ関係
|
加速度センサ関係
|
||||||
・データ更新完了でデータを吸い上げ手レジスタを更新、CPUに割り込み
|
・データ更新完了でデータを吸い上げ手レジスタを更新、CPUに割り込み
|
||||||
・フラグが立っていれば歩数カウント
|
・フラグが立っていれば歩数カウント
|
||||||
・加速度センサ割り込みからタスクを登録して下さい。(I2Cの競合回避などがあるので)
|
・加速度センサ割り込みからタスクを登録して下さい。(I2Cの競合回避などがあるので)
|
||||||
|
|
||||||
*****************************************************************************/
|
======================================================== */
|
||||||
#pragma SFR
|
#pragma SFR
|
||||||
#pragma NOP
|
#pragma NOP
|
||||||
#pragma HALT
|
#pragma HALT
|
||||||
@ -13,6 +13,7 @@
|
|||||||
#include "incs.h"
|
#include "incs.h"
|
||||||
|
|
||||||
|
|
||||||
|
// ========================================================
|
||||||
// レジスタ名
|
// レジスタ名
|
||||||
#define ACC_REG_WHOAMI 0x0F
|
#define ACC_REG_WHOAMI 0x0F
|
||||||
#define ACC_REG_CTRL1 0x20
|
#define ACC_REG_CTRL1 0x20
|
||||||
@ -40,7 +41,8 @@
|
|||||||
#define ACC_BITS_ALL_AXIS_ON 7
|
#define ACC_BITS_ALL_AXIS_ON 7
|
||||||
|
|
||||||
|
|
||||||
//*************************************
|
|
||||||
|
// ========================================================
|
||||||
u8 hosu_mode = 0;
|
u8 hosu_mode = 0;
|
||||||
/*
|
/*
|
||||||
0: power down 停止
|
0: power down 停止
|
||||||
@ -48,12 +50,12 @@ u8 hosu_mode = 0;
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************************
|
/* ========================================================
|
||||||
・割り込みを確認してデータを吸い上げ、レジスタに書き出します
|
・割り込みを確認してデータを吸い上げ、レジスタに書き出します
|
||||||
・本当であればコールバック関数を登録しておけばいいじゃんとなるのですが、
|
・本当であればコールバック関数を登録しておけばいいじゃんとなるのですが、
|
||||||
I2Cが使用中だったら?とか考えると私ではそこまでできないのです。
|
I2Cが使用中だったら?とか考えると私ではそこまでできないのです。
|
||||||
・自動歩数計とかでも結局
|
・自動歩数計とかでも結局
|
||||||
*****************************************************************************/
|
======================================================== */
|
||||||
task_status_immed tsk_cbk_accero(){ // (疑似)isrから登録されます
|
task_status_immed tsk_cbk_accero(){ // (疑似)isrから登録されます
|
||||||
static u8 sequence;
|
static u8 sequence;
|
||||||
u8* dest_adrs;
|
u8* dest_adrs;
|
||||||
@ -103,6 +105,7 @@ task_status_immed acc_read(){
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*=========================================================
|
/*=========================================================
|
||||||
加速度センサ透過アクセス ライト
|
加速度センサ透過アクセス ライト
|
||||||
========================================================*/
|
========================================================*/
|
||||||
@ -114,11 +117,12 @@ task_status_immed acc_write(){
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************************
|
|
||||||
|
/*=========================================================
|
||||||
自動歩数カウントモードにセット
|
自動歩数カウントモードにセット
|
||||||
todo 他のモードだったら止めたり、復帰させたり
|
todo 他のモードだったら止めたり、復帰させたり
|
||||||
割り込みルーチンなどでカウント判定が必要
|
割り込みルーチンなどでカウント判定が必要
|
||||||
*****************************************************************************/
|
========================================================*/
|
||||||
err accero_hosu_start(){
|
err accero_hosu_start(){
|
||||||
u8 temp;
|
u8 temp;
|
||||||
u8 err;
|
u8 err;
|
||||||
|
|||||||
20
trunk/adc.c
20
trunk/adc.c
@ -1,10 +1,8 @@
|
|||||||
/******************************************************************************
|
/* ========================================================
|
||||||
‘ÎPMIC_TWL2 I2C’Ê<EFBFBD>M
|
“ˇ“c<EFBFBD>—ŠJ‹Z
|
||||||
de JHL “¡“c<EFBFBD>—ŠJ‹Z
|
|
||||||
nintendo
|
nintendo
|
||||||
'09 Apr
|
'09 Apr
|
||||||
|
======================================================== */
|
||||||
*******************************************************************************/
|
|
||||||
#include "incs_loader.h"
|
#include "incs_loader.h"
|
||||||
#include "adc.h"
|
#include "adc.h"
|
||||||
#include "pm.h"
|
#include "pm.h"
|
||||||
@ -16,7 +14,7 @@
|
|||||||
bit adc_updated;
|
bit adc_updated;
|
||||||
|
|
||||||
|
|
||||||
/******************************************************************************
|
/* ========================================================
|
||||||
ADC設定と、開始
|
ADC設定と、開始
|
||||||
|
|
||||||
以下のピンは主にここで操作・監視されます。
|
以下のピンは主にここで操作・監視されます。
|
||||||
@ -29,7 +27,7 @@ bit adc_updated;
|
|||||||
|
|
||||||
・8tics毎に呼ばれ、3チャンネル分取り込むとADCを停止します。
|
・8tics毎に呼ばれ、3チャンネル分取り込むとADCを停止します。
|
||||||
タスク起動時、レジスタには前回の取り込み値が入っています。
|
タスク起動時、レジスタには前回の取り込み値が入っています。
|
||||||
******************************************************************************/
|
======================================================== */
|
||||||
task_interval tsk_adc(){
|
task_interval tsk_adc(){
|
||||||
static u8 old_3ddepth;
|
static u8 old_3ddepth;
|
||||||
static u8 old_sndvol;
|
static u8 old_sndvol;
|
||||||
@ -96,10 +94,10 @@ task_interval tsk_adc(){
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
/******************************************************************************
|
/* ========================================================
|
||||||
自前で次のチャンネル
|
自前で次のチャンネル
|
||||||
一通り終わったら止める
|
一通り終わったら止める
|
||||||
*******************************************************************************/
|
======================================================== */
|
||||||
/*
|
/*
|
||||||
static u8 average( u8* dat ){
|
static u8 average( u8* dat ){
|
||||||
static u8 ind;
|
static u8 ind;
|
||||||
@ -153,9 +151,9 @@ __interrupt void int_adc(){
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
/******************************************************************************
|
/* ========================================================
|
||||||
tsk_adcと競合することを考慮していません。
|
tsk_adcと競合することを考慮していません。
|
||||||
*******************************************************************************/
|
======================================================== */
|
||||||
u16 get_adc( u8 ch ){
|
u16 get_adc( u8 ch ){
|
||||||
u16 temp;
|
u16 temp;
|
||||||
|
|
||||||
|
|||||||
@ -3,10 +3,17 @@
|
|||||||
|
|
||||||
#define _debug_
|
#define _debug_
|
||||||
|
|
||||||
|
#define MCU_VER_MAJOR 0;
|
||||||
|
#define MCU_VER_MINOR 1;
|
||||||
|
|
||||||
|
|
||||||
#define _MODEL_TEG2_
|
#define _MODEL_TEG2_
|
||||||
//#define _MODEL_WM0_
|
//#define _MODEL_WM0_
|
||||||
//define _MODEL_CTR_
|
//define _MODEL_CTR_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef _MODEL_TEG2_
|
#ifdef _MODEL_TEG2_
|
||||||
#define _PMIC_TWL_
|
#define _PMIC_TWL_
|
||||||
#define _MCU_KE3_
|
#define _MCU_KE3_
|
||||||
@ -25,8 +32,5 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#define MCU_VER_MAJOR 0;
|
|
||||||
#define MCU_VER_MINOR 1;
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@ -1,8 +1,8 @@
|
|||||||
/******************************************************************************
|
/* ========================================================
|
||||||
対SoC 新規チャンネル I2C通信
|
対SoC 新規チャンネル I2C通信
|
||||||
de JHL “¡“c<EFBFBD>—ŠJ‹Z.nintendo
|
“ˇ“c<EFBFBD>—ŠJ‹Z.nintendo
|
||||||
'09 Apr
|
'09 Apr
|
||||||
*******************************************************************************/
|
======================================================== */
|
||||||
#include "incs_loader.h"
|
#include "incs_loader.h"
|
||||||
|
|
||||||
// u16 tot;
|
// u16 tot;
|
||||||
@ -72,8 +72,10 @@
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*****************************************************************************
|
|
||||||
*****************************************************************************/
|
|
||||||
|
/* ========================================================
|
||||||
|
======================================================== */
|
||||||
enum{
|
enum{
|
||||||
IIC_IDLE = 0,
|
IIC_IDLE = 0,
|
||||||
IIC_RCV_REG_ADRS,
|
IIC_RCV_REG_ADRS,
|
||||||
@ -233,7 +235,7 @@ __interrupt void int_iic_ctr(){
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************/
|
// ========================================================
|
||||||
void IIC_ctr_Init( void ){
|
void IIC_ctr_Init( void ){
|
||||||
|
|
||||||
IICAEN = 1;
|
IICAEN = 1;
|
||||||
@ -268,7 +270,8 @@ void IIC_ctr_Init( void ){
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//****************************************************************************
|
|
||||||
|
// ========================================================
|
||||||
void IIC_ctr_Stop( void ){
|
void IIC_ctr_Stop( void ){
|
||||||
IICE = 0; /* IICA disable */
|
IICE = 0; /* IICA disable */
|
||||||
IICAEN = 0;
|
IICAEN = 0;
|
||||||
|
|||||||
126
trunk/i2c_mcu.c
126
trunk/i2c_mcu.c
@ -1,8 +1,8 @@
|
|||||||
/******************************************************************************
|
/* ========================================================
|
||||||
簡易I2C(内蔵ペリフェラル使用)通信
|
簡易I2C(内蔵ペリフェラル使用)通信
|
||||||
de JHL 藤田@開技
|
de JHL 藤田@開技
|
||||||
'09 Feb -
|
'09 Feb -
|
||||||
*******************************************************************************/
|
======================================================== */
|
||||||
#pragma sfr
|
#pragma sfr
|
||||||
#pragma di
|
#pragma di
|
||||||
#pragma ei
|
#pragma ei
|
||||||
@ -12,11 +12,9 @@
|
|||||||
#include "incs_loader.h"
|
#include "incs_loader.h"
|
||||||
#include "i2c_mcu.h"
|
#include "i2c_mcu.h"
|
||||||
|
|
||||||
bit iic_mcu_wo_dma;
|
|
||||||
volatile bit iic_mcu_busy;
|
|
||||||
volatile bit iic_mcu_initialized;
|
|
||||||
|
|
||||||
/*************************************/
|
|
||||||
|
// ========================================================
|
||||||
// SSR0n
|
// SSR0n
|
||||||
#define bit_TSF0 6
|
#define bit_TSF0 6
|
||||||
// SIR0n
|
// SIR0n
|
||||||
@ -35,7 +33,8 @@ volatile bit iic_mcu_initialized;
|
|||||||
#define TAUS_MASK 0b0000101100001011;
|
#define TAUS_MASK 0b0000101100001011;
|
||||||
|
|
||||||
|
|
||||||
/*************************************/
|
|
||||||
|
// ========================================================
|
||||||
static void iic_mcu_send_st();
|
static void iic_mcu_send_st();
|
||||||
static void iic_mcu_send_re_st();
|
static void iic_mcu_send_re_st();
|
||||||
static void iic_mcu_send_sp();
|
static void iic_mcu_send_sp();
|
||||||
@ -43,21 +42,27 @@ static err iic_mcu_send_a_byte( u8 );
|
|||||||
static err iic_mcu_call_slave( u8 slave );
|
static err iic_mcu_call_slave( u8 slave );
|
||||||
|
|
||||||
|
|
||||||
/*************************************/
|
|
||||||
|
// ========================================================
|
||||||
|
bit iic_mcu_wo_dma;
|
||||||
|
volatile bit iic_mcu_busy;
|
||||||
|
volatile bit iic_mcu_initialized;
|
||||||
|
|
||||||
|
|
||||||
u8 iic_send_work[4];
|
u8 iic_send_work[4];
|
||||||
u8* p_iic_send_wo_dma_dat;
|
u8* p_iic_send_wo_dma_dat;
|
||||||
u8 iic_send_wo_dma_len;
|
u8 iic_send_wo_dma_len;
|
||||||
|
|
||||||
u8 iic_mcu_bus_status; // 一文字リードの時はデータを返す。
|
u8 iic_mcu_bus_status; // 一文字リードの時はデータを返す。
|
||||||
// ステータスが必要ならこっちを呼んで
|
// ステータスが必要ならこっちを呼んで
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**************************************
|
/* ========================================================
|
||||||
スレーブからの 『1文字』 リード
|
スレーブからの 『1文字』 リード
|
||||||
返値がデータそのものです。
|
返値がデータそのものです。
|
||||||
エラー判定ができません。
|
エラー判定ができません。
|
||||||
*************************************/
|
======================================================== */
|
||||||
u8 iic_mcu_read_a_byte( u8 SLA, u8 adrs ){
|
u8 iic_mcu_read_a_byte( u8 SLA, u8 adrs ){
|
||||||
|
|
||||||
#ifdef _debug_
|
#ifdef _debug_
|
||||||
@ -104,7 +109,7 @@ u8 iic_mcu_read_a_byte( u8 SLA, u8 adrs ){
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
/******************************************************************************
|
/* ========================================================
|
||||||
スレーブからのリード
|
スレーブからのリード
|
||||||
0 正常終了
|
0 正常終了
|
||||||
1 スレーブが応答しない
|
1 スレーブが応答しない
|
||||||
@ -113,7 +118,7 @@ u8 iic_mcu_read_a_byte( u8 SLA, u8 adrs ){
|
|||||||
【注】
|
【注】
|
||||||
スレーブがウェイトコンディションを出すことは禁止です。
|
スレーブがウェイトコンディションを出すことは禁止です。
|
||||||
その場合でもエラー検出などできません
|
その場合でもエラー検出などできません
|
||||||
******************************************************************************/
|
======================================================== */
|
||||||
err iic_mcu_read( u8 slave, u8 adrs, u8 len, u8* dest ){
|
err iic_mcu_read( u8 slave, u8 adrs, u8 len, u8* dest ){
|
||||||
|
|
||||||
//*
|
//*
|
||||||
@ -148,17 +153,17 @@ err iic_mcu_read( u8 slave, u8 adrs, u8 len, u8* dest ){
|
|||||||
// if( err != ERR_SUCCESS )~
|
// if( err != ERR_SUCCESS )~
|
||||||
|
|
||||||
// データ受信 //
|
// データ受信 //
|
||||||
iic_mcu_send_re_st(); // リスタートコンディション
|
iic_mcu_send_re_st(); // リスタートコンディション
|
||||||
iic_mcu_send_a_byte( slave | 0x01 ); // 送信完了まで戻ってきません。
|
iic_mcu_send_a_byte( slave | 0x01 ); // 送信完了まで戻ってきません。
|
||||||
|
|
||||||
// データ受信
|
// データ受信
|
||||||
ST0 = 0x0004; // 受信モードに設定を変えるのでロジック停止
|
ST0 = 0x0004; // 受信モードに設定を変えるのでロジック停止
|
||||||
SCR02 = RXE0 | 1 << SLC02 | 7 << DLS02; // 受信設定
|
SCR02 = RXE0 | 1 << SLC02 | 7 << DLS02; // 受信設定
|
||||||
SS0 = 0x0004; // 通信待機
|
SS0 = 0x0004; // 通信待機
|
||||||
|
|
||||||
do{
|
do{
|
||||||
if( len == 1 ){
|
if( len == 1 ){
|
||||||
SOE0 = 0x0000; // 最後のNAK
|
SOE0 = 0x0000; // 最後のNAK
|
||||||
}
|
}
|
||||||
IICIF10 = 0;
|
IICIF10 = 0;
|
||||||
SIO10 = 0xFF; // ダミーデータを書くと受信開始
|
SIO10 = 0xFF; // ダミーデータを書くと受信開始
|
||||||
@ -180,14 +185,12 @@ err iic_mcu_read( u8 slave, u8 adrs, u8 len, u8* dest ){
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*****
|
/* ========================================================
|
||||||
スレーブへ 『1バイト』 ライト
|
スレーブへ 『1バイト』 ライト
|
||||||
前の転送が終わるのを待って、ライトします。
|
前の転送が終わるのを待って、ライトします。
|
||||||
返値 iic_mcu_write に同じ
|
返値 iic_mcu_write に同じ
|
||||||
|
|
||||||
■元のデータをそのまま使って、書きっぱなしにするので、
|
======================================================== */
|
||||||
ポインタをとっておかないと破壊されてしまう…気がする
|
|
||||||
******************************************************************************/
|
|
||||||
err iic_mcu_write_a_byte( u8 SLA, u8 adrs, u8 dat ){
|
err iic_mcu_write_a_byte( u8 SLA, u8 adrs, u8 dat ){
|
||||||
|
|
||||||
while( iic_mcu_busy ){
|
while( iic_mcu_busy ){
|
||||||
@ -213,7 +216,7 @@ err iic_mcu_write_a_byte( u8 SLA, u8 adrs, u8 dat ){
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
/******************************************************************************
|
/* ========================================================
|
||||||
スレーブへライト
|
スレーブへライト
|
||||||
レジスタ adrs を先頭に、
|
レジスタ adrs を先頭に、
|
||||||
*strから
|
*strから
|
||||||
@ -271,13 +274,13 @@ err iic_mcu_write( u8 slave, u8 adrs, u8 len, u8* src ){
|
|||||||
DSA1 = (u8)( &SIO10 );
|
DSA1 = (u8)( &SIO10 );
|
||||||
DRA1 = (u16)iic_send_work;
|
DRA1 = (u16)iic_send_work;
|
||||||
DBC1 = len;
|
DBC1 = len;
|
||||||
DMC1 = DRS | 8; // RAM -> SFR, 8bit, IRQ, IIC10
|
DMC1 = DRS | 8; // RAM -> SFR, 8bit, IRQ, IIC10
|
||||||
|
|
||||||
DMAIF1 = 0;
|
DMAIF1 = 0;
|
||||||
DMAMK1 = 0;
|
DMAMK1 = 0;
|
||||||
DST1 = 1;
|
DST1 = 1;
|
||||||
|
|
||||||
SIO10 = adrs; // 書きっぱなし! 割り込みが発生してDMAスタート
|
SIO10 = adrs; // 書きっぱなし! 割り込みが発生してDMAスタート
|
||||||
// 残りは割り込みルーチン内で
|
// 残りは割り込みルーチン内で
|
||||||
}else{
|
}else{
|
||||||
// DMAを使用しない //
|
// DMAを使用しない //
|
||||||
@ -297,11 +300,11 @@ err iic_mcu_write( u8 slave, u8 adrs, u8 len, u8* src ){
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
/******************************************************************************
|
/* ========================================================
|
||||||
DMA1転送終了割り込み
|
DMA1転送終了割り込み
|
||||||
IIC_mcu の送信完了コールバック関数のようなもの
|
IIC_mcu の送信完了コールバック関数のようなもの
|
||||||
注:DMA転送が終わっただけで、I2Cの転送は終わってません
|
注:DMA転送が終わっただけで、I2Cの転送は終わってません
|
||||||
******************************************************************************/
|
======================================================== */
|
||||||
__interrupt void int_dma1(){
|
__interrupt void int_dma1(){
|
||||||
DMAMK1 = 1;
|
DMAMK1 = 1;
|
||||||
DEN1 = 0;
|
DEN1 = 0;
|
||||||
@ -312,9 +315,9 @@ __interrupt void int_dma1(){
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
/***************************************
|
/* ========================================================
|
||||||
IIC MCUのバイト送出完了割り込み
|
IIC MCUのバイト送出完了割り込み
|
||||||
**************************************/
|
======================================================== */
|
||||||
__interrupt void int_iic10(){
|
__interrupt void int_iic10(){
|
||||||
if( iic_mcu_wo_dma ){
|
if( iic_mcu_wo_dma ){
|
||||||
// DMA使用せず、転送途中
|
// DMA使用せず、転送途中
|
||||||
@ -331,13 +334,13 @@ __interrupt void int_iic10(){
|
|||||||
// iic_mcu_send_sp();
|
// iic_mcu_send_sp();
|
||||||
{
|
{
|
||||||
ST0 = 0x0004;
|
ST0 = 0x0004;
|
||||||
SOE0 = 0; // 受信の時はもっと前に「も」設定してる。(NACK出力)
|
SOE0 = 0; // 受信の時はもっと前に「も」設定してる。(NACK出力)
|
||||||
SO0 = 0x0000 | TAUS_MASK; // SCL
|
SO0 = 0x0000 | TAUS_MASK; // SCL
|
||||||
NOP();
|
NOP();
|
||||||
NOP();
|
NOP();
|
||||||
NOP();
|
NOP();
|
||||||
NOP();
|
NOP();
|
||||||
SO0 = 0x0400 | TAUS_MASK; // SCL
|
SO0 = 0x0400 | TAUS_MASK; // SCL
|
||||||
NOP();
|
NOP();
|
||||||
NOP();
|
NOP();
|
||||||
NOP();
|
NOP();
|
||||||
@ -350,19 +353,19 @@ __interrupt void int_iic10(){
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
/******************************************************************************
|
/* ========================================================
|
||||||
スレーブの呼び出し
|
スレーブの呼び出し
|
||||||
スレーブアドレスを呼んで、ACKの確認。
|
スレーブアドレスを呼んで、ACKの確認。
|
||||||
ACK → 返:0
|
ACK → 返:0
|
||||||
NACK → ストップコンディションを出す。 返:1
|
NACK → ストップコンディションを出す。 返:1
|
||||||
******************************************************************************/
|
======================================================== */
|
||||||
static err iic_mcu_call_slave( u8 slave ){
|
static err iic_mcu_call_slave( u8 slave ){
|
||||||
iic_mcu_send_st();
|
iic_mcu_send_st();
|
||||||
|
|
||||||
// SIR02 = SSR02; // NAKエラーのフラグクリア
|
// SIR02 = SSR02; // NAKエラーのフラグクリア
|
||||||
if( iic_mcu_send_a_byte( slave ) != 0 ){
|
if( iic_mcu_send_a_byte( slave ) != 0 ){
|
||||||
iic_mcu_send_sp();
|
iic_mcu_send_sp();
|
||||||
return( ERR_NAK ); // 指定のスレーブがいない / busy
|
return( ERR_NAK ); // 指定のスレーブがいない / busy
|
||||||
}
|
}
|
||||||
|
|
||||||
return( ERR_SUCCESS );
|
return( ERR_SUCCESS );
|
||||||
@ -370,11 +373,10 @@ static err iic_mcu_call_slave( u8 slave ){
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/* ========================================================
|
||||||
I2C単機能API
|
ほんとに1バイト書くのみ
|
||||||
ほんとに1バイト書くだけ。
|
|
||||||
書き終わるまで帰りません
|
書き終わるまで帰りません
|
||||||
******************************************************************************/
|
======================================================== */
|
||||||
static err iic_mcu_send_a_byte( u8 dat ){
|
static err iic_mcu_send_a_byte( u8 dat ){
|
||||||
|
|
||||||
IICIF10 = 0;
|
IICIF10 = 0;
|
||||||
@ -391,10 +393,10 @@ static err iic_mcu_send_a_byte( u8 dat ){
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/* ========================================================
|
||||||
スタートコンディションを発行
|
スタートコンディションを発行
|
||||||
自力でぱたぱたしなくてはならない
|
ソフトウェア制御
|
||||||
*******************************************************************************/
|
======================================================== */
|
||||||
static void iic_mcu_send_st(){
|
static void iic_mcu_send_st(){
|
||||||
SO0 &= ~0x0004; // SDA
|
SO0 &= ~0x0004; // SDA
|
||||||
NOP();
|
NOP();
|
||||||
@ -410,9 +412,9 @@ static void iic_mcu_send_st(){
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/* ========================================================
|
||||||
リスタート発行
|
リスタート発行
|
||||||
*******************************************************************************/
|
======================================================== */
|
||||||
static void iic_mcu_send_re_st(){
|
static void iic_mcu_send_re_st(){
|
||||||
ST0 |= 0x0004;
|
ST0 |= 0x0004;
|
||||||
SO0 |= 0x0400 | TAUS_MASK; // ( SDA = H ), SCL -> H
|
SO0 |= 0x0400 | TAUS_MASK; // ( SDA = H ), SCL -> H
|
||||||
@ -430,19 +432,19 @@ static void iic_mcu_send_re_st(){
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/* ========================================================
|
||||||
ストップコンディション発行
|
ストップコンディション発行
|
||||||
この前に最後のバイトの送受信の時に前準備が必要です。
|
この前に、「最後のバイトの送受信」の時に前準備が必要です。
|
||||||
*******************************************************************************/
|
======================================================== */
|
||||||
static void iic_mcu_send_sp(){
|
static void iic_mcu_send_sp(){
|
||||||
ST0 = 0x0004;
|
ST0 = 0x0004;
|
||||||
SOE0 = 0; // 受信の時はもっと前に「も」設定してる。(NACK出力)
|
SOE0 = 0; // 受信の時はもっと前に「も」設定してる。(NACK出力)
|
||||||
SO0 = 0x0000 | TAUS_MASK; // SCL
|
SO0 = 0x0000 | TAUS_MASK; // SCL
|
||||||
NOP();
|
NOP();
|
||||||
NOP();
|
NOP();
|
||||||
NOP();
|
NOP();
|
||||||
NOP();
|
NOP();
|
||||||
SO0 = 0x0400 | TAUS_MASK; // SCL
|
SO0 = 0x0400 | TAUS_MASK; // SCL
|
||||||
NOP();
|
NOP();
|
||||||
NOP();
|
NOP();
|
||||||
NOP();
|
NOP();
|
||||||
@ -452,10 +454,10 @@ static void iic_mcu_send_sp(){
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/* ========================================================
|
||||||
バスのリセット
|
バスのリセット
|
||||||
(ストップコンディションが出せそうだったらすかさず出す。
|
(ストップコンディションが出せそうだったらすかさず出す。
|
||||||
******************************************************************************/
|
======================================================== */
|
||||||
void iic2m_bus_reset(){
|
void iic2m_bus_reset(){
|
||||||
/*
|
/*
|
||||||
u8 count;
|
u8 count;
|
||||||
@ -477,9 +479,9 @@ void iic2m_bus_reset(){
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/* ========================================================
|
||||||
* ペリフェラルモジュールの初期化
|
ペリフェラルモジュールの初期化
|
||||||
*****************************************************************************/
|
======================================================== */
|
||||||
void iic_mcu_start(){
|
void iic_mcu_start(){
|
||||||
I2C_PU = 1;
|
I2C_PU = 1;
|
||||||
SAU0EN = 1;
|
SAU0EN = 1;
|
||||||
@ -500,13 +502,13 @@ void iic_mcu_start(){
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/* ========================================================
|
||||||
* モジュールの停止
|
モジュールの停止
|
||||||
* 再度使うときは初期化が必要
|
再度使うときは初期化が必要
|
||||||
*****************************************************************************/
|
======================================================== */
|
||||||
void iic_mcu_stop(){
|
void iic_mcu_stop(){
|
||||||
while( iic_mcu_busy ){;} // DMA動作中はもう少し待つ
|
while( iic_mcu_busy ){;} // DMA動作中はもう少し待つ
|
||||||
iic_mcu_send_re_st(); // SCL,SDAをLLにする
|
iic_mcu_send_re_st(); // SCL,SDAをLLにする
|
||||||
I2C_PU = 0;
|
I2C_PU = 0;
|
||||||
SAU0EN = 0;
|
SAU0EN = 0;
|
||||||
iic_mcu_initialized = 0;
|
iic_mcu_initialized = 0;
|
||||||
|
|||||||
@ -2,18 +2,22 @@
|
|||||||
#define __ic2_mcu__
|
#define __ic2_mcu__
|
||||||
|
|
||||||
|
|
||||||
//*************************************
|
// ========================================================
|
||||||
#define ERR_OK 0
|
#define ERR_OK 0
|
||||||
#define ERR_NAK 1
|
#define ERR_NAK 1
|
||||||
#define ERR_NOSLAVE 2
|
#define ERR_NOSLAVE 2
|
||||||
|
|
||||||
//*************************************
|
|
||||||
|
|
||||||
|
// ========================================================
|
||||||
extern volatile bit iic_mcu_busy;
|
extern volatile bit iic_mcu_busy;
|
||||||
extern bit iic_mcu_wo_dma;
|
extern bit iic_mcu_wo_dma;
|
||||||
|
|
||||||
extern u8 iic_mcu_bus_status;
|
extern u8 iic_mcu_bus_status;
|
||||||
|
|
||||||
//*************************************
|
|
||||||
|
|
||||||
|
// ========================================================
|
||||||
err iic_mcu_read( u8 SLA, u8 adrs, u8 len, u8* dest );
|
err iic_mcu_read( u8 SLA, u8 adrs, u8 len, u8* dest );
|
||||||
u8 iic_mcu_read_a_byte( u8 SLA, u8 adrs );
|
u8 iic_mcu_read_a_byte( u8 SLA, u8 adrs );
|
||||||
|
|
||||||
|
|||||||
@ -111,15 +111,15 @@ u16 tot;
|
|||||||
|
|
||||||
__interrupt void int_iic_twl(){
|
__interrupt void int_iic_twl(){
|
||||||
|
|
||||||
WREL = 1; // ウェイト解除して次のバイトを待つ
|
WREL = 1; // ウェイト解除して次のバイトを待つ
|
||||||
// WDT_Restart();
|
// WDT_Restart();
|
||||||
// フラグ1回目 スレーブアドレス,R/W
|
// フラグ1回目 スレーブアドレス,R/W
|
||||||
if( COI != 1 ){ // 被呼び出し?
|
if( COI != 1 ){ // 被呼び出し?
|
||||||
LREL = 1; // 呼ばれたのは他のID
|
LREL = 1; // 呼ばれたのは他のID
|
||||||
return;
|
return;
|
||||||
}else{
|
}else{
|
||||||
// ACKE0 = 1; // 自動でackを返すようにする
|
// ACKE0 = 1; // 自動でackを返すようにする
|
||||||
// WREL = 1; // ウェイト解除して次のバイトを待つ
|
// WREL = 1; // ウェイト解除して次のバイトを待つ
|
||||||
}
|
}
|
||||||
|
|
||||||
wait_next; // 1バイト受信完了を待つ
|
wait_next; // 1バイト受信完了を待つ
|
||||||
@ -150,18 +150,18 @@ __interrupt void int_iic_twl(){
|
|||||||
// 自局をRで呼ばれるのを待つ
|
// 自局をRで呼ばれるのを待つ
|
||||||
wait_next;
|
wait_next;
|
||||||
IICAIF = 0;
|
IICAIF = 0;
|
||||||
if( COI != 1 ){ // 被呼び出し?
|
if( COI != 1 ){ // 被呼び出し?
|
||||||
LREL = 1; // 呼ばれたのは他のID(あれ?)
|
LREL = 1; // 呼ばれたのは他のID(あれ?)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
IICA = pre_dat; // データを送る
|
IICA = pre_dat; // データを送る
|
||||||
|
|
||||||
wait_next;
|
wait_next;
|
||||||
// 4回目。(送信データ後の、ACK/NACK後) どうしても発生してしまう。
|
// 4回目。(送信データ後の、ACK/NACK後) どうしても発生してしまう。
|
||||||
IICAIF = 0; // おしまい
|
IICAIF = 0; // おしまい
|
||||||
LREL = 1;
|
LREL = 1;
|
||||||
return;
|
return;
|
||||||
}else if( SPD ){ // 強制終了
|
}else if( SPD ){ // 強制終了
|
||||||
LREL = 1;
|
LREL = 1;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -201,10 +201,11 @@ void IIC_twl_Init( void ){
|
|||||||
IICAMK = 0; // 割り込みを許可
|
IICAMK = 0; // 割り込みを許可
|
||||||
|
|
||||||
IICE = 1;
|
IICE = 1;
|
||||||
PM20 &= ~0x3; /* set clock pin for IICA */
|
PM20 &= ~0x3; /* set clock pin for IICA */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//****************************************************************************
|
//****************************************************************************
|
||||||
void IIC_twl_Stop( void ){
|
void IIC_twl_Stop( void ){
|
||||||
IICE = 0; /* IICA disable */
|
IICE = 0; /* IICA disable */
|
||||||
@ -213,7 +214,7 @@ void IIC_twl_Stop( void ){
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//****************************************************************************
|
||||||
void IIC_twl_SlaveReceiveStart(){
|
void IIC_twl_SlaveReceiveStart(){
|
||||||
IICE = 1;
|
IICE = 1;
|
||||||
LREL = 1;
|
LREL = 1;
|
||||||
|
|||||||
@ -9,10 +9,11 @@
|
|||||||
#pragma section @@CODE ROM_CODE
|
#pragma section @@CODE ROM_CODE
|
||||||
//#pragma section @@CNST ROM_CNST
|
//#pragma section @@CNST ROM_CNST
|
||||||
|
|
||||||
|
|
||||||
|
//=========================================================
|
||||||
#ifndef _incs_h_
|
#ifndef _incs_h_
|
||||||
#define _incs_h_
|
#define _incs_h_
|
||||||
|
|
||||||
|
|
||||||
#include "jhl_defs.h"
|
#include "jhl_defs.h"
|
||||||
#include "user_define.h"
|
#include "user_define.h"
|
||||||
|
|
||||||
@ -24,6 +25,9 @@
|
|||||||
|
|
||||||
#include "i2c_mcu.h"
|
#include "i2c_mcu.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//=========================================================
|
||||||
err firm_update();
|
err firm_update();
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@ -13,6 +13,9 @@
|
|||||||
//#pragma section @@CNST FSL_CNST // セットしてくれない
|
//#pragma section @@CNST FSL_CNST // セットしてくれない
|
||||||
#pragma section @@CNSTL LDR_CNSL
|
#pragma section @@CNSTL LDR_CNSL
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//=========================================================
|
||||||
#include "jhl_defs.h"
|
#include "jhl_defs.h"
|
||||||
#include "user_define.h"
|
#include "user_define.h"
|
||||||
|
|
||||||
@ -26,6 +29,9 @@
|
|||||||
|
|
||||||
#include "WDT.h"
|
#include "WDT.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//=========================================================
|
||||||
err firm_update();
|
err firm_update();
|
||||||
err firm_restore();
|
err firm_restore();
|
||||||
|
|
||||||
|
|||||||
@ -9,7 +9,6 @@ typedef short s16;
|
|||||||
typedef unsigned char err;
|
typedef unsigned char err;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#define set_bit( cond, reg, pos ) \
|
#define set_bit( cond, reg, pos ) \
|
||||||
{ \
|
{ \
|
||||||
if( cond ){ \
|
if( cond ){ \
|
||||||
|
|||||||
52
trunk/led.c
52
trunk/led.c
@ -1,3 +1,10 @@
|
|||||||
|
/* ========================================================
|
||||||
|
LED.c
|
||||||
|
|
||||||
|
======================================================== */
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#pragma sfr
|
#pragma sfr
|
||||||
|
|
||||||
|
|
||||||
@ -5,7 +12,7 @@
|
|||||||
#include "led.h"
|
#include "led.h"
|
||||||
|
|
||||||
|
|
||||||
// ****************************************************************************
|
// ========================================================
|
||||||
// TPS0
|
// TPS0
|
||||||
#define BIT_PRS01 4
|
#define BIT_PRS01 4
|
||||||
#define BIT_PRS00 0
|
#define BIT_PRS00 0
|
||||||
@ -21,31 +28,29 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
// ****************************************************************************
|
// ========================================================
|
||||||
static task_interval led_pow_normal();
|
static task_interval led_pow_normal();
|
||||||
static task_interval led_pow_hotaru();
|
static task_interval led_pow_hotaru();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// ****************************************************************************
|
// ========================================================
|
||||||
u8 wifi_TX;
|
u8 wifi_TX;
|
||||||
|
|
||||||
|
|
||||||
// ****************************************************************************
|
// ========================================================
|
||||||
void LED_init(){
|
void LED_init(){
|
||||||
/**
|
/**
|
||||||
PWMのセット、とりあえず全部消灯
|
PWMのセット、とりあえず全部消灯
|
||||||
|
|
||||||
マスタチャネル:0 (P01:/reset2) マスターは偶数チャネルしかできない
|
マスタチャネル:0 (P01:/reset2) マスターは偶数チャネルしかできない
|
||||||
スレーブ 1 SLTO。(3D LED いるのかい?)
|
スレーブ 1 SLTO。(3D LED?)
|
||||||
2 カメラ
|
2 カメラ
|
||||||
3 WiFi
|
3 WiFi
|
||||||
4 (ピンはRTC32kHz out に使用)
|
4 (ピンはRTC32kHz out に使用)
|
||||||
5 充電
|
5 充電
|
||||||
6 電源 L
|
6 電源 L
|
||||||
7 電源 H
|
7 電源 H
|
||||||
|
|
||||||
|
|
||||||
*/
|
*/
|
||||||
TAU0EN = 1;
|
TAU0EN = 1;
|
||||||
TPS0 = 1 << BIT_PRS01 | 1 << BIT_PRS00; // マスタークロックはCK01,8M/2/2^4 = 250kHz
|
TPS0 = 1 << BIT_PRS01 | 1 << BIT_PRS00; // マスタークロックはCK01,8M/2/2^4 = 250kHz
|
||||||
@ -74,7 +79,7 @@ void LED_stop(){
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*******************************************************************************
|
/* ========================================================
|
||||||
// 電源LED
|
// 電源LED
|
||||||
LED_POW_B,R 6,7
|
LED_POW_B,R 6,7
|
||||||
|
|
||||||
@ -96,7 +101,7 @@ enum LED_ILUM_MODE{
|
|||||||
LED_POW_ILM_HOTARU,
|
LED_POW_ILM_HOTARU,
|
||||||
LED_POW_ILM_CEOFF
|
LED_POW_ILM_CEOFF
|
||||||
};
|
};
|
||||||
*******************************************************************************/
|
======================================================== */
|
||||||
task_interval tsk_led_pow(){
|
task_interval tsk_led_pow(){
|
||||||
|
|
||||||
switch( vreg_ctr[ VREG_C_LED_POW_ILUMI ] ){
|
switch( vreg_ctr[ VREG_C_LED_POW_ILUMI ] ){
|
||||||
@ -139,10 +144,10 @@ task_interval tsk_led_pow(){
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*******************************************************************************
|
/* ========================================================
|
||||||
電池残量で、 青→赤→赤点滅
|
電池残量で、 青→赤→赤点滅
|
||||||
!! タスクシステムから直接呼ばれるわけではないです!!
|
!! タスクシステムから直接呼ばれるわけではないです!!
|
||||||
*******************************************************************************/
|
======================================================== */
|
||||||
static task_interval led_pow_normal(){
|
static task_interval led_pow_normal(){
|
||||||
static u8 state;
|
static u8 state;
|
||||||
u8 dirty;
|
u8 dirty;
|
||||||
@ -192,13 +197,10 @@ static task_interval led_pow_normal(){
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* ========================================================
|
||||||
|
|
||||||
|
|
||||||
/*******************************************************************************
|
|
||||||
ホタルパターン
|
ホタルパターン
|
||||||
!! タスクシステムから直接呼ばれるわけではないです!!
|
!! タスクシステムから直接呼ばれるわけではないです!!
|
||||||
*******************************************************************************/
|
======================================================== */
|
||||||
static task_interval led_pow_hotaru(){
|
static task_interval led_pow_hotaru(){
|
||||||
static u8 state;
|
static u8 state;
|
||||||
static u8 delay;
|
static u8 delay;
|
||||||
@ -256,8 +258,9 @@ static task_interval led_pow_hotaru(){
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*******************************************************************************
|
|
||||||
*******************************************************************************/
|
/* ========================================================
|
||||||
|
======================================================== */
|
||||||
void set_LED_cam(){
|
void set_LED_cam(){
|
||||||
if(( vreg_ctr[ VREG_C_CAM_LED ] & 0x01 ) != 0 ){
|
if(( vreg_ctr[ VREG_C_CAM_LED ] & 0x01 ) != 0 ){
|
||||||
LED_duty_CAM = vreg_ctr[ VREG_C_LED_BRIGHT ];
|
LED_duty_CAM = vreg_ctr[ VREG_C_LED_BRIGHT ];
|
||||||
@ -275,12 +278,12 @@ void set_LED_cam(){
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*******************************************************************************
|
/* ========================================================
|
||||||
// LED_Cam TO02 未
|
// LED_Cam TO02 未
|
||||||
// LED_Charge 5 →PM
|
// LED_Charge 5 →PM
|
||||||
LED_Wifi,2 3, P24
|
LED_Wifi,2 3, P24
|
||||||
LED_3D 4
|
LED_3D 4
|
||||||
*******************************************************************************/
|
======================================================== */
|
||||||
task_interval tsk_led_wifi(){
|
task_interval tsk_led_wifi(){
|
||||||
// WiFi LED //
|
// WiFi LED //
|
||||||
static u8 remain_wifi_tx;
|
static u8 remain_wifi_tx;
|
||||||
@ -333,10 +336,13 @@ task_interval tsk_led_wifi(){
|
|||||||
return( 28 );
|
return( 28 );
|
||||||
}
|
}
|
||||||
|
|
||||||
/*******************************************************************************
|
|
||||||
|
|
||||||
|
/* ========================================================
|
||||||
wifi_TXピン割り込み
|
wifi_TXピン割り込み
|
||||||
LED点滅のフラグ操作のみ
|
LED点滅のフラグ操作のみ
|
||||||
******************************************************************************/
|
実際の点滅などは tsk_led_wifi で行う
|
||||||
|
======================================================== */
|
||||||
__interrupt void intp21_RFTx(){
|
__interrupt void intp21_RFTx(){
|
||||||
wifi_TX = 1;
|
wifi_TX = 1;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
/*============================================================================
|
/* ========================================================
|
||||||
MCU CTR BSR
|
MCU CTR BSR
|
||||||
2009/03/30
|
2009/03/30
|
||||||
開発技術部 藤田
|
開発技術部 藤田
|
||||||
@ -6,7 +6,7 @@
|
|||||||
ブートローダー部
|
ブートローダー部
|
||||||
ホストの通信と、自己書き換え、ファームのチェックを行う。
|
ホストの通信と、自己書き換え、ファームのチェックを行う。
|
||||||
|
|
||||||
============================================================================*/
|
======================================================== */
|
||||||
#pragma SFR
|
#pragma SFR
|
||||||
#pragma di
|
#pragma di
|
||||||
#pragma ei
|
#pragma ei
|
||||||
@ -27,11 +27,7 @@
|
|||||||
#include "magic.h"
|
#include "magic.h"
|
||||||
|
|
||||||
|
|
||||||
/*============================================================================*/
|
// ========================================================
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*============================================================================*/
|
|
||||||
#if (FSL_DATA_BUFFER_SIZE>0)
|
#if (FSL_DATA_BUFFER_SIZE>0)
|
||||||
fsl_u08 fsl_data_buffer[FSL_DATA_BUFFER_SIZE];
|
fsl_u08 fsl_data_buffer[FSL_DATA_BUFFER_SIZE];
|
||||||
#endif
|
#endif
|
||||||
@ -56,7 +52,7 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*============================================================================*/
|
// ========================================================
|
||||||
void FSL_Open(void);
|
void FSL_Open(void);
|
||||||
void FSL_Close(void);
|
void FSL_Close(void);
|
||||||
void hdwinit(void);
|
void hdwinit(void);
|
||||||
@ -64,7 +60,9 @@ void power_save();
|
|||||||
|
|
||||||
extern void main_loop();
|
extern void main_loop();
|
||||||
|
|
||||||
/*============================================================================*/
|
|
||||||
|
|
||||||
|
// ========================================================
|
||||||
void main(){
|
void main(){
|
||||||
u16 i = 0;
|
u16 i = 0;
|
||||||
|
|
||||||
@ -109,9 +107,9 @@ void main(){
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
/******************************************************************************
|
/* ========================================================
|
||||||
省電力モードへ移行
|
省電力モードへ移行
|
||||||
******************************************************************************/
|
======================================================== */
|
||||||
void power_save(){
|
void power_save(){
|
||||||
if( !renge_task_interval_run_force ){
|
if( !renge_task_interval_run_force ){
|
||||||
HALT();
|
HALT();
|
||||||
@ -120,9 +118,9 @@ void power_save(){
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
/******************************************************************************
|
/* ========================================================
|
||||||
キーリターン割り込み
|
キーリターン割り込み
|
||||||
******************************************************************************/
|
======================================================== */
|
||||||
__interrupt void int_kr(){
|
__interrupt void int_kr(){
|
||||||
if( system_status.pwr_state == OFF ){
|
if( system_status.pwr_state == OFF ){
|
||||||
// 電源onのカウント。特にすることはない
|
// 電源onのカウント。特にすることはない
|
||||||
@ -131,23 +129,22 @@ __interrupt void int_kr(){
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
/******************************************************************************
|
/* ========================================================
|
||||||
ext dc
|
ext dc
|
||||||
******************************************************************************/
|
======================================================== */
|
||||||
__interrupt void intp4(){
|
__interrupt void intp4(){
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/******************************************************************************
|
/* ========================================================
|
||||||
shell close
|
shell close
|
||||||
******************************************************************************/
|
======================================================== */
|
||||||
__interrupt void intp5(){
|
__interrupt void intp5(){
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// ========================================================
|
||||||
/*============================================================================*/
|
|
||||||
void hdwinit(void){ // スタートアップルーチンが勝手に呼びます
|
void hdwinit(void){ // スタートアップルーチンが勝手に呼びます
|
||||||
DI(); /* マスタ割り込み禁止 */
|
DI(); /* マスタ割り込み禁止 */
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
ビルド時刻を埋め込みます。
|
ビルド時刻を埋め込みます。
|
||||||
ビルドの度に更新されるようにする必要がありますよ。
|
ビルドの度に更新されるようにする必要があります。
|
||||||
(touchしてね)
|
(touchしてね)
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
#pragma section @@CNSTL MGC_LOAD AT 0x0FF6
|
#pragma section @@CNSTL MGC_LOAD AT 0x0FF6
|
||||||
@ -12,4 +12,3 @@ static const unsigned char MGC_HEAD[] = __TIME__;
|
|||||||
#pragma section @@CNST MGC_TAIL AT 0x47F6
|
#pragma section @@CNST MGC_TAIL AT 0x47F6
|
||||||
static const unsigned char MGC_TAIL[] = __TIME__;
|
static const unsigned char MGC_TAIL[] = __TIME__;
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
50
trunk/main.c
50
trunk/main.c
@ -1,42 +1,9 @@
|
|||||||
/******************************************************************************
|
/* ========================================================
|
||||||
MCU CTR BSR
|
MCU CTR BSR
|
||||||
2008,2009 nintendo
|
2008,2009 nintendo
|
||||||
開発技術部 藤田
|
開発技術部 藤田
|
||||||
ばさら(婆娑羅)。十二神将の2番目、丑の守り神だそうだ。
|
======================================================== */
|
||||||
二番目のプロダクトなので。中二っぽい。
|
|
||||||
前回の BP_TWL の BP は (The) back player を文字って back processor 。後衛です。
|
|
||||||
レーザーマーキングの文字数の制限のため。
|
|
||||||
|
|
||||||
|
|
||||||
todo:
|
|
||||||
|
|
||||||
>1) BL用PWMはスリープに入る時にはOffにしておかないとまずいですよね?
|
|
||||||
> 結局順序の保証がいるので、MCUに「PMIC I2C Busy」フラグが欲しいのです
|
|
||||||
> が、いかがでしょうか?>藤田君
|
|
||||||
> 仕様として、SoCからのPMICへの処理依頼の書き込み終了直後に 1 である
|
|
||||||
> ことが保証され、PMICへの全通信完了後に 0 になるというものです。
|
|
||||||
> LCD Off時は50msec待っている間もずっと 1 の方がうれしい気がします。
|
|
||||||
> 無理なら、「BL Setting Busy」フラグでも良いですが。
|
|
||||||
>
|
|
||||||
>2) 前、齋藤君がLCD Offの期間 100 msec 保証は SoCの起動に 100 msec かかる
|
|
||||||
> から心配ないようなことを書いていましたが、実際には、LCD Offシーケンス
|
|
||||||
> に 50 msec かかるので、LCD Offシーケンス開始からだと合計 150 msec 必
|
|
||||||
> 要です。SoCからMCUにLCD Off指示、直後にスリープ、直後にスリープ復帰、
|
|
||||||
> 直後にLCD Onとした場合に、十分なOff期間があるかちゃんと計算しておいて
|
|
||||||
> ください。>これも藤田君?
|
|
||||||
>
|
|
||||||
> よく考えたら、スリープに入らずに Off → On する場合も考えておかないと
|
|
||||||
> いけないので、MCUに「LCD On許可」フラグも用意してもらうべきかも。
|
|
||||||
>
|
|
||||||
> (NITROのスリープで苦労した時間計測もMCUがあれば楽々解決ですね!)
|
|
||||||
|
|
||||||
|
|
||||||
■・電源OFFシーケンス中にモデルゲージ(加速度センサ)への通信は止めてください。
|
|
||||||
>電源が遅く切り替わると内部回路の最低動作電圧で内部の制御回路が不安定になるの
|
|
||||||
>でバスをLOWに引っ張ることはないことを保証できないため
|
|
||||||
|
|
||||||
|
|
||||||
*****************************************************************************/
|
|
||||||
/*
|
/*
|
||||||
管理担当がついてない
|
管理担当がついてない
|
||||||
pm_irq
|
pm_irq
|
||||||
@ -45,7 +12,7 @@ todo:
|
|||||||
wl_tx
|
wl_tx
|
||||||
dbg
|
dbg
|
||||||
*/
|
*/
|
||||||
//*****************************************************************************
|
// ========================================================
|
||||||
#include "incs.h"
|
#include "incs.h"
|
||||||
|
|
||||||
#include "WDT.h"
|
#include "WDT.h"
|
||||||
@ -55,7 +22,7 @@ todo:
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
//*****************************************************************************
|
// ========================================================
|
||||||
err to_sleep();
|
err to_sleep();
|
||||||
|
|
||||||
static void read_dipsw();
|
static void read_dipsw();
|
||||||
@ -64,7 +31,7 @@ unsigned char temp_teg;
|
|||||||
extern void power_save();
|
extern void power_save();
|
||||||
|
|
||||||
|
|
||||||
//*****************************************************************************
|
// ========================================================
|
||||||
bit active;
|
bit active;
|
||||||
bit sleep;
|
bit sleep;
|
||||||
|
|
||||||
@ -79,9 +46,9 @@ system_status_ system_status;
|
|||||||
u8 off_delay; // 電源 OFF から PWSW 等で電源オンする際、押してる時間をカウントするのに使う
|
u8 off_delay; // 電源 OFF から PWSW 等で電源オンする際、押してる時間をカウントするのに使う
|
||||||
|
|
||||||
|
|
||||||
/******************************************************************************
|
/* ========================================================
|
||||||
本当のエントリ関数は loader.c にあります
|
本当のエントリ関数は loader.c にあります
|
||||||
*****************************************************************************/
|
======================================================== */
|
||||||
void main_loop( void ){
|
void main_loop( void ){
|
||||||
|
|
||||||
// 電池投入時の1回のみ
|
// 電池投入時の1回のみ
|
||||||
@ -120,7 +87,8 @@ void main_loop( void ){
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* ========================================================
|
||||||
|
======================================================== */
|
||||||
static void read_dipsw(){
|
static void read_dipsw(){
|
||||||
// ソフトディップスイッチ読み込み
|
// ソフトディップスイッチ読み込み
|
||||||
PU4 |= 0x03; // dip sw 0,1
|
PU4 |= 0x03; // dip sw 0,1
|
||||||
|
|||||||
71
trunk/pm.c
71
trunk/pm.c
@ -1,10 +1,9 @@
|
|||||||
/******************************************************************************
|
/* ========================================================
|
||||||
対PMIC_TWL2 I2C通信
|
対PMIC_TWL2 I2C通信
|
||||||
de JHL 藤田@開技
|
藤田@開技
|
||||||
nintendo
|
nintendo
|
||||||
'08 Dec
|
'08 Dec
|
||||||
|
======================================================== */
|
||||||
*******************************************************************************/
|
|
||||||
#pragma nop
|
#pragma nop
|
||||||
|
|
||||||
#include "incs_loader.h"
|
#include "incs_loader.h"
|
||||||
@ -13,11 +12,16 @@
|
|||||||
#include "pm.h"
|
#include "pm.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// ========================================================
|
||||||
#define BT_GAUGE_UNLOCK_ADRS 0x3E
|
#define BT_GAUGE_UNLOCK_ADRS 0x3E
|
||||||
#define BT_BT_PARAM_ADRS 0x40
|
#define BT_BT_PARAM_ADRS 0x40
|
||||||
#define BT_BT_PARAM_PANA_RCOMP_ADRS 0x0C
|
#define BT_BT_PARAM_PANA_RCOMP_ADRS 0x0C
|
||||||
// -1.45 ,-3.9}
|
// -1.45 ,-3.9}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// ========================================================
|
||||||
static const u8 BT_BT_PARAM_PANA[64] = {
|
static const u8 BT_BT_PARAM_PANA[64] = {
|
||||||
0xEA, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
|
0xEA, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
|
||||||
0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
|
0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
|
||||||
@ -31,17 +35,19 @@ static const u8 BT_BT_PARAM_PANA[64] = {
|
|||||||
static const u8 BT_BT_PARAM_PANA_RCOMP_AND_PARAM[3] = { 158, 1, 4 }; // RCOMP, TempCoUp, ---Down;
|
static const u8 BT_BT_PARAM_PANA_RCOMP_AND_PARAM[3] = { 158, 1, 4 }; // RCOMP, TempCoUp, ---Down;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// ========================================================
|
||||||
u16 raw_adc_temperature;
|
u16 raw_adc_temperature;
|
||||||
|
|
||||||
|
|
||||||
#define _TEG_
|
#define _TEG_
|
||||||
|
|
||||||
/*****************************************************************************
|
/* ========================================================
|
||||||
バッテリの認証を行います。
|
バッテリの認証を行います。
|
||||||
引数 無し
|
引数 無し
|
||||||
返値 (ERR)ERR_SUCCESS 成功
|
返値 (ERR)ERR_SUCCESS 成功
|
||||||
それ以外 失敗
|
それ以外 失敗
|
||||||
*****************************************************************************/
|
======================================================== */
|
||||||
err PM_bt_auth(){
|
err PM_bt_auth(){
|
||||||
/*
|
/*
|
||||||
todo
|
todo
|
||||||
@ -53,7 +59,7 @@ err PM_bt_auth(){
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************************
|
/* ========================================================
|
||||||
バッテリ固有のパラメータをセット
|
バッテリ固有のパラメータをセット
|
||||||
・64バイトのパラメータを直接ROM領域においておきたかったのだが、
|
・64バイトのパラメータを直接ROM領域においておきたかったのだが、
|
||||||
なんと、DMAがROMRAM領域からしか持ってこられないので
|
なんと、DMAがROMRAM領域からしか持ってこられないので
|
||||||
@ -61,7 +67,7 @@ err PM_bt_auth(){
|
|||||||
・スタックが不安なので、ベンダの数だけ関数を作る
|
・スタックが不安なので、ベンダの数だけ関数を作る
|
||||||
引数 無し
|
引数 無し
|
||||||
返値 無し
|
返値 無し
|
||||||
*****************************************************************************/
|
======================================================== */
|
||||||
static void BT_set_batt_vend1(){
|
static void BT_set_batt_vend1(){
|
||||||
|
|
||||||
iic_mcu_write( IIC_SLA_BT_GAUGE,
|
iic_mcu_write( IIC_SLA_BT_GAUGE,
|
||||||
@ -138,17 +144,19 @@ STOP
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************************
|
|
||||||
|
/* ========================================================
|
||||||
PMICにリセットコマンドを送る
|
PMICにリセットコマンドを送る
|
||||||
電池接続時に一回だけ
|
電池接続時に一回だけ
|
||||||
*****************************************************************************/
|
======================================================== */
|
||||||
err PM_reset(){
|
err PM_reset(){
|
||||||
iic_mcu_start();
|
iic_mcu_start();
|
||||||
return( iic_mcu_write_a_byte( IIC_SLA_PMIC, PM_REG_ADRS_CONT, 0x00 ) );
|
return( iic_mcu_write_a_byte( IIC_SLA_PMIC, PM_REG_ADRS_CONT, 0x00 ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************************
|
|
||||||
|
/* ========================================================
|
||||||
PMIC達の初期化
|
PMIC達の初期化
|
||||||
電池メーカー識別
|
電池メーカー識別
|
||||||
電池残量ICのセット
|
電池残量ICのセット
|
||||||
@ -156,8 +164,7 @@ err PM_reset(){
|
|||||||
|
|
||||||
以下のピンは主にここで操作・監視されます。
|
以下のピンは主にここで操作・監視されます。
|
||||||
・PM_BT_DET,_P
|
・PM_BT_DET,_P
|
||||||
|
======================================================== */
|
||||||
*****************************************************************************/
|
|
||||||
void PM_init(){
|
void PM_init(){
|
||||||
u8 temp;
|
u8 temp;
|
||||||
u8 result;
|
u8 result;
|
||||||
@ -216,11 +223,11 @@ void PM_init(){
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************************
|
/* ========================================================
|
||||||
raw_adc_temperatureに入っている値を℃に変換するとともに、
|
raw_adc_temperatureに入っている値を℃に変換するとともに、
|
||||||
・レジスタにセット
|
・レジスタにセット
|
||||||
・残量ICにセット
|
・残量ICにセット
|
||||||
*****************************************************************************/
|
======================================================== */
|
||||||
err PM_bt_temp_update(){
|
err PM_bt_temp_update(){
|
||||||
static u8 temp_threash_hi, temp_threash_lo;
|
static u8 temp_threash_hi, temp_threash_lo;
|
||||||
u8 temp[2];
|
u8 temp[2];
|
||||||
@ -251,9 +258,9 @@ End If
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************************
|
/* ========================================================
|
||||||
バックライト周り
|
バックライト周り
|
||||||
*****************************************************************************/
|
======================================================== */
|
||||||
#ifdef _PMIC_TWL_
|
#ifdef _PMIC_TWL_
|
||||||
err PM_LCD_on(){
|
err PM_LCD_on(){
|
||||||
PM_TEG_LCD_OFF = 0;
|
PM_TEG_LCD_OFF = 0;
|
||||||
@ -305,7 +312,7 @@ err PM_LCD_off(){
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************************
|
/* ========================================================
|
||||||
シーケンスの通り電源を立ち上げてゆきます。
|
シーケンスの通り電源を立ち上げてゆきます。
|
||||||
返値 0 最後まで正常に完了した。
|
返値 0 最後まで正常に完了した。
|
||||||
1 ショートなどで電源があがりきらなかった
|
1 ショートなどで電源があがりきらなかった
|
||||||
@ -313,11 +320,7 @@ err PM_LCD_off(){
|
|||||||
|
|
||||||
以下のピンは主にここで操作・監視されます。
|
以下のピンは主にここで操作・監視されます。
|
||||||
・POW_CONT1,2 TEG電源のみ
|
・POW_CONT1,2 TEG電源のみ
|
||||||
|
======================================================== */
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
*****************************************************************************/
|
|
||||||
err PM_sys_pow_on(){
|
err PM_sys_pow_on(){
|
||||||
#ifndef _PMIC_TWL_
|
#ifndef _PMIC_TWL_
|
||||||
u8 temp;
|
u8 temp;
|
||||||
@ -390,9 +393,9 @@ err PM_sys_pow_on(){
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************************
|
/* ========================================================
|
||||||
電源OFFシーケンス
|
電源OFFシーケンス
|
||||||
*****************************************************************************/
|
======================================================== */
|
||||||
err PM_sys_pow_off(){
|
err PM_sys_pow_off(){
|
||||||
#ifdef _PMIC_CTR_
|
#ifdef _PMIC_CTR_
|
||||||
RSTB ネゲート
|
RSTB ネゲート
|
||||||
@ -425,9 +428,9 @@ err PM_sys_pow_off(){
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************************
|
/* ========================================================
|
||||||
スリープシーケンス
|
スリープシーケンス
|
||||||
*****************************************************************************/
|
======================================================== */
|
||||||
err to_sleep(){
|
err to_sleep(){
|
||||||
PM_LCD_off();
|
PM_LCD_off();
|
||||||
return 0;
|
return 0;
|
||||||
@ -435,7 +438,7 @@ err to_sleep(){
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************************
|
/* ========================================================
|
||||||
電池の管理
|
電池の管理
|
||||||
|
|
||||||
以下のピンは主にここで操作・監視されます。
|
以下のピンは主にここで操作・監視されます。
|
||||||
@ -450,9 +453,7 @@ err to_sleep(){
|
|||||||
・BT_TEMP,_P tsk_ADC
|
・BT_TEMP,_P tsk_ADC
|
||||||
|
|
||||||
PM_EXTDCは割り込みメインにするかも
|
PM_EXTDCは割り込みメインにするかも
|
||||||
|
======================================================== */
|
||||||
|
|
||||||
*****************************************************************************/
|
|
||||||
task_interval tsk_batt(){
|
task_interval tsk_batt(){
|
||||||
static u8 bt_stat = 0;
|
static u8 bt_stat = 0;
|
||||||
static u8 charge_hys = 0; // ヒステリシスで上限下限を拡張するとき1
|
static u8 charge_hys = 0; // ヒステリシスで上限下限を拡張するとき1
|
||||||
@ -523,9 +524,9 @@ __interrupt void intp6_PM_irq(){
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************************
|
/* ========================================================
|
||||||
PMICからの割り込みを受けて、NTRPMIC互換レジスタからリード
|
PMICからの割り込みを受けて、NTRPMIC互換レジスタからリード
|
||||||
*****************************************************************************/
|
======================================================== */
|
||||||
task_status_immed ntr_pmic_comm(){
|
task_status_immed ntr_pmic_comm(){
|
||||||
#ifdef _CODEC_CTR_
|
#ifdef _CODEC_CTR_
|
||||||
static u8 reg_shadow;
|
static u8 reg_shadow;
|
||||||
|
|||||||
24
trunk/pm.h
24
trunk/pm.h
@ -6,9 +6,9 @@
|
|||||||
#define IIC_SLA_BT_GAUGE 0x6C
|
#define IIC_SLA_BT_GAUGE 0x6C
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
//=========================================================
|
||||||
enum BT_GAUGE_REG_ADRS{
|
enum BT_GAUGE_REG_ADRS{
|
||||||
BT_GAUGE_REG_VCELL = 0x02, // それぞれ16ビットです
|
BT_GAUGE_REG_VCELL = 0x02, // それぞれ16ビットのため
|
||||||
BT_GAUGE_REG_SOC = 0x04,
|
BT_GAUGE_REG_SOC = 0x04,
|
||||||
BT_GAUGE_REG_MODE = 0x06,
|
BT_GAUGE_REG_MODE = 0x06,
|
||||||
BT_GAUGE_REG_VERSION = 0x08,
|
BT_GAUGE_REG_VERSION = 0x08,
|
||||||
@ -18,9 +18,9 @@ enum BT_GAUGE_REG_ADRS{
|
|||||||
|
|
||||||
enum PMIC_REG_ADRS{
|
enum PMIC_REG_ADRS{
|
||||||
PM_REG_ADRS_VER = 0x00, // verinfo など
|
PM_REG_ADRS_VER = 0x00, // verinfo など
|
||||||
PM_REG_ADRS_VDD_SYS, // システムが使用する電源
|
PM_REG_ADRS_VDD_SYS, // システムが使用する電源
|
||||||
PM_REG_ADRS_VDD_LCD, // 液晶電源
|
PM_REG_ADRS_VDD_LCD, // 液晶電源
|
||||||
PM_REG_ADRS_CONT, // /RESET1, LoadSwitch
|
PM_REG_ADRS_CONT, // /RESET1, LoadSwitch
|
||||||
PM_REG_ADRS_BL, // バックライト on/off
|
PM_REG_ADRS_BL, // バックライト on/off
|
||||||
PM_REG_ADRS_POW_SAVE, // 省電力設定
|
PM_REG_ADRS_POW_SAVE, // 省電力設定
|
||||||
PM_REG_ADRS_POW_DAC1,
|
PM_REG_ADRS_POW_DAC1,
|
||||||
@ -30,12 +30,9 @@ enum PMIC_REG_ADRS{
|
|||||||
// CODEC上のPMIC互換レジスタ
|
// CODEC上のPMIC互換レジスタ
|
||||||
#define CODEC_REG_PMCOMP 0x10
|
#define CODEC_REG_PMCOMP 0x10
|
||||||
|
|
||||||
/*****************************************************************************/
|
|
||||||
extern u16 raw_adc_temperature;
|
|
||||||
|
|
||||||
|
|
||||||
|
//=========================================================
|
||||||
/*****************************************************************************/
|
|
||||||
#define PM_REG_BIT_LDSW ( 1 << 0 )
|
#define PM_REG_BIT_LDSW ( 1 << 0 )
|
||||||
#define PM_REG_BIT_nRST1 ( 1 << 1 )
|
#define PM_REG_BIT_nRST1 ( 1 << 1 )
|
||||||
#define PM_REG_BIT_VDD 0x0F
|
#define PM_REG_BIT_VDD 0x0F
|
||||||
@ -50,7 +47,12 @@ extern u16 raw_adc_temperature;
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
//=========================================================
|
||||||
|
extern u16 raw_adc_temperature;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//=========================================================
|
||||||
err PM_sys_pow_on();
|
err PM_sys_pow_on();
|
||||||
err PM_sys_pow_off();
|
err PM_sys_pow_off();
|
||||||
err PM_LCD_on();
|
err PM_LCD_on();
|
||||||
@ -66,7 +68,7 @@ err PM_reset();
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
//=========================================================
|
||||||
|
|
||||||
|
|
||||||
// 元栓 //
|
// 元栓 //
|
||||||
|
|||||||
31
trunk/rtc.c
31
trunk/rtc.c
@ -1,24 +1,24 @@
|
|||||||
/******************************************************************************
|
/* ========================================================
|
||||||
RTC
|
RTC
|
||||||
*******************************************************************************/
|
======================================================== */
|
||||||
#pragma sfr
|
#pragma sfr
|
||||||
#pragma inline
|
#pragma inline
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*------------------------------------*/
|
|
||||||
#include "incs.h"
|
#include "incs.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// ========================================================
|
||||||
u8 rtc_work[7];
|
u8 rtc_work[7];
|
||||||
bit rtc_lock;
|
bit rtc_lock;
|
||||||
bit rtc_dirty;
|
bit rtc_dirty;
|
||||||
|
|
||||||
|
|
||||||
/******************************************************************************
|
/* ========================================================
|
||||||
ペリフェラルの初期化
|
ペリフェラルの初期化
|
||||||
レジスタの電池交換ビットのセット
|
レジスタの電池交換ビットのセット
|
||||||
*******************************************************************************/
|
======================================================== */
|
||||||
void RTC_init(void){
|
void RTC_init(void){
|
||||||
RTCEN = 1; // モジュールON
|
RTCEN = 1; // モジュールON
|
||||||
|
|
||||||
@ -45,20 +45,20 @@ void RTC_init(void){
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
/******************************************************************************
|
/* ========================================================
|
||||||
RTC インターバルタイマ割り込みベクタ
|
RTC インターバルタイマ割り込みベクタ
|
||||||
2^6/fXT(1.953125 ms)
|
2^6/fXT(1.953125 ms)
|
||||||
*******************************************************************************/
|
======================================================== */
|
||||||
__interrupt void int_rtc_int(){
|
__interrupt void int_rtc_int(){
|
||||||
renge_flg_interval = 1;
|
renge_flg_interval = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/******************************************************************************
|
/* ========================================================
|
||||||
RTC のリード
|
RTC のリード
|
||||||
レジスタは、sec,min,hour,week,day,month,year の順
|
レジスタは、sec,min,hour,week,day,month,year の順
|
||||||
*******************************************************************************/
|
======================================================== */
|
||||||
void get_rtc(){
|
void get_rtc(){
|
||||||
if( rtc_lock == 0 ){
|
if( rtc_lock == 0 ){
|
||||||
rtc_lock = 1;
|
rtc_lock = 1;
|
||||||
@ -72,12 +72,12 @@ void get_rtc(){
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
/******************************************************************************
|
/* ========================================================
|
||||||
RTC のライト
|
RTC のライト
|
||||||
set_rtc_close と対で使って下さい。
|
set_rtc_close と対で使って下さい。
|
||||||
こいつはバッファにコピーするだけで、
|
こいつはバッファにコピーするだけで、
|
||||||
実際にRTCにセットするのはset_rtc_close()です。
|
実際にRTCにセットするのはset_rtc_close()です。
|
||||||
*******************************************************************************/
|
======================================================== */
|
||||||
void set_rtc( u8 adrs, u8 data ){
|
void set_rtc( u8 adrs, u8 data ){
|
||||||
if( rtc_dirty == 0 ){
|
if( rtc_dirty == 0 ){
|
||||||
rtc_dirty = 1;
|
rtc_dirty = 1;
|
||||||
@ -88,12 +88,9 @@ void set_rtc( u8 adrs, u8 data ){
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* ========================================================
|
||||||
|
|
||||||
|
|
||||||
/**************************************
|
|
||||||
必要ならば、RTCレジスタの更新
|
必要ならば、RTCレジスタの更新
|
||||||
**************************************/
|
======================================================== */
|
||||||
void rtc_close_iic(){
|
void rtc_close_iic(){
|
||||||
rtc_lock = 0;
|
rtc_lock = 0;
|
||||||
if( rtc_dirty ){
|
if( rtc_dirty ){
|
||||||
|
|||||||
@ -2,7 +2,6 @@
|
|||||||
#define __rtc_h__
|
#define __rtc_h__
|
||||||
|
|
||||||
|
|
||||||
/*-------------------------------*/
|
|
||||||
void RTC_init(void);
|
void RTC_init(void);
|
||||||
__interrupt void int_rtc_int();
|
__interrupt void int_rtc_int();
|
||||||
void get_rtc();
|
void get_rtc();
|
||||||
@ -10,11 +9,8 @@ void set_rtc();
|
|||||||
|
|
||||||
void rtc_close_iic();
|
void rtc_close_iic();
|
||||||
|
|
||||||
|
|
||||||
/*-------------------------------*/
|
|
||||||
#define RTC_32k_on() { RCLOE0 = 1; }
|
#define RTC_32k_on() { RCLOE0 = 1; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*-------------------------------*/
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@ -1,9 +1,6 @@
|
|||||||
/*****************************************************************************
|
/* ========================================================
|
||||||
自己アプデータ
|
自己アップデータ
|
||||||
|
======================================================== */
|
||||||
|
|
||||||
|
|
||||||
*****************************************************************************/
|
|
||||||
#pragma SFR
|
#pragma SFR
|
||||||
#pragma di
|
#pragma di
|
||||||
#pragma ei
|
#pragma ei
|
||||||
@ -18,6 +15,9 @@
|
|||||||
#include "fsl_user.h"
|
#include "fsl_user.h"
|
||||||
#include "i2c_ctr.h"
|
#include "i2c_ctr.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// ========================================================
|
||||||
const u8 fsl_fx_MHz_u08 = 4;
|
const u8 fsl_fx_MHz_u08 = 4;
|
||||||
const u8 fsl_low_voltage_u08 = 0;
|
const u8 fsl_low_voltage_u08 = 0;
|
||||||
|
|
||||||
@ -64,7 +64,8 @@ const u8 fsl_low_voltage_u08 = 0;
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
//*****************************************************************************
|
|
||||||
|
// ========================================================
|
||||||
static void FSL_Open(void);
|
static void FSL_Open(void);
|
||||||
static void FSL_Close(void);
|
static void FSL_Close(void);
|
||||||
err firm_restore();
|
err firm_restore();
|
||||||
@ -75,8 +76,8 @@ err firm_restore();
|
|||||||
#define N_MGC_T 0x6FF6
|
#define N_MGC_T 0x6FF6
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************************
|
/* ========================================================
|
||||||
*****************************************************************************/
|
======================================================== */
|
||||||
err firm_update(){
|
err firm_update(){
|
||||||
u8 flg_rcv_end;
|
u8 flg_rcv_end;
|
||||||
u8 buffer_fill;
|
u8 buffer_fill;
|
||||||
@ -226,11 +227,11 @@ firm_update_end:
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* ***************************************************************************
|
/* ========================================================
|
||||||
■ファームをバックアップ領域からリストアします。
|
■ファームをバックアップ領域からリストアします。
|
||||||
0x4800 - 0x7FFF (ブロック 18 - 27)を 0x2000 - 0x47FF (同、8 - 17) にコピーして
|
0x4800 - 0x7FFF (ブロック 18 - 27)を 0x2000 - 0x47FF (同、8 - 17) にコピーして
|
||||||
ブートスワップ、リブートを行います。
|
ブートスワップ、リブートを行います。
|
||||||
************************************************************************** */
|
======================================================== */
|
||||||
err firm_restore(){
|
err firm_restore(){
|
||||||
u8 flg_rcv_end = 0;
|
u8 flg_rcv_end = 0;
|
||||||
u8 buffer_fill;
|
u8 buffer_fill;
|
||||||
@ -305,7 +306,7 @@ err firm_restore(){
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
//****************************************************************************
|
// ========================================================
|
||||||
static void FSL_Open(void)
|
static void FSL_Open(void)
|
||||||
{
|
{
|
||||||
/* save the configuration of the interrupt controller and set */
|
/* save the configuration of the interrupt controller and set */
|
||||||
@ -327,7 +328,7 @@ static void FSL_Open(void)
|
|||||||
// 何か前準備?
|
// 何か前準備?
|
||||||
// todo DMAを止める
|
// todo DMAを止める
|
||||||
|
|
||||||
FSL_FLMD0_HIGH; // フラッシュ書き替え許可
|
FSL_FLMD0_HIGH; // フラッシュ書き替え許可
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -6,22 +6,22 @@
|
|||||||
#include "incs.h"
|
#include "incs.h"
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************************
|
/* ========================================================
|
||||||
WiFi 関係
|
WiFi 関係
|
||||||
・WL_TX,RX
|
・WL_TX,RX
|
||||||
・LED_wifi
|
・LED_wifi
|
||||||
・32kHz
|
・32kHz
|
||||||
*****************************************************************************/
|
======================================================== */
|
||||||
task_interval tsk_wifi(){
|
task_interval tsk_wifi(){
|
||||||
return 10;
|
return 10;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************************
|
/* ========================================================
|
||||||
ステータスレジスタ関係
|
ステータスレジスタ関係
|
||||||
他のところでケアされていない部分
|
他のところでケアされていない部分
|
||||||
*****************************************************************************/
|
======================================================== */
|
||||||
task_interval tsk_misc_stat(){
|
task_interval tsk_misc_stat(){
|
||||||
static u8 state_old; // ステータス変化検出→割り込み の為
|
static u8 state_old; // ステータス変化検出→割り込み の為
|
||||||
|
|
||||||
@ -63,8 +63,8 @@ task_interval tsk_misc_stat(){
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************************
|
/* ========================================================
|
||||||
*****************************************************************************/
|
======================================================== */
|
||||||
task_interval tsk_debug(){
|
task_interval tsk_debug(){
|
||||||
u8 temp;
|
u8 temp;
|
||||||
static u8 count = 0;
|
static u8 count = 0;
|
||||||
@ -102,9 +102,9 @@ return 255;
|
|||||||
|
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
/*****************************************************************************
|
/* ========================================================
|
||||||
タスクひな形
|
タスクひな形
|
||||||
*****************************************************************************/
|
======================================================== */
|
||||||
task_interval tsk_hina(){
|
task_interval tsk_hina(){
|
||||||
switch( system_status.pwr_state ){
|
switch( system_status.pwr_state ){
|
||||||
case OFF:
|
case OFF:
|
||||||
@ -137,10 +137,10 @@ task_status_immed tsk_imm_hina( u8* arg ){
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**************************************
|
/* ========================================================
|
||||||
加速度センサ割り込みピンがオリジナルマイコンには無いので
|
加速度センサ割り込みピンがオリジナルマイコンには無いので
|
||||||
ポーリングする
|
ポーリングする
|
||||||
*************************************/
|
======================================================== */
|
||||||
task_interval tsk_soft_int(){
|
task_interval tsk_soft_int(){
|
||||||
#ifdef _MCU_KE3_
|
#ifdef _MCU_KE3_
|
||||||
static u8 pin;
|
static u8 pin;
|
||||||
@ -164,13 +164,13 @@ task_interval tsk_soft_int(){
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************************
|
/* ========================================================
|
||||||
逐一起動タスク
|
逐一起動タスク
|
||||||
*****************************************************************************/
|
======================================================== */
|
||||||
|
|
||||||
/*****************************************************************************
|
/* ========================================================
|
||||||
COMMANDレジスタへの書き込み
|
COMMANDレジスタへの書き込み
|
||||||
*****************************************************************************/
|
======================================================== */
|
||||||
task_status_immed do_command0(){
|
task_status_immed do_command0(){
|
||||||
|
|
||||||
if( vreg_ctr[ VREG_C_COMMAND0 ] & REG_BIT_OFF_REQ ){
|
if( vreg_ctr[ VREG_C_COMMAND0 ] & REG_BIT_OFF_REQ ){
|
||||||
@ -197,9 +197,9 @@ task_status_immed do_command0(){
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************************
|
/* ========================================================
|
||||||
TEG2では無し。後で実装
|
TEG2では無し。後で実装
|
||||||
*****************************************************************************/
|
======================================================== */
|
||||||
task_status_immed do_command1(){
|
task_status_immed do_command1(){
|
||||||
static u8 state = 0;
|
static u8 state = 0;
|
||||||
return( ERR_FINISED );
|
return( ERR_FINISED );
|
||||||
@ -207,13 +207,11 @@ task_status_immed do_command1(){
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************************
|
/* ========================================================
|
||||||
CPUからのスリープ要求
|
CPUからのスリープ要求
|
||||||
*****************************************************************************/
|
======================================================== */
|
||||||
__interrupt void intp0_slp(){ // SLP
|
__interrupt void intp0_slp(){ // SLP
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -16,12 +16,12 @@ u8 SW_pow_count, SW_home_count, SW_3d_count, SW_wifi_count;
|
|||||||
bit SW_pow_mask, SW_home_mask, SW_3d_mask, SW_wifi_mask;
|
bit SW_pow_mask, SW_home_mask, SW_3d_mask, SW_wifi_mask;
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************************
|
/* ========================================================
|
||||||
マイコン内部で必要なもの
|
マイコン内部で必要なもの
|
||||||
・省電力に入れる
|
・省電力に入れる
|
||||||
system_status.pwr_state == OFF_TRIG で、このタスクが呼ばれると、
|
system_status.pwr_state == OFF_TRIG で、このタスクが呼ばれると、
|
||||||
省電力モードに入ります
|
省電力モードに入ります
|
||||||
*****************************************************************************/
|
======================================================== */
|
||||||
task_interval tsk_sys(){
|
task_interval tsk_sys(){
|
||||||
static u8 timeout = 0;
|
static u8 timeout = 0;
|
||||||
|
|
||||||
@ -219,11 +219,11 @@ task_interval tsk_sys(){
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************************
|
/* ========================================================
|
||||||
スイッチの監視
|
スイッチの監視
|
||||||
チャタリングをはねたり、長押しや、押したトリガなどの検出など
|
チャタリングをはねたり、長押しや、押したトリガなどの検出など
|
||||||
todo 必要に応じてマスク
|
todo 必要に応じてマスク
|
||||||
*****************************************************************************/
|
======================================================== */
|
||||||
// 押した時間を数える。押しっぱなしでも0に戻らない
|
// 押した時間を数える。押しっぱなしでも0に戻らない
|
||||||
// maskが非0の時は、一度離すまで無視する
|
// maskが非0の時は、一度離すまで無視する
|
||||||
#define count_sw_n( sw, counter, mask ) \
|
#define count_sw_n( sw, counter, mask ) \
|
||||||
|
|||||||
@ -1,9 +1,8 @@
|
|||||||
/* ============================================================================
|
/* ========================================================
|
||||||
|
|
||||||
CTR MCU I2Cレジスタ
|
CTR MCU I2Cレジスタ
|
||||||
|
|
||||||
=========================================================================== */
|
====================================================== */
|
||||||
|
|
||||||
#include "incs_loader.h"
|
#include "incs_loader.h"
|
||||||
#include "vreg_ctr.h"
|
#include "vreg_ctr.h"
|
||||||
#include "rtc.h"
|
#include "rtc.h"
|
||||||
@ -11,16 +10,18 @@ CTR MCU I2C
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// ********************************************************
|
||||||
u8 vreg_ctr[ VREG_C_ENDMARK_ ];
|
u8 vreg_ctr[ VREG_C_ENDMARK_ ];
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// ********************************************************
|
||||||
#define IRQ0_ngt { PM3.0 = 1; }
|
#define IRQ0_ngt { PM3.0 = 1; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//*******************************************************************************
|
// ********************************************************
|
||||||
// 非ゼロの固定値の指定が必要なアドレス
|
// 非ゼロの初期値の指定が必要なアドレス
|
||||||
void vreg_ctr_init(){
|
void vreg_ctr_init(){
|
||||||
vreg_ctr[ VREG_C_LED_BRIGHT ] = 0xFF;
|
vreg_ctr[ VREG_C_LED_BRIGHT ] = 0xFF;
|
||||||
vreg_ctr[ VREG_C_MCU_VER_MAJOR ] = MCU_VER_MAJOR;
|
vreg_ctr[ VREG_C_MCU_VER_MAJOR ] = MCU_VER_MAJOR;
|
||||||
@ -30,12 +31,11 @@ void vreg_ctr_init(){
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
//*******************************************************************************
|
// ********************************************************
|
||||||
// I2C仮想レジスタに書きます。
|
// I2C仮想レジスタに書きます。
|
||||||
// 引数 adrs は内部アドレス
|
// 引数 adrs は内部アドレス
|
||||||
// 存在しないアドレスにアクセスした場合、何もしません。
|
// 存在しないアドレスにアクセスした場合、何もしません。
|
||||||
void vreg_ctr_write( u8 adrs, u8 data ){
|
void vreg_ctr_write( u8 adrs, u8 data ){
|
||||||
|
|
||||||
switch( adrs ){
|
switch( adrs ){
|
||||||
case( VREG_C_COMMAND0 ):
|
case( VREG_C_COMMAND0 ):
|
||||||
vreg_ctr[ adrs ] = data;
|
vreg_ctr[ adrs ] = data;
|
||||||
@ -146,7 +146,7 @@ void vreg_ctr_write( u8 adrs, u8 data ){
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
//*******************************************************************************
|
// ********************************************************
|
||||||
// I2C仮想レジスタから読みます。
|
// I2C仮想レジスタから読みます。
|
||||||
// 引数 adrs 外から見たときの、アドレス
|
// 引数 adrs 外から見たときの、アドレス
|
||||||
// 戻り xx データ
|
// 戻り xx データ
|
||||||
@ -160,9 +160,9 @@ u8 vreg_ctr_read( u8 adrs ){
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//*******************************************************************************
|
|
||||||
|
// ********************************************************
|
||||||
// I2C仮想レジスタから読まれて何かするレジスタ
|
// I2C仮想レジスタから読まれて何かするレジスタ
|
||||||
//*******************************************************************************
|
|
||||||
void vreg_ctr_after_read( u8 adrs ){
|
void vreg_ctr_after_read( u8 adrs ){
|
||||||
|
|
||||||
// リードがトリガで何かをする↓
|
// リードがトリガで何かをする↓
|
||||||
@ -182,7 +182,7 @@ void vreg_ctr_after_read( u8 adrs ){
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*-------------------------------------*/
|
// ********************************************************
|
||||||
// I2Cでロックされた物の解除
|
// I2Cでロックされた物の解除
|
||||||
void vreg_c_iic_release(){
|
void vreg_c_iic_release(){
|
||||||
// クリティカルセクションとして扱わないといけないかもしれない
|
// クリティカルセクションとして扱わないといけないかもしれない
|
||||||
|
|||||||
@ -130,9 +130,8 @@ enum VREG_C{ //
|
|||||||
VREG_C_ACC_CONFIG_HOSU,
|
VREG_C_ACC_CONFIG_HOSU,
|
||||||
VREG_C_ACC_CONFIG,
|
VREG_C_ACC_CONFIG,
|
||||||
VREG_C_ACC_R_ADRS,
|
VREG_C_ACC_R_ADRS,
|
||||||
VREG_C_ACC_R_BUF,
|
|
||||||
VREG_C_ACC_W_ADRS,
|
VREG_C_ACC_W_ADRS,
|
||||||
VREG_C_ACC_W_BUF,
|
VREG_C_ACC_BUF,
|
||||||
|
|
||||||
VREG_C_ACC_HOSU_L,
|
VREG_C_ACC_HOSU_L,
|
||||||
VREG_C_ACC_HOSU_M,
|
VREG_C_ACC_HOSU_M,
|
||||||
@ -146,6 +145,7 @@ enum VREG_C{ //
|
|||||||
VREG_C_ACC_ZL,
|
VREG_C_ACC_ZL,
|
||||||
|
|
||||||
VREG_C_DIAG,
|
VREG_C_DIAG,
|
||||||
|
|
||||||
VREG_C_FREE0,
|
VREG_C_FREE0,
|
||||||
VREG_C_FREE1,
|
VREG_C_FREE1,
|
||||||
VREG_C_FREE2,
|
VREG_C_FREE2,
|
||||||
|
|||||||
@ -1,8 +1,8 @@
|
|||||||
/* ============================================================================
|
/* ========================================================
|
||||||
|
|
||||||
TWL互換側のI2Cレジスタ
|
TWL互換側のI2Cレジスタ
|
||||||
|
|
||||||
=========================================================================== */
|
======================================================== */
|
||||||
|
|
||||||
#include "incs.h"
|
#include "incs.h"
|
||||||
#include "jhl_defs.h"
|
#include "jhl_defs.h"
|
||||||
@ -12,9 +12,9 @@ TWL
|
|||||||
u8 vreg_twl[ REG_TWL_INT_ADRS_TIME_PWSW_THRESHOLD +1 ];
|
u8 vreg_twl[ REG_TWL_INT_ADRS_TIME_PWSW_THRESHOLD +1 ];
|
||||||
|
|
||||||
|
|
||||||
/* ============================================================================
|
/* ========================================================
|
||||||
仮想レジスタの初期化
|
仮想レジスタの初期化
|
||||||
=========================================================================== */
|
======================================================== */
|
||||||
void vreg_twl_init(){
|
void vreg_twl_init(){
|
||||||
vreg_twl[ REG_TWL_INT_ADRS_VER_INFO ] = 0x35;
|
vreg_twl[ REG_TWL_INT_ADRS_VER_INFO ] = 0x35;
|
||||||
vreg_twl[ REG_TWL_INT_ADRS_POWER_SAVE ] = 0x07;
|
vreg_twl[ REG_TWL_INT_ADRS_POWER_SAVE ] = 0x07;
|
||||||
@ -25,7 +25,7 @@ void vreg_twl_init(){
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//*******************************************************************************
|
// ========================================================
|
||||||
// I2C仮想レジスタに書きます。
|
// I2C仮想レジスタに書きます。
|
||||||
// 引数 adrs は内部アドレス
|
// 引数 adrs は内部アドレス
|
||||||
// 存在しないアドレスにアクセスした場合、何もしません。
|
// 存在しないアドレスにアクセスした場合、何もしません。
|
||||||
@ -50,7 +50,7 @@ void vreg_twl_write( u8 adrs, u8 data ){
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
//*******************************************************************************
|
// ========================================================
|
||||||
// I2C仮想レジスタから読みます。
|
// I2C仮想レジスタから読みます。
|
||||||
// 引数 adrs 外から見たときの、アドレス
|
// 引数 adrs 外から見たときの、アドレス
|
||||||
// 戻り xx データ
|
// 戻り xx データ
|
||||||
@ -66,7 +66,7 @@ u8 vreg_twl_read( u8 phy_adrs ){
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
//*******************************************************************************
|
// ========================================================
|
||||||
// 外部から見える虫食いアドレスを、内部の連続アドレスに読み替える
|
// 外部から見える虫食いアドレスを、内部の連続アドレスに読み替える
|
||||||
// 0xFFは存在しないアドレス。
|
// 0xFFは存在しないアドレス。
|
||||||
u8 adrs_table_twl_ext2int( u8 img ){
|
u8 adrs_table_twl_ext2int( u8 img ){
|
||||||
|
|||||||
@ -2,8 +2,8 @@
|
|||||||
#define __vreg_twl__
|
#define __vreg_twl__
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 外から見たときの、マイコンレジスタアドレス。
|
* 外から見たときのマイコンレジスタアドレス。
|
||||||
* 拡張性などを考えて、飛び飛び
|
* 拡張性などを考えて飛び飛びにしてある。
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
* 割り込み要因フラグは
|
* 割り込み要因フラグは
|
||||||
@ -16,7 +16,7 @@
|
|||||||
* 1:電源スイッチ OFF 時間押され検出
|
* 1:電源スイッチ OFF 時間押され検出
|
||||||
* LSB: リセット
|
* LSB: リセット
|
||||||
*/
|
*/
|
||||||
enum REG_TWL_ADRS{ // 未定義アドレスへ書き込んだ際の動作は不定
|
enum REG_TWL_ADRS{ // 未定義アドレスへ書き込んだ際は無視
|
||||||
REG_TWL_ADRS_VER_INFO = 0x00,
|
REG_TWL_ADRS_VER_INFO = 0x00,
|
||||||
REG_TWL_ADRS_PMIC_INFO,
|
REG_TWL_ADRS_PMIC_INFO,
|
||||||
REG_TWL_ADRS_BATT_INFO,
|
REG_TWL_ADRS_BATT_INFO,
|
||||||
@ -34,7 +34,7 @@ enum REG_TWL_ADRS{ //
|
|||||||
REG_TWL_ADRS_ADC_CALIB_STATUS,
|
REG_TWL_ADRS_ADC_CALIB_STATUS,
|
||||||
REG_TWL_ADRS_ADC_CALIB_VALUE,
|
REG_TWL_ADRS_ADC_CALIB_VALUE,
|
||||||
REG_TWL_ADRS_POWER_LED,
|
REG_TWL_ADRS_POWER_LED,
|
||||||
REG_TWL_ADRS_TEMP0 = 0x70, // ~0x77 まで。
|
REG_TWL_ADRS_TEMP0 = 0x70,
|
||||||
REG_TWL_ADRS_TEMP1,
|
REG_TWL_ADRS_TEMP1,
|
||||||
REG_TWL_ADRS_TEMP2,
|
REG_TWL_ADRS_TEMP2,
|
||||||
REG_TWL_ADRS_TEMP3,
|
REG_TWL_ADRS_TEMP3,
|
||||||
@ -49,7 +49,7 @@ enum REG_TWL_ADRS{ //
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* マイコン内部でのレジスタの実装
|
* マイコン内部でのレジスタの実装
|
||||||
* もちろん効率を考えて、つめてある
|
* もちろんつめてある
|
||||||
*/
|
*/
|
||||||
enum REG_TWL_ADRS_INT{
|
enum REG_TWL_ADRS_INT{
|
||||||
REG_TWL_INT_ADRS_VER_INFO = 0x00,
|
REG_TWL_INT_ADRS_VER_INFO = 0x00,
|
||||||
@ -81,8 +81,14 @@ enum REG_TWL_ADRS_INT{
|
|||||||
REG_TWL_INT_ADRS_TIME_PWSW_THRESHOLD
|
REG_TWL_INT_ADRS_TIME_PWSW_THRESHOLD
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* ========================================================================= */
|
||||||
extern u8 vreg_twl[ REG_TWL_INT_ADRS_TIME_PWSW_THRESHOLD +1 ];
|
extern u8 vreg_twl[ REG_TWL_INT_ADRS_TIME_PWSW_THRESHOLD +1 ];
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* ========================================================================= */
|
||||||
#define is_TWL ( vregs[ REG_TWL_INT_ADRS_MODE ] & 0x01 )
|
#define is_TWL ( vregs[ REG_TWL_INT_ADRS_MODE ] & 0x01 )
|
||||||
#define with_NAND ( vregs[ REG_TWL_INT_ADRS_MODE ] & 0x02 )
|
#define with_NAND ( vregs[ REG_TWL_INT_ADRS_MODE ] & 0x02 )
|
||||||
#define volSteps32 ( vregs[ REG_TWL_INT_ADRS_MODE ] & 0x80 )
|
#define volSteps32 ( vregs[ REG_TWL_INT_ADRS_MODE ] & 0x80 )
|
||||||
@ -98,4 +104,6 @@ void vreg_twl_write( u8 adrs, u8 data );
|
|||||||
u8 adrs_table_twl_ext2int( u8 img );
|
u8 adrs_table_twl_ext2int( u8 img );
|
||||||
u8 vreg_twl_read( u8 phy_adrs );
|
u8 vreg_twl_read( u8 phy_adrs );
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@ -80,8 +80,8 @@ Kanji=SJIS
|
|||||||
[Source]
|
[Source]
|
||||||
Geometry=424, 30, 708, 979
|
Geometry=424, 30, 708, 979
|
||||||
Window=Normal
|
Window=Normal
|
||||||
DispStart=38
|
DispStart=67
|
||||||
CaretPos=68,0
|
CaretPos=119,0
|
||||||
Mode=Normal
|
Mode=Normal
|
||||||
DispFile=
|
DispFile=
|
||||||
Address1=
|
Address1=
|
||||||
@ -142,24 +142,24 @@ Accumulative=ON
|
|||||||
[Source1]
|
[Source1]
|
||||||
Geometry=239, 23, 708, 979
|
Geometry=239, 23, 708, 979
|
||||||
Window=Normal
|
Window=Normal
|
||||||
DispStart=81
|
DispStart=80
|
||||||
CaretPos=82,0
|
CaretPos=81,0
|
||||||
Mode=Normal
|
Mode=Normal
|
||||||
DispFile=tasks_sys.c
|
DispFile=tasks_sys.c
|
||||||
Accumulative=ON
|
Accumulative=ON
|
||||||
[Source2]
|
[Source2]
|
||||||
Geometry=59, 80, 708, 979
|
Geometry=59, 80, 708, 979
|
||||||
Window=Normal
|
Window=Normal
|
||||||
DispStart=34
|
DispStart=33
|
||||||
CaretPos=16,0
|
CaretPos=34,0
|
||||||
Mode=Normal
|
Mode=Normal
|
||||||
DispFile=adc.c
|
DispFile=adc.c
|
||||||
Accumulative=ON
|
Accumulative=ON
|
||||||
[Assemble]
|
[Assemble]
|
||||||
Geometry=60, 545, 600, 400
|
Geometry=60, 545, 600, 400
|
||||||
Window=Normal
|
Window=Normal
|
||||||
DispStart=216
|
DispStart=771
|
||||||
CaretPos=216,27
|
CaretPos=524,27
|
||||||
Address1=
|
Address1=
|
||||||
Address2=
|
Address2=
|
||||||
Address3=
|
Address3=
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user