2012年9月13日木曜日

SH7144でAD変換をするプログラム。
わざわざBIT単位で指定しているので無駄に長くなっています。

AD_c.c
//==========
//#include "SH7144ENSHUU.c"
#include "iodefine.h"
#include "AD_convert.h"
void init_AD_c(void){
 //A/D変換
 MST.CR2.BIT._AD0=0;  // A/D Conv 0ch スタンバイ解除
 MST.CR2.BIT._AD1=0;  // A/D Conv 1ch スタンバイ解除

 //ADCR
 AD0.ADCR.BIT.TRGE =0; //トリガによる開始は無効
 AD0.ADCR.BIT.CKS =3; //クロック・セレクト
 AD0.ADCR.BIT.ADST =0; //A/D停止
 AD0.ADCR.BIT.ADCS =0; //0:1サイクルスキャン
       //1:連続スキャン
 //
 AD1.ADCR.BIT.TRGE =0; //トリガによる開始は無効
 AD1.ADCR.BIT.CKS =3; //クロック・セレクト
 AD1.ADCR.BIT.ADST =0; //A/D停止
 AD1.ADCR.BIT.ADCS =0; //0:1サイクルスキャン
       //1:連続スキャン

 //ADCSR
 AD0.ADCSR.BIT.ADIE =1; //0:ADI割り込み禁止
       //1:ADI割り込み許可
 AD0.ADCSR.BIT.ADM = 1; //A/D動作モードセレクト //ADMとCHの組み合わせによってA/D変換する端子の組み合わせを決定します。
       //0:シングルモード
       //1:スキャンモード
 AD0.ADCSR.BIT.CH = 3; //チャンネルセレクト1,0 //ADMとCHの組み合わせによってA/D変換する端子の組み合わせを決定します。
 //
 AD1.ADCSR.BIT.ADIE =1; //0:ADI割り込み禁止
       //1:ADI割り込み許可
 AD1.ADCSR.BIT.ADM = 1; //A/D動作モードセレクト //ADMとCHの組み合わせによってA/D変換する端子の組み合わせを決定します。
       //0:シングルモード
       //1:スキャンモード
 AD1.ADCSR.BIT.CH = 3; //チャンネルセレクト1,0 //ADMとCHの組み合わせによってA/D変換する端子の組み合わせを決定します。
 //割り込み優先レベル設定
 INTC.IPRG.BIT._AD = 0x1;
}
get_AD_c(void){
 int x;
 AD0.ADCR.BIT.ADST=1;    // A/D Start
 while(AD0.ADCSR.BIT.ADF==0);//ADF(ADエンド・フラグ)が1になるのを待つ。
 x=AD0.ADDR1.WORD >>6; //ADDR1を読み込み上位10ビットを切り出す。
 AD0.ADCSR.BIT.ADF=0; //ADF(ADエンド・フラグ)をクリア
}
void start_AD0_c(void){AD0.ADCR.BIT.ADST=1;}
void start_AD1_c(void){AD1.ADCR.BIT.ADST=1;}
//A/D変換結果を格納する変数
unsigned short int AD_c_AN0;
unsigned short int AD_c_AN1;
unsigned short int AD_c_AN2;
unsigned short int AD_c_AN3;
unsigned short int AD_c_AN4;
unsigned short int AD_c_AN5;
unsigned short int AD_c_AN6;
unsigned short int AD_c_AN7;
//移動先を格納する変数
int goto_AD0;
int goto_AD1;
int goto_AD2;
int goto_AD3;
int goto_AD4;
int goto_AD5;
int goto_AD6;
int goto_AD7;
long y;
//割り込み処理
//intprg.cの136,137をコメントアウト
// 136 A/D ADI0
#pragma interrupt INT_ADI0
void INT_ADI0(void){
 /*
 AD_c_AN0 = AD0.ADDR0.WORD >>6;//ADDR0を読み込み上位10ビットを切り出す。
 AD_c_AN1 = AD0.ADDR1.WORD >>6;//ADDR1を読み込み上位10ビットを切り出す。
 AD_c_AN2 = AD0.ADDR2.WORD >>6;//ADDR2を読み込み上位10ビットを切り出す。
 AD_c_AN3 = AD0.ADDR3.WORD >>6;//ADDR3を読み込み上位10ビットを切り出す。
 */
 AD_c_AN0 = AD0.ADDR0.WORD >>8;//ADDR0を読み込み上位8ビットを切り出す。
 AD_c_AN1 = AD0.ADDR1.WORD >>8;//ADDR1を読み込み上位8ビットを切り出す。
 AD_c_AN2 = AD0.ADDR2.WORD >>8;//ADDR2を読み込み上位8ビットを切り出す。
 AD_c_AN3 = AD0.ADDR3.WORD >>8;//ADDR3を読み込み上位8ビットを切り出す。

 AD0.ADCSR.BIT.ADF=0;//ADF(ADエンド・フラグ)をクリア
 }
 //

 AD0.ADCSR.BIT.ADF=0;//ADF(ADエンド・フラグ)をクリア
}
// 137 A/D ADI1
#pragma interrupt INT_ADI1
void INT_ADI1(void){
 /*
 AD_c_AN4 = AD1.ADDR4.WORD >>6;//ADDR4を読み込み上位10ビットを切り出す。
 AD_c_AN5 = AD1.ADDR5.WORD >>6;//ADDR5を読み込み上位10ビットを切り出す。
 AD_c_AN6 = AD1.ADDR6.WORD >>6;//ADDR6を読み込み上位10ビットを切り出す。
 AD_c_AN7 = AD1.ADDR7.WORD >>6;//ADDR7を読み込み上位10ビットを切り出す。
 */
 AD_c_AN4 = AD1.ADDR4.WORD >>8;//ADDR4を読み込み上位8ビットを切り出す。
 AD_c_AN5 = AD1.ADDR5.WORD >>8;//ADDR5を読み込み上位8ビットを切り出す。
 AD_c_AN6 = AD1.ADDR6.WORD >>8;//ADDR6を読み込み上位8ビットを切り出す。
 AD_c_AN7 = AD1.ADDR7.WORD >>8;//ADDR7を読み込み上位8ビットを切り出す。

 AD1.ADCSR.BIT.ADF=0;//ADF(ADエンド・フラグ)をクリア
}
//========================




AD_c.h
//=================
extern void init_AD_c(void);

extern void start_AD0_c(void);
extern void start_AD1_c(void);

extern unsigned short int AD_c_AN0;
extern unsigned short int AD_c_AN1;
extern unsigned short int AD_c_AN2;
extern unsigned short int AD_c_AN3;
extern unsigned short int AD_c_AN4;
extern unsigned short int AD_c_AN5;
extern unsigned short int AD_c_AN6;
extern unsigned short int AD_c_AN7;



このブログのSH7144F関連記事トップ
http://the-united-front.blogspot.jp/2013/09/interface-20066sh7144f-blog-1-2012810.html







sh7144で8本(8相)のPWMを出力するプログラム。(停止させる関数以外動作確認済み。)
interface誌の基盤だと、出力ピンをプルアップしているところをパターンカットして、DBGMD=HとなっているところをDBGMD=L(GNDに落とす)必要があります。

pwm.c
//===================
#include <machine.h>
#include "iodefine.h"
void init_pwm(void)//PWM初期化関数
{
//マルチファンクションタイマパルスユニット(MTU)を用いてpwmを出力する。
MST.CR2.BIT._MTU = 0;//スタンバイ解除
//ピンファンクションコントローラで端子を初期化する。========
 //PWMモード1で出力端子に指定できる端子は最初から決められています。詳細はハードウェアマニュアルの
 //「11.4.5 PWMモード」の「表11.31 格PWM出力のレジスタと出力端子」を参照して下さい。
 //
 //つまり、これに合わせてIOを端子を初期化します。
 //ポートコントロールレジスタで機能選択。
  //チャンネル4(PWM2本出力可能)
   //PFC.PECRL1.BIT.PE15MD=1; //TIOC4D
   PFC.PECRL1.BIT.PE14MD=1; //TIOC4C
   //PFC.PECRL1.BIT.PE13MD=1; //TIOC4B
   PFC.PECRL1.BIT.PE12MD=1; //TIOC4A(SCI_TXD3)
  //チャンネル3(PWM2本出力可能)
   //PFC.PECRL1.BIT.PE11MD=1; //TIOC3D(SCI_RXD3)3
   PFC.PECRL1.BIT.PE10MD=1; //TIOC3C(SCI_TXD2)
   //PFC.PECRL1.BIT.PE9MD=1; //TIOC3B(SCI_SCK3)3
   PFC.PECRL1.BIT.PE8MD=1;  //TIOC3A(SCI_SCK2)
  //チャンネル2(PWM1本出力可能)
   //PFC.PECRL2.BIT.PE7MD=1; //TIOC2B(SCI_RXD2)2
   PFC.PECRL2.BIT.PE6MD=1;  //TIOC2A(SCI_SCK3)
  //チャンネル1(PWM1本出力可能)
   //PFC.PECRL2.BIT.PE5MD=1; //TIOC1B(SCI_TXD3)3
   PFC.PECRL2.BIT.PE4MD=1;  //TIOC1A(SCI_RXD3) //E10A使用時(DBGMD=H 時)はTCK入力に固定されます。
  //チャンネル0(PWM2本出力可能)
   //PFC.PECRL2.BIT.PE3MD=1; //TIOC0D   //E10A使用時(DBGMD=H 時)はTDO入力に固定されます。
   PFC.PECRL2.BIT.PE2MD=1;  //TIOC0C   //E10A使用時(DBGMD=H 時)はTDI入力に固定されます。
   //PFC.PECRL2.BIT.PE1MD=1; //TIOC0B   //E10A使用時(DBGMD=H 時)はTRST入力に固定されます。
   PFC.PECRL2.BIT.PE0MD=1;  //TIOC0A   //E10A使用時(DBGMD=H 時)はTMS入力に固定されます。
//----------------------------------------------------------
 //ポートIOレジスタで端子の入出力方向を決める。
 //出力に設定
  //チャンネル4(PWM2本出力可能)
   //PFC.PEIORL.BIT.B15=1; //TIOC4D//JP2-19
   PFC.PEIORL.BIT.B14=1; //TIOC4C//JP2-18//OK
   //PFC.PEIORL.BIT.B13=1; //TIOC4B//JP2-17
   PFC.PEIORL.BIT.B12=1; //TIOC4A//JP2-16
  //チャンネル3(PWM2本出力可能)
   //PFC.PEIORL.BIT.B11=1; //TIOC3D//JP2-15
   PFC.PEIORL.BIT.B10=1; //TIOC3C//JP2-14//OK
   //PFC.PEIORL.BIT.B9=1; //TIOC3B//JP2-13
   PFC.PEIORL.BIT.B8=1; //TIOC3A//JP2-12//OK
  //チャンネル2(PWM1本出力可能)
   //PFC.PEIORL.BIT.B7=1; //TIOC2B
   PFC.PEIORL.BIT.B6=1; //TIOC2A//JP2-10//OK
  //チャンネル1(PWM1本出力可能)
   //PFC.PEIORL.BIT.B5=1; //TIOC1B
   PFC.PEIORL.BIT.B4=1; //TIOC1A//JP3-1
  //チャンネル0(PWM2本出力可能)
   //PFC.PEIORL.BIT.B3=1; //TIOC0D
   PFC.PEIORL.BIT.B2=1; //TIOC0C//JP3-6
   //PFC.PEIORL.BIT.B1=1; //TIOC0B
   PFC.PEIORL.BIT.B0=1; //TIOC0A//JP3-5
//==========================================================
//タイマコントロールレジスタ(TCR)の設定
 //カウンタクリア(CCLR)の設定
 //カウンタをクリアする条件を指定する。
 //「TGRAのコンペアマッチインプットキャプチャでTCNTクリア」に指定。
  MTU0.TCR.BIT.CCLR = 1;
  MTU1.TCR.BIT.CCLR = 1;
  MTU2.TCR.BIT.CCLR = 1;//はiodefine.hに定義されていない。MUT1と同じ構造体だから一緒に書いてるっぽい?
  MTU3.TCR.BIT.CCLR = 1;
  MTU4.TCR.BIT.CCLR = 1;
 //カウンタクリア要因を選択
 //クロックエッジ(CKEG)の選択
 //00:立上がりエッジでカウント
 //01:立下りエッジでカウント
 //1X:両エッジでカウント
 //【記号説明】X:Don't care
  MTU0.TCR.BIT.CKEG = 1;
  MTU1.TCR.BIT.CKEG = 1;
  MTU2.TCR.BIT.CKEG = 1;//はiodefine.hに定義されていない。MUT1と同じ構造体だから一緒に書いてるっぽい?
  MTU3.TCR.BIT.CKEG = 1;
  MTU4.TCR.BIT.CKEG = 1;
 //カウンタクロックを選択
 //タイマプリスケーラ(TPSC)の設定
 //0:内部クロック:Pφ/1でカウント
 //1:内部クロック:Pφ/4でカウント
 //2:内部クロック:Pφ/16でカウント
 //3:内部クロック:Pφ/64でカウント
 //4:
 //5: チャンネルにより様々。
 //6:
 //7:
  MTU0.TCR.BIT.TPSC = 0;
  MTU1.TCR.BIT.TPSC = 0;
  MTU2.TCR.BIT.TPSC = 0;//はiodefine.hに定義されていない。MUT1と同じ構造体だから一緒に書いてるっぽい?
  MTU3.TCR.BIT.TPSC = 0;
  MTU4.TCR.BIT.TPSC = 0;

//タイマーステータスレジスタ(TSR)の設定
 //タイマジェネラルレジスタ(TGA)の設定
 //TGRの8ビット単位でのアクセスは禁止です。常に16ビット単位でアクセスしてください。
 //TGRは16ビットレジスタです。(つまり最大で0xFFFF)
 //
 // φ:システムクロック
 //Pφ:周辺クロック
 //
 //MTUのクロックPφ[MHz](ex:24MHz)
 //プリスケーラP(ex:P=16のときはPφ/16でカウントするという意味)
 //のとき周期T[ms](ex:T=20ms)
 //を作るのに必要なTGRAの値は
 //TGRA=T*Pφ/P
 //   =20[ms]*24MHz/16
 //   =(20*10^(-3))*(24*10^6)/16
 //   =30000
 //注意:[CCLR]で両エッジでカウントする様に指定した場合は2倍のカウントが必要です。
//TGRA=T*Pφ/P
//   =(10^(-5))*(24*10^(6))/1
//   =240
//    =0xF0

 //パルス周期を設定します。
  MTU0.TGRA = 0x00F0;
  MTU1.TGRA = 0x00F0;
  MTU2.TGRA = 0x00F0;//はiodefine.hに定義されていない。MUTと同じ構造体だから一緒に書いてるっぽい?
  MTU3.TGRA = 0x00F0;
  MTU4.TGRA = 0x00F0;
  MTU0.TGRC = 0x00F0;
  MTU3.TGRC = 0x00F0;
  MTU4.TGRC = 0x00F0;
 //デューテー値を設定する。
  //1:1 50%   0x0078
  //2:1 66.66・・・% 0x00A0
  //3:1 75%   0x0084
  //4:1 80%   0x00C0
  //5:1 83%   0x00C8
  MTU0.TGRB = 0x0078;//
  MTU1.TGRB = 0x00A0;//
  MTU2.TGRB = 0x0084;
  MTU3.TGRB = 0x00C0;
  MTU4.TGRB = 0x00C8;
  MTU0.TGRD = 0x8000;
  MTU3.TGRD = 0x8000;
  MTU4.TGRD = 0x8000;
//タイマアウトプットマスタイネーブルレジスタ(TOER)
//TOERは出力端子のTIOC4D、TIOC4C、TIOC3D、TIOC4B、TIOC4A、TIOC4Bの出力端子の許可/禁止を行います。
//0:MTU出力禁止
//1:MTU出力許可
 MTU.TOER.BIT.OE4A=1;
 //MTU.TOER.BIT.OE4B=1;
 MTU.TOER.BIT.OE4C=1;
 //MTU.TOER.BIT.OE4D=1;
 //MTU.TOER.BIT.OE3B=1;
 //MTU.TOER.BIT.OE3D=1;
//タイマI/Oコントロールレジスタ(TIOR)
//TIORのIOB3~IOB0はTGRBの機能を設定します。
//    周期:TGRA --> 初期出力0,コンペアマッチ出力0 [0001] --> 0x1
//デューティ比:TGRB --> 初期出力0,コンペアマッチ出力1 [0010] --> 0x2
//
//    周期:TGRC --> 初期出力0,コンペアマッチ出力0 [0001] --> 0x1
//デューティ比:TGRD --> 初期出力0,コンペアマッチ出力1 [0010] --> 0x2
 //7~4ビット
  //チャンネル0
   MTU0.TIOR.BIT.IOB = 2;//TGRB:アウトプットコンペアレジスタ//出力端子:TIOC0B
   MTU0.TIOR.BIT.IOD = 2;//TGRD:アウトプットコンペアレジスタ//出力端子:TIOC0D
  //チャンネル1
   MTU1.TIOR.BIT.IOB = 2;//TGRB:アウトプットコンペアレジスタ//出力端子:TIOC1B
  //チャンネル2
   MTU2.TIOR.BIT.IOB = 2;//TGRB:アウトプットコンペアレジスタ//出力端子:TIOC2B
  //チャンネル3
   MTU3.TIOR.BIT.IOB = 2;//TGRB:アウトプットコンペアレジスタ//出力端子:TIOC3B
   MTU3.TIOR.BIT.IOD = 2;//TGRD:アウトプットコンペアレジスタ//出力端子:TIOC3D
  //チャンネル4
   MTU4.TIOR.BIT.IOB = 2;//TGRB:アウトプットコンペアレジスタ//出力端子:TIOC4B
   MTU4.TIOR.BIT.IOD = 2;//TGRD:アウトプットコンペアレジスタ//出力端子:TIOC4D
 //3~0ビット
  //チャンネル0
   MTU0.TIOR.BIT.IOA = 1;//TGRA:アウトプットコンペアレジスタ//出力端子:TIOC0A
   MTU0.TIOR.BIT.IOC = 1;//TGRC:アウトプットコンペアレジスタ//出力端子:TIOC0C
  //チャンネル1
   MTU1.TIOR.BIT.IOA = 1;//TGRA:アウトプットコンペアレジスタ//出力端子:TIOC1A
  //チャンネル2
   MTU2.TIOR.BIT.IOA = 1;//TGRA:アウトプットコンペアレジスタ//出力端子:TIOC2A
  //チャンネル3:
   MTU3.TIOR.BIT.IOA = 1;//TGRA:アウトプットコンペアレジスタ//出力端子:TIOC3A
   MTU3.TIOR.BIT.IOC = 1;//TGRC:アウトプットコンペアレジスタ//出力端子:TIOC3C
  //チャンネル4
   MTU4.TIOR.BIT.IOA = 1;//TGRA:アウトプットコンペアレジスタ//出力端子:TIOC4A
   MTU4.TIOR.BIT.IOC = 1;//TGRC:アウトプットコンペアレジスタ//出力端子:TIOC4C
//タイマモードレジスタ(TMDR)
 //[BFB]0:TGRBとTGRDは通常動作
 //    1:TGRBとTGRDはバッファ動作
 //[BFA]0:TGRAとTGRCは通常動作
 //    1:TGRCとTGRCはバッファ動作
 //バッファ動作とは二つのレジスタを組み合わせて32ビットのカウンタにする事だと思う。
 //[MD]タイマの動作モードを指定します。
 //
 //今回は全てPWMモード1で設定します。
 //
 //PWMモード1で出力端子に指定できる端子は最初から決められています。詳細はハードウェアマニュアルの
 //「11.4.5 PWMモード」の「表11.31 格PWM出力のレジスタと出力端子」を参照して下さい。
 //
 //PWMモード2は他のジェネラルレジスタと同期させることでPWMを最大12本出力することができます。

 //チャンネル0
  MTU0.TMDR.BIT.BFB = 0;
  MTU0.TMDR.BIT.BFA = 0;
  MTU0.TMDR.BIT.MD = 2;
 //チャンネル1
  //MTU1.TMDR.BIT.BFB//TGRDを持たないチャンネル1、2ではこのビットはリザーブビットになります。
  //MTU1.TMDR.BIT.BFA//TGRCを持たないチャンネル1、2ではこのビットはリザーブビットになります。
  MTU1.TMDR.BIT.MD = 2;
 //チャンネル2
  //MTU2.TMDR.BIT.BFB//TGRDを持たないチャンネル1、2ではこのビットはリザーブビットになります。
  //MTU2.TMDR.BIT.BFA//TGRCを持たないチャンネル1、2ではこのビットはリザーブビットになります。
  MTU2.TMDR.BIT.MD = 2;
 //チャンネル3:
  MTU3.TMDR.BIT.BFB = 0;
  MTU3.TMDR.BIT.BFA = 0;
  MTU3.TMDR.BIT.MD = 2;
 //チャンネル4
  MTU4.TMDR.BIT.BFB = 0;
  MTU4.TMDR.BIT.BFA = 0;
  MTU4.TMDR.BIT.MD = 2;
}

void pwm_start(void){//PWMを出力する
 //タイマスタートレジスタ(TSTR)
 //[CST]0:カウント動作は停止
 //    1:カウント動作
 MTU.TSTR.BIT.CST4 = 1;
 MTU.TSTR.BIT.CST3 = 1;
 MTU.TSTR.BIT.CST2 = 1;
 MTU.TSTR.BIT.CST1 = 1;
 MTU.TSTR.BIT.CST0 = 1;
}
void pwm_stop_1(void){
 //発信を止めるには、「ハードウェアマニュアル 11.3.8 タイマスタートレジスタ(TSTR)」を参照すると、
 //1:CSTに0をライトする。
 //2:TIORに初期出力が0になるようにライトする。
 //やってみてないから良く分からないが、1:だけだと多分TCNTのカウントを一時的に停止するだけなので
 //出力レベルは保持されるのではないだろうか?
 //タイマスタートレジスタ(TSTR)
 //[CST]0:カウント動作は停止
 //    1:カウント動作
 MTU.TSTR.BIT.CST4 = 0;
 MTU.TSTR.BIT.CST3 = 0;
 MTU.TSTR.BIT.CST2 = 0;
 MTU.TSTR.BIT.CST1 = 0;
 MTU.TSTR.BIT.CST0 = 0;
}
void pwm_stop_2(void){
 //タイマI/Oコントロールレジスタ(TIOR)
 //TIORのIOB3~IOB0はTGRBの機能を設定します。
 //    周期:TGRA --> 初期出力0,コンペアマッチ出力0 [0001] --> 0x1
 //デューティ比:TGRB --> 初期出力0,コンペアマッチ出力1 [0010] --> 0x2
 //
 //    周期:TGRC --> 初期出力0,コンペアマッチ出力0 [0001] --> 0x1
 //デューティ比:TGRD --> 初期出力0,コンペアマッチ出力1 [0010] --> 0x2
 //7~4ビット
  //チャンネル0
   MTU0.TIOR.BIT.IOB = 2;//TGRB:アウトプットコンペアレジスタ//出力端子:TIOC0B
   MTU0.TIOR.BIT.IOD = 2;//TGRD:アウトプットコンペアレジスタ//出力端子:TIOC0D
  //チャンネル1
   MTU1.TIOR.BIT.IOB = 2;//TGRB:アウトプットコンペアレジスタ//出力端子:TIOC1B
  //チャンネル2
   MTU2.TIOR.BIT.IOB = 2;//TGRB:アウトプットコンペアレジスタ//出力端子:TIOC2B
  //チャンネル3
   MTU3.TIOR.BIT.IOB = 2;//TGRB:アウトプットコンペアレジスタ//出力端子:TIOC3B
   MTU3.TIOR.BIT.IOD = 2;//TGRD:アウトプットコンペアレジスタ//出力端子:TIOC3D
  //チャンネル4
   MTU4.TIOR.BIT.IOB = 2;//TGRB:アウトプットコンペアレジスタ//出力端子:TIOC4B
   MTU4.TIOR.BIT.IOD = 2;//TGRD:アウトプットコンペアレジスタ//出力端子:TIOC4D
 //3~0ビット
  //チャンネル0
   MTU0.TIOR.BIT.IOA = 1;//TGRA:アウトプットコンペアレジスタ//出力端子:TIOC0A
   MTU0.TIOR.BIT.IOC = 1;//TGRC:アウトプットコンペアレジスタ//出力端子:TIOC0C
  //チャンネル1
   MTU1.TIOR.BIT.IOA = 1;//TGRA:アウトプットコンペアレジスタ//出力端子:TIOC1A
  //チャンネル2
   MTU2.TIOR.BIT.IOA = 1;//TGRA:アウトプットコンペアレジスタ//出力端子:TIOC2A
  //チャンネル3:
   MTU3.TIOR.BIT.IOA = 1;//TGRA:アウトプットコンペアレジスタ//出力端子:TIOC3A
   MTU3.TIOR.BIT.IOC = 1;//TGRC:アウトプットコンペアレジスタ//出力端子:TIOC3C
  //チャンネル4
   MTU4.TIOR.BIT.IOA = 1;//TGRA:アウトプットコンペアレジスタ//出力端子:TIOC4A
   MTU4.TIOR.BIT.IOC = 1;//TGRC:アウトプットコンペアレジスタ//出力端子:TIOC4C

}
//=============================




pwm.h
//========================
extern void init_pwm(void);
extern void pwm_start(void);
extern void pwm_stop_1(void);
extern void pwm_stop_2(void);
//=========================



このブログのSH7144F関連記事トップ
http://the-united-front.blogspot.jp/2013/09/interface-20066sh7144f-blog-1-2012810.html





2012年9月5日水曜日

SONYのVPCSE2AJを使って思う事。

1.動画を再生するとすぐにファンが結構うるさくなる。(ノートはこんなものなのかな?比較してないので分からない・・・。)

2.2回くらい再起動しないど設定がきちんと反映されないことが多々ある。(これも他のPCと比較してないので何とも言えない。)

3.電源ボタンが剥げてきた。

4.比較的安定性に欠ける。