個人メモ
「CPUの創りかた」の作者さんのページ。
http://homepage3.nifty.com/sudamiyako/
説明が丁寧で良い本、というのが感想。
2012年11月9日金曜日
2012年10月14日日曜日
Windowsキーは本当に使えない子か?
たまにWindowsキーはもっとも要らないキーだという人がいますが本当でしょか?
windowsキーをスタートメニューを開くキーとしか知らない人は確かにそう思うかもしれません。
windowsキーにはいくつかのショートカットキーがあります。
一番有用なショートカットキーは
windowsキー を押しながら Eキー を押すショートカットキーです。コンピュータを開くことができて便利です。
もう一つはスタートメニュー横のタスクバーにあるアイコンのショートカットを起動することができる機能です。
私のパソコンの場合スタートメニューのすぐ横はInternet Explorernなので、
Internet Explorer を起動するショートカットキーとして活躍しています。
windowsキー を押しながら 1キー を押すとブラウザを起動することができます。
windowsキー を押しながら Dキーでデスクトップを表示します。
他にもいくつもショートカットキーの組み合わせが割り当てられているキーですが、特に有用なショートカットキーはこの二つです。
たまにWindowsキーはもっとも要らないキーだという人がいますが本当でしょか?
windowsキーをスタートメニューを開くキーとしか知らない人は確かにそう思うかもしれません。
windowsキーにはいくつかのショートカットキーがあります。
一番有用なショートカットキーは
windowsキー を押しながら Eキー を押すショートカットキーです。コンピュータを開くことができて便利です。
もう一つはスタートメニュー横のタスクバーにあるアイコンのショートカットを起動することができる機能です。
私のパソコンの場合スタートメニューのすぐ横はInternet Explorernなので、
Internet Explorer を起動するショートカットキーとして活躍しています。
windowsキー を押しながら 1キー を押すとブラウザを起動することができます。
windowsキー を押しながら Dキーでデスクトップを表示します。
他にもいくつもショートカットキーの組み合わせが割り当てられているキーですが、特に有用なショートカットキーはこの二つです。
2012年10月13日土曜日
DC-DCコンバータの自作。高効率DC-DCコンバータへの道のり。
時間があったのでDC-DCコンバータを作ってみた。
写真はまた後ほど。
ポイント
とにかく電気抵抗を小さくすること。
http://line.to/mac/MindStorms/msbbs/hw/hw_11.html
>>注意しなければならないのはDC/DCコンに100uH位のコイルを用いるのですが、この内部抵抗の小さいもの(1Ω位)を使わないと出力電流が大きく取れません。
コイルはデカイコイルの方が何かと良いらしい。(チップはお勧めしない)
こんな感じのやつ。http://akizukidenshi.com/catalog/g/gP-04080/
http://www.tdk.co.jp/techmag/power/200811/index.htm
上のような回路図でそのまま動く。スイッチングにはsh7144を使用した。初め図の左側の回路を試してみたがやはり発熱が多いので右側の回路を採用した。
エクセルにまとめた結果の一部を出しておきます。テスターで一つ一つつなぎ変えながら測定したのであまり精度は良くないです。5%くらいの測定誤差があるのではないかと思います。あとFET駆動に使ったSH7144の消費電力が入っていないのでその分効率が上がっています。
あと入力側にも電解コンデンサを付けました。コンデンサの直流抵抗の関係のせいかそれとも容量が増えたためか、手持ちの電解コンデンサを出力側に沢山並列にしたところ効率が上がりました。(入力側はそもそも電源装置にコンデンサがついているせいか変化なし。)
駆動周波数は10kHzくらいかな?(覚えていない・・・。あと確認するのは面倒。
他に参考にしたサイトhttp://wiki.livedoor.jp/robolabo/d/Felix
このブログの自作DC-DCコンバーター・トップ
http://the-united-front.blogspot.jp/2013/09/blog-post_12.html
写真はまた後ほど。
ポイント
とにかく電気抵抗を小さくすること。
http://line.to/mac/MindStorms/msbbs/hw/hw_11.html
>>注意しなければならないのはDC/DCコンに100uH位のコイルを用いるのですが、この内部抵抗の小さいもの(1Ω位)を使わないと出力電流が大きく取れません。
コイルはデカイコイルの方が何かと良いらしい。(チップはお勧めしない)
こんな感じのやつ。http://akizukidenshi.com/catalog/g/gP-04080/
http://www.tdk.co.jp/techmag/power/200811/index.htm
上のような回路図でそのまま動く。スイッチングにはsh7144を使用した。初め図の左側の回路を試してみたがやはり発熱が多いので右側の回路を採用した。
エクセルにまとめた結果の一部を出しておきます。テスターで一つ一つつなぎ変えながら測定したのであまり精度は良くないです。5%くらいの測定誤差があるのではないかと思います。あとFET駆動に使ったSH7144の消費電力が入っていないのでその分効率が上がっています。
あと入力側にも電解コンデンサを付けました。コンデンサの直流抵抗の関係のせいかそれとも容量が増えたためか、手持ちの電解コンデンサを出力側に沢山並列にしたところ効率が上がりました。(入力側はそもそも電源装置にコンデンサがついているせいか変化なし。)
駆動周波数は10kHzくらいかな?(覚えていない・・・。あと確認するのは面倒。
他に参考にしたサイトhttp://wiki.livedoor.jp/robolabo/d/Felix
|
このブログの自作DC-DCコンバーター・トップ
http://the-united-front.blogspot.jp/2013/09/blog-post_12.html
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
わざわざ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
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日水曜日
2012年8月11日土曜日
先日sh7144F(interface誌の付録)を試していましたが、(今更ですが・・・)結局電源の問題だけではありませんでした。
ルネサステクノロジのFDTで書き込んでいたのですが、上手く行かず、BESTテクノロジのFlashライターで書き込んだところようやく上手く行きました。
設定は
CPU TYPE 7045
PORT:COM4
BaudRate[bps] 38400
Clock[MHz] 12.0000
CPUは7144でしたが、なぜか7045で書き込むと上手く行きました。
シリアルポートはUSB-Serialです。
このブログのSH7144F関連記事トップ
http://the-united-front.blogspot.jp/2013/09/interface-20066sh7144f-blog-1-2012810.html
ルネサステクノロジのFDTで書き込んでいたのですが、上手く行かず、BESTテクノロジのFlashライターで書き込んだところようやく上手く行きました。
設定は
CPU TYPE 7045
PORT:COM4
BaudRate[bps] 38400
Clock[MHz] 12.0000
CPUは7144でしたが、なぜか7045で書き込むと上手く行きました。
シリアルポートはUSB-Serialです。
このブログのSH7144F関連記事トップ
http://the-united-front.blogspot.jp/2013/09/interface-20066sh7144f-blog-1-2012810.html
2012年8月10日金曜日
ルネサステクノロジ、SH 7144F
「Error No 15024:ブートの合わせ込みに失敗しました。」
についてのメモ。
最初は配線ミスだと思っていたのですが、いろいろと調べてみても問題なし。この前は書き込めたのになーと思って色々と試してみたところ、電源の立ち上がりが悪く、CPUがブートモードで正しく起動していないことが分かりました。
取りあえず、電源を入れ、電源が完全に足りあがったところで電源ケーブルをマイコンに接続することで回避できます。
このブログのSH7144F関連記事トップ
http://the-united-front.blogspot.jp/2013/09/interface-20066sh7144f-blog-1-2012810.html
「Error No 15024:ブートの合わせ込みに失敗しました。」
についてのメモ。
最初は配線ミスだと思っていたのですが、いろいろと調べてみても問題なし。この前は書き込めたのになーと思って色々と試してみたところ、電源の立ち上がりが悪く、CPUがブートモードで正しく起動していないことが分かりました。
取りあえず、電源を入れ、電源が完全に足りあがったところで電源ケーブルをマイコンに接続することで回避できます。
このブログのSH7144F関連記事トップ
http://the-united-front.blogspot.jp/2013/09/interface-20066sh7144f-blog-1-2012810.html
2012年8月3日金曜日
2012年7月22日日曜日
http://wisdom.sakura.ne.jp/programming/cpp/cpp35.html
のプログラムより、(一部改編)
=============================
#include "stdafx.h"
のように、例外処理を受け取るcatchが存在しないと、
'System.Runtime.InteropServices.SEHException'のハンドルされていない例外がTEST.exeで発生しました。
追加情報:外部コンポーネントが例外をスローしました。
となる。
つまりちゃんと
=============================
#include "stdafx.h"
とちゃんと例外処理を書いておけばいい。
のプログラムより、(一部改編)
=============================
#include "stdafx.h"
#include <iostream> using namespace std; using namespace System;
int main() {
try {
throw "Exception : Kitty on your lap\n";
cout << "Di Gi Gharat";
}
catch (int e) { cout << e; }
cout << "Kitty on your lap";
return 0;
}
=============================try {
throw "Exception : Kitty on your lap\n";
cout << "Di Gi Gharat";
}
catch (int e) { cout << e; }
cout << "Kitty on your lap";
return 0;
}
のように、例外処理を受け取るcatchが存在しないと、
'System.Runtime.InteropServices.SEHException'のハンドルされていない例外がTEST.exeで発生しました。
追加情報:外部コンポーネントが例外をスローしました。
となる。
つまりちゃんと
=============================
#include "stdafx.h"
#include <iostream> using namespace std; using namespace System;
int main() {
try {
throw "Exception : Kitty on your lap\n";
cout << "Di Gi Gharat";
}
catch (int e) { cout << e; }
catch(char* ea){
cout<<ea;
}
cout << "Kitty on your lap";
return 0;
}
=============================try {
throw "Exception : Kitty on your lap\n";
cout << "Di Gi Gharat";
}
catch (int e) { cout << e; }
catch(char* ea){
cout<<ea;
}
cout << "Kitty on your lap";
return 0;
}
とちゃんと例外処理を書いておけばいい。
http://www.geocities.jp/ky_webid/cpp/language/025.html
を見て。
tryの意味が分からなかったのでgoogleで検索したところ、↑が出てきた。
コードで、
========================
#include "stdafx.h"
#include <iostream>
using namespace System;
int main()
{
try
{
throw( "例外が発生しました" );
std::cout << "この文は表示されません" << std::endl;
}
catch( int num )
{
std::cout << num << std::endl;
std::cout << "例外がここでキャッチされた場合、この文は表示されます1" << std::endl;
}
catch( const char* str )
{
std::cout << str << std::endl;
std::cout << "例外がここでキャッチされた場合、この文は表示されます2" << std::endl;
}
std::cout << "例外の有無に関係なく、この文は表示されます" << std::endl;
Console::WriteLine("終了するにはEnterを押してください");
Console::ReadLine();
return 0;
}
========================
上記のように書き足してVC++2010Expressで実行してみる。
初めは
例外がここでキャッチされた場合、この文は表示されます2
が表示される。
throw( "例外が発生しました" );
を
throw(0);
に書き換えてみると
例外がここでキャッチされた場合、この文は表示されます1
が表示される。
型で分類するのかな?
以上個人メモ。
を見て。
tryの意味が分からなかったのでgoogleで検索したところ、↑が出てきた。
コードで、
========================
#include "stdafx.h"
#include <iostream>
using namespace System;
int main()
{
try
{
throw( "例外が発生しました" );
std::cout << "この文は表示されません" << std::endl;
}
catch( int num )
{
std::cout << num << std::endl;
std::cout << "例外がここでキャッチされた場合、この文は表示されます1" << std::endl;
}
catch( const char* str )
{
std::cout << str << std::endl;
std::cout << "例外がここでキャッチされた場合、この文は表示されます2" << std::endl;
}
std::cout << "例外の有無に関係なく、この文は表示されます" << std::endl;
Console::WriteLine("終了するにはEnterを押してください");
Console::ReadLine();
return 0;
}
========================
上記のように書き足してVC++2010Expressで実行してみる。
初めは
例外がここでキャッチされた場合、この文は表示されます2
が表示される。
throw( "例外が発生しました" );
を
throw(0);
に書き換えてみると
例外がここでキャッチされた場合、この文は表示されます1
が表示される。
型で分類するのかな?
以上個人メモ。
2012年7月21日土曜日
自分メモ環境はWinXP Pro
Visual C++ 2010 Express で
=======================================
http://msdn.microsoft.com/ja-jp/library/19czdak8.aspx
// text_write.cpp
// compile with: /clr
using namespace System;
using namespace System::IO;
int main()
{
String^ fileName = "textfile.txt";
StreamWriter^ sw = gcnew StreamWriter(fileName);
sw->WriteLine("A text file is born!");
sw->Write("You can use WriteLine");
sw->WriteLine("...or just Write");
sw->WriteLine("and do {0} output too.", "formatted");
sw->WriteLine("You can also send non-text objects:");
sw->WriteLine(DateTime::Now);
sw->Close();
Console::WriteLine("a new file ('{0}') has been written", fileName);
return 0;
}
=======================================
の様にテキストファイルを保存した場合の保存先は
C:\Documents and Settings\Administrator\My Documents\Visual Studio 2010\Projects\TEST\TEST
Administratorの部分は自分のユーザー名で
TESTの部分は両方ともプロジェクト名です。
Visual C++ 2010 Express で
=======================================
http://msdn.microsoft.com/ja-jp/library/19czdak8.aspx
// text_write.cpp
// compile with: /clr
using namespace System;
using namespace System::IO;
int main()
{
String^ fileName = "textfile.txt";
StreamWriter^ sw = gcnew StreamWriter(fileName);
sw->WriteLine("A text file is born!");
sw->Write("You can use WriteLine");
sw->WriteLine("...or just Write");
sw->WriteLine("and do {0} output too.", "formatted");
sw->WriteLine("You can also send non-text objects:");
sw->WriteLine(DateTime::Now);
sw->Close();
Console::WriteLine("a new file ('{0}') has been written", fileName);
return 0;
}
=======================================
の様にテキストファイルを保存した場合の保存先は
C:\Documents and Settings\Administrator\My Documents\Visual Studio 2010\Projects\TEST\TEST
Administratorの部分は自分のユーザー名で
TESTの部分は両方ともプロジェクト名です。
2012年7月15日日曜日
よく使うショートカットキーの一覧表。
私が普段使っているショートカットキーを書いておきます。なんだかんだ言っても全部使っているので、どれもそこそこ実用的だと思われます。他にもいくつかありますが、まあこれくらいにしときます。(切が無いので。)
その中でも特に良く使うものには色を付けておきます。
win+E マイコンピューターの表示
win+D デスクトップの表示
(一回押すと全てのウィンドウを最小化し、二回押すと再び元のウィンドウを表示します。)
「win+M」もほぼ同じ動作をしますが、二回押しても元には戻りません。
win+→画面右半分に表示
win+←画面左半分に表示
win+↑ 最大化
win+↓ 元に戻す(縮小)
Win+1 スタートボタンのすぐ横の1番目にあるアイコンのアプリを起動
Win+2 スタートボタンから2番目にあるアイコンのアプリを起動
・・・・・・・・・・・・・・・(中略)・・・・・・・・・・・・・・・・・・・・
Win+9 スタートボタンから9番目にあるアイコンのアプリを起動
Win+R ファイル名を指定して実行
Alt+F4 windowを閉じる
Alt+Tab windowの切り替え
Alt+Prt Sc 選択しているウィンドウの画面を画像としてクリップボードにコピー
Prt Sc 表示している画面を画像としてクリップボードにコピー
Ctrl+C コピー
Ctrl+V 貼り付け
Ctrl+X 切り取り
Ctrl+Y (元に戻した)操作を一つ進める
Ctrl+Z 操作を一つ前に戻す
Ctrl+A 全て選択
Ctrl+S 上書き保存
Ctrl+F 検索
Ctrl+Shift+n 新しいフォルダの作成
Ctrl+Shift+Esc タスクマネージャの起動
F1 ヘルプの表示
F2 フォルダー名の変更
F11 全画面表示
Shift+Delete ファイルを完全に消去する
テキストボックス内にて
Shift+→ 範囲選択
Shift+← 範囲選択
インターネットエクスプローラにて
F5 更新
F11 全画面表示
F12 HTMLとかCSSとか見れる。
Ctrl+S webページの保存
Ctrl+E 規定のプロバイダで検索(IE9の機能)
Ctrl+D お気に入りに登録
Ctrl+T 新しいタブ
Ctrl+W タブを閉じる
Ctrl+K タブの複製
Ctrl+tab タブの切り替え
Ctrl+Shift+tab タブの切り替え(逆順)
Alt+→次のページ進む。
Alt+←前のページに戻る。
CドライブやDドライブ、Eドライブなどを、ショートカットキーを使って一発で表示させたい方は、
デフォルト(初期状態)ではWindowsにこのようなショートカットキーは存在しないため、
フリーソフトを使ってオリジナルのショートカットキーを作る必要があります。
詳細はドライブにショートカットキーを登録するをどうぞ。
(一発では表示させる事はできませんが、「win+E」でマイコンピュータを表示させてから、
それぞれのドライブをダブルクリックすれば、ツーステップで表示できます。)
ちなみにせっかくなのでヘルプとサポートからショートカットキーの一覧をコピーしておきます。
これを半分でも使う人は稀だと思いますが・・・。
<<全てのショートカットキーの調べ方。>>
全てのショートカットキーが知りたい場合はF1ボタンを押してWindowsのヘルプとサポートを開き、ショートカットキーと検索してください。
================================================================
ショートカット キー
ショートカット キーは、複数のキーの組み合わせであり、これらを押すと、通常はマウスなどのポインティング
デバイスが必要な操作を実行できます。ショートカット キーを使用すると、コンピューターの操作が容易になり、Windows や他のプログラムで作業する時間と労力を節約できます。
ほとんどのプログラムでは、メニューや他のコマンドの操作を簡単にするアクセラレータ キーも使用できます。アクセラレータ
キーは、プログラムの各メニューで確認してください。メニュー内で文字に下線が付いている場合、下線付き文字のキーと組み合わせて Alt キーを押すと、そのメニュー項目をクリックするのと同じ効果が通常得られます。
ペイントやワードパッドなどのプログラムで Alt
キーを押すと、コマンドに追加キーのラベルが表示されます。そのキーを押すと対応するコマンドを実行できます。
また、プログラムを開く新しいショートカット キーを作成することもできます。詳細については、「ショートカット
キーを作成してプログラムを開く」を参照してください。
コンピューターの簡単操作のショートカット キー
コンピューターを使いやすくするのに役立つショートカット キーを、下記の表に示します。
押すキー
|
操作
|
---|---|
右 Shift (8 秒間)
|
フィルター キー機能をオンまたはオフにする
|
左 Alt + 左 Shift + PrintScreen
|
ハイ コントラストをオンまたはオフにする
|
左 Alt + 左 Shift + NumLock
|
マウス キー機能をオンまたはオフにする
|
Shift (5 回)
|
固定キー機能をオンまたはオフにする
|
NumLock (5 秒間)
|
切り替えキー機能をオンまたはオフにする
|
Windows ロゴ キー
+ U
|
コンピューターの簡単操作センターを開く
|
一般的なショートカット キー
一般的なショートカット キーを、下記の表に示します。
押すキー
|
目的
|
---|---|
F1
|
ヘルプを表示する
|
Ctrl+C (または Ctrl + Insert)
|
選択した項目をコピーする
|
Ctrl + X
|
|
Ctrl + V (または Shift + Insert)
|
選択した項目を貼り付ける
|
Ctrl + Z
|
操作を元に戻す
|
Ctrl + Y
|
操作をやり直す
|
Delete (または Ctrl + D)
|
選択した項目を削除し、ごみ箱に移動する
|
Shift + Del
|
ごみ箱に移動せずに、選択した項目を削除する
|
F2
|
選択した項目の名前を変更する
|
Ctrl + →
|
次の単語の先頭にカーソルを移動する
|
Ctrl + ←
|
前の単語の先頭にカーソルを移動する
|
Ctrl + ↓
|
次の段落の先頭にカーソルを移動する
|
Ctrl + ↑
|
前の段落の先頭にカーソルを移動する
|
Ctrl + Shift + 方向キー
|
テキストのブロックを選択する
|
Shift + 任意の方向キー
|
ウィンドウ内またはデスクトップ上の複数の項目を選択する、またはドキュメント内のテキストを選択する
|
Ctrl + 任意の方向キー + Space
|
ウィンドウ内またはデスクトップ上の複数の個別の項目を選択する
|
Ctrl + A
|
ドキュメントまたはウィンドウ内の項目をすべて選択する
|
F3
|
ファイルやフォルダーを検索する
|
Alt + Enter
|
選択した項目のプロパティを表示する
|
Alt + F4
|
アクティブな項目を閉じる、またはアクティブなプログラムを終了する
|
Alt + Space
|
作業中のウィンドウのショートカット メニューを開く
|
Ctrl + F4
|
作業中のドキュメントを閉じる (複数のドキュメントを同時に開くことのできるプログラム内で)
|
Alt + Tab
|
開いている各項目間で切り替える
|
Ctrl + Alt + Tab
|
方向キーを使用して、開いている各項目間で切り替える
|
Ctrl + マウスのスクロール ホイール
|
デスクトップ上のアイコンのサイズを変更する
|
Windows ロゴ キー
+ Tab
|
タスク
バー上の各プログラムを巡回する (Aero フリップ 3-D を使用)
|
Ctrl + Windows ロゴ キー
+ Tab
|
方向キーを使用して、タスク バー上の各プログラムを巡回する (Aero フリップ 3-D を使用)
|
Alt + Esc
|
開かれた順序で各項目を巡回する
|
F6
|
ウィンドウ内またはデスクトップ上の各画面要素を巡回する
|
F4
|
Windows エクスプローラーのアドレス バー
リストを表示する
|
Shift + F10
|
選択した項目のショートカット メニューを表示する
|
Ctrl + Esc
|
スタート メニューを開く
|
Alt + 下線の付いた文字
|
対応するメニューを表示する
|
Alt + 下線の付いた文字
|
メニュー コマンド (または他の下線の付いたコマンド) を実行する
|
F10
|
アクティブ プログラムのメニュー バーをアクティブにする
|
→
|
次のメニューを右側へ開くか、またはサブメニューを開く
|
←
|
次のメニューを左側へ開くか、またはサブメニューを閉じる
|
F5 (または Ctrl + R)
|
作業中のウィンドウを最新の情報に更新する
|
Alt + ↑
|
Windows エクスプローラー内で 1
つ上のフォルダーを表示する
|
Esc
|
現在の作業を取り消す
|
Ctrl + Shift + Esc
|
タスク マネージャーを開く
|
Shift (CD 挿入時)
|
CD が自動的に再生しないようにする
|
左側の Alt + Shift
|
入力言語を切り替える (複数の入力言語が有効になっている場合)
|
Ctrl + Shift
|
キーボード レイアウトを切り替える (複数のキーボード レイアウトが有効になっている場合)
|
右側または左側の Ctrl + Shift
|
右から左に読む上げる言語の読み上げ方向を変更する
|
ダイアログ ボックスのショートカット キー
ダイアログ ボックスで使用するショートカット キーを、下記の表に示します。
押すキー
|
目的
|
---|---|
Ctrl + Tab
|
前方のタブへ移動する
|
Ctrl + Shift + Tab
|
後方のタブへ移動する
|
タブ
|
前方のオプションへ移動する
|
Shift + Tab
|
後方のオプションへ移動する
|
Alt + 下線の付いた文字
|
その文字の付いたコマンドを実行する (またはオプションを選択する)
|
Enter
|
多くの選択したコマンドに対し、マウス クリックの代わりとなる
|
Space
|
アクティブなオプションがチェック ボックスの場合、チェック ボックスをオンまたはオフにする
|
方向キー
|
アクティブなオプションがオプション ボタンのグループの場合、ボタンを選択する
|
F1
|
ヘルプを表示する
|
F4
|
アクティブなリスト内の各項目を表示する
|
BackSpace
|
[名前を付けて保存] または [開く] ダイアログ ボックスでフォルダーが選択されている場合、1
つ上のフォルダーを開く
|
Windows ロゴ キーのショートカット キー
Windows ロゴ キー
で使用するショートカット キーを、下記の表に示します。
押すキー
|
目的
|
---|---|
Windows ロゴ キー
|
スタート メニューを開く、または閉じる。
|
Windows ロゴ キー
+ Pause
|
コントロール パネルの [システム] を表示する。
|
Windows ロゴ キー
+ D
|
デスクトップを表示する。
|
Windows ロゴ キー
+ M
|
ウィンドウをすべて最小化する。
|
Windows ロゴ キー
+ Shift + M
|
最小化されたウィンドウをデスクトップへ復元する。
|
Windows ロゴ キー
+ E
|
[コンピューター] を開く。
|
Windows ロゴ キー
+ F
|
ファイルやフォルダーを検索する。
|
Ctrl +Windows ロゴ キー
+ F
|
コンピューターを検索する (ネットワーク上にいる場合)。
|
Windows ロゴ キー
+ L
|
コンピューターをロックする、またはユーザーを切り替える。
|
Windows ロゴ キー
+ R
|
[ファイル名を指定して実行] ダイアログ ボックスを開く。
|
Windows ロゴ キー
+ T
|
タスク バー上の各プログラムを巡回する。
|
Windows ロゴ キー
+ 数字
|
数字で示されている位置にあるタスク
バーに固定表示しているプログラムを開始する。プログラムが既に実行されている場合は、そのプログラムに切り替えます。
|
Shift + Windows ロゴ キー
+ 数字
|
数字で示されている位置にあるタスク バーに固定表示しているプログラムの新しいインスタンスを開始する。
|
Ctrl + Windows ロゴ キー
+ 数字
|
数字で示されている位置にあるタスク
バーに固定表示しているプログラムの前回の作業中のウィンドウに切り替える。
|
Alt + Windows ロゴ キー
+ 数字
|
数字で示されている位置にあるタスク バーに固定表示しているプログラムのジャンプ リストを開く。
|
Windows ロゴ キー
+ Tab
|
タスク バー上の各プログラムを巡回する (Aero フリップ 3-D を使用)。
|
Ctrl + Windows ロゴ キー
+ Tab
|
方向キーを使用して、タスク バー上の各プログラムを巡回する (Aero フリップ 3-D を使用)。
|
Ctrl + Windows ロゴ キー
+ B
|
通知領域にメッセージを表示したプログラムに切り替える。
|
Windows ロゴ キー
+ Space
|
デスクトップをプレビューする。
|
Windows ロゴ キー
+ ↑
|
ウィンドウを最大化する。
|
Windows ロゴ キー
+ ←
|
画面の左側にウィンドウを最大化する。
|
Windows ロゴ キー
+ →
|
画面の右側にウィンドウを最大化する。
|
Windows ロゴ キー
+ ↓
|
ウィンドウを最小化する。
|
Windows ロゴ キー
+ Home
|
作業中のウィンドウを除くすべてのウィンドウを最小化する。
|
Windows ロゴ キー
+ Shift + ↑
|
画面の上下にウィンドウを拡大する。
|
Windows ロゴ キー
+ Shift + ← または →
|
ウィンドウを別のモニター ディスプレイに移動する。
|
Windows ロゴ キー
+ P
|
プレゼンテーション表示モードを選択する。
|
Windows ロゴ キー
+ G
|
各ガジェットを巡回する。
|
Windows ロゴ キー
+ U
|
コンピューターの簡単操作センターを開く。
|
Windows ロゴ キー
+ X
|
Windows モビリティ
センターを開く。
|
Windows エクスプローラーのショートカット キー
Windows
エクスプローラーのウィンドウまたはフォルダーを操作するショートカット キーを、下記の表に示します。
押すキー
|
目的
|
---|---|
Ctrl + N
|
新しいウィンドウを開く
|
Ctrl + W
|
現在のウィンドウを閉じます。
|
Ctrl + Shift + N
|
新しいフォルダーを作成する
|
End
|
作業中のウィンドウの一番下を表示する
|
Home
|
作業中のウィンドウの一番上を表示する
|
F11
|
作業中のウィンドウを最大化または最小化する
|
Ctrl + ピリオド (.)
|
画像を右回りに回転する
|
Ctrl + コンマ (,)
|
画像を左回りに回転する
|
NumLock + テンキー上のアスタリスク (*)
|
選択したフォルダーの下のサブフォルダーをすべて表示する
|
NumLock + テンキー上のプラス記号 (+)
|
選択したフォルダーのコンテンツを表示する
|
NumLock + テンキー上のマイナス記号 (-)
|
選択したフォルダーを折りたたむ
|
←
|
現在の選択を折りたたむ (展開されている場合)、または親フォルダーを選択する
|
Alt + Enter
|
選択した項目の [プロパティ] ダイアログ ボックスを開く
|
Alt + P
|
プレビュー ウィンドウを表示する
|
Alt + ←
|
前のフォルダーを表示する
|
BackSpace
|
前のフォルダーを表示する
|
→
|
現在の選択を表示する (折りたたまれている場合)、または最初のサブフォルダーを選択する
|
Alt + →
|
次のフォルダーを表示する
|
Alt + ↑
|
親フォルダーを表示する
|
Ctrl + Shift + E
|
選択したフォルダーの上のフォルダーをすべて表示する
|
Ctrl + マウスのスクロール ホイール
|
ファイルとフォルダーのアイコンのサイズおよび外観を変更する
|
Alt + D
|
アドレス バーを選択する
|
Ctrl + E
|
検索ボックスを選択する
|
Ctrl + F
|
検索ボックスを選択する
|
タスク バーのキーボード ショートカット
タスク バーの項目を操作するキーボード ショートカットを、下記の表に示します。
押すキー
|
目的
|
---|---|
タスク バー ボタンを Shift キーを押しながらクリック
|
プログラムを開いたり、プログラムの別のインスタンスをすばやく開いたりする
|
タスク バー ボタンを Ctrl キーと Shift キーを押しながらクリック
|
管理者としてプログラムを開く
|
タスク バー ボタンを Shift キーを押しながら右クリック
|
プログラムのウィンドウ メニューを表示する
|
グループ化されたタスク バー ボタンを Shift キーを押しながら右クリック
|
グループのウィンドウ メニューを表示する
|
グループ化されたタスク バー ボタンを Ctrl キーを押しながらクリック
|
グループのウィンドウを巡回する
|
拡大鏡のショートカット キー
拡大鏡を操作するショートカット キーを、下記の表に示します。
押すキー
|
目的
|
---|---|
Windows ロゴ キー
+ プラス記号 (+) またはマイナス記号 (-)
|
拡大または縮小
|
Ctrl + Alt + Space
|
全画面表示モードでデスクトップをプレビューする
|
Ctrl + Alt + F
|
全画面表示モードに切り替える
|
Ctrl + Alt + L
|
レンズ モードに切り替える
|
Ctrl + Alt + D
|
固定モードに切り替える
|
Ctrl + Alt + I
|
色を反転する
|
Ctrl + Alt + 方向キー
|
矢印キーの方向に表示を移動する
|
Ctrl + Alt + R
|
レンズのサイズを変更する
|
Windows ロゴ キー
+ Esc
|
拡大鏡を終了する
|
リモート デスクトップ接続のショートカット キー
リモート デスクトップ接続を操作するショートカット キーを、下記の表に示します。
押すキー
|
目的
|
---|---|
Alt + PageUp
|
プログラムを左から右に切り替える。
|
Alt + PageDown
|
プログラムを右から左に切り替える。
|
Alt + Ins
|
起動した順にプログラムを切り替える。
|
Alt + Home
|
スタート メニューを表示する。
|
Ctrl + Alt + Break
|
ウィンドウ表示と全画面表示を切り替える。
|
Ctrl + Alt + End
|
[Windows セキュリティ] ダイアログ
ボックスを表示する。
|
Alt + Del
|
システム メニューを表示する。
|
Ctrl + Alt + テンキーのマイナス記号 (-)
|
クライアント内の作業中のウィンドウのコピーを、ターミナル
サーバーのクリップボードに置く (ローカル コンピューターで Alt + PrintScreen
キーを押すのと同じ機能を提供します)。
|
Ctrl + Alt + テンキーのプラス記号 (+)
|
クライアント ウィンドウ領域全体のコピーをターミナル サーバーのクリップボードに置く (ローカル コンピューターで
PrintScreen キーを押すのと同じ機能を提供します)。
|
Ctrl +Alt + →
|
リモート デスクトップのコントロールから、ホスト プログラム内のコントロール (ボタンやテキスト ボックスなど)
にタブ移動する。リモート デスクトップのコントロールが別の (ホスト) プログラムに組み込まれている場合に役立ちます。
|
Ctrl +Alt + ←
|
リモート デスクトップのコントロールから、ホスト プログラム内のコントロール (ボタンやテキスト ボックスなど)
にタブ移動する。リモート デスクトップのコントロールが別の (ホスト)
プログラムに組み込まれている場合に役立ちます。
|
注
-
Ctrl + Alt + Break キーおよび Ctrl + Alt + End キーは、リモート コンピューターが Windows ショートカット キーを認識するようにセットアップした場合でも、すべてのリモート デスクトップ セッションで使用可能です。
ペイントのショートカット キー
ペイントを操作するショートカット キーを、下記の表に示します。
押すキー
|
目的
|
---|---|
Ctrl + N
|
新しい画像を作成する
|
Ctrl + O
|
既存の画像を開く
|
Ctrl + S
|
画像の変更内容を保存する
|
F12
|
画像を新しいファイルとして保存する
|
Ctrl + P
|
画像を印刷する
|
Alt + F4
|
画像およびその [ペイント] ウィンドウを閉じる
|
Ctrl + Z
|
変更を元に戻す
|
Ctrl + Y
|
変更をやり直す
|
Ctrl + A
|
画像全体を選択する
|
Ctrl + X
|
選択範囲を切り取る
|
Ctrl + C
|
選択範囲をクリップボードにコピーする
|
Ctrl + V
|
選択範囲をクリップボードから貼り付ける
|
→
|
選択した項目 (アクティブな図形) を 1 ピクセル右に移動する
|
←
|
選択した項目 (アクティブな図形) を 1 ピクセル左に移動する
|
↓
|
選択した項目 (アクティブな図形) を 1 ピクセル下に移動する
|
↑
|
選択範囲 (アクティブな図形) を 1 ピクセル上に移動する
|
Esc
|
範囲選択を取り消す
|
削除する
|
選択範囲を削除する
|
Ctrl + B
|
選択したテキストを太字にする
|
Ctrl + プラス記号 (+)
|
ブラシ、直線、または図形の輪郭の幅を 1 ピクセル増やす
|
Ctrl + マイナス記号 (-)
|
ブラシ、直線、または図形の輪郭の幅を 1 ピクセル減らす
|
Ctrl + I
|
選択したテキストを斜体にする
|
Ctrl + U
|
選択したテキストに下線を引く
|
Ctrl + E
|
[プロパティ] ダイアログ ボックスを開く
|
Ctrl + W
|
[サイズ変更と傾斜] ダイアログ ボックスを表示する
|
Ctrl + PageUp
|
拡大する
|
Ctrl + PageDown
|
縮小する
|
F11
|
画像を全画面表示モードにする
|
Ctrl + R
|
ルーラーの表示と非表示を切り替える
|
Ctrl + G
|
グリッド線を表示または非表示にする
|
F10 または Alt
|
KeyTip を表示する
|
Shift + F10
|
現在のショートカット メニューを表示する
|
F1
|
ペイントのヘルプを開く
|
ワードパッドのショートカット キー
ワードパッドを操作するショートカット キーを、下記の表に示します。
押すキー
|
目的
|
---|---|
Ctrl + N
|
新しいドキュメントを作成する
|
Ctrl + O
|
既存のドキュメントを開く
|
Ctrl + S
|
ドキュメントの変更内容を保存する
|
F12
|
ドキュメントを新しいファイルとして保存する
|
Ctrl + P
|
ドキュメントを印刷する
|
Alt + F4
|
ワードパッドを閉じる
|
Ctrl + Z
|
変更を元に戻す
|
Ctrl + Y
|
変更をやり直す
|
Ctrl + A
|
ドキュメント全体を選択する
|
Ctrl + X
|
選択範囲を切り取る
|
Ctrl + C
|
選択範囲をクリップボードにコピーする
|
Ctrl + V
|
選択範囲をクリップボードから貼り付ける
|
Ctrl + B
|
選択したテキストを太字にする
|
Ctrl + I
|
選択したテキストを斜体にする
|
Ctrl + U
|
選択したテキストに下線を引く
|
Ctrl + 等号 (=)
|
選択したテキストを下付きにする
|
Ctrl + Shift + 等号 (=)
|
選択したテキストを上付きにする
|
Ctrl + L
|
テキストを左に揃える
|
Ctrl + E
|
テキストを中央に揃える
|
Ctrl + R
|
テキストを右に揃える
|
Ctrl + J
|
テキストを均等に割り付ける
|
Ctrl + 1
|
行間を 1 行に設定する
|
Ctrl + 2
|
行間を 2 行に設定する
|
Ctrl + 5
|
行間を 1.5 行に設定する
|
Ctrl + Shift + >
|
フォント サイズを大きくする
|
Ctrl + Shift + <
|
フォント サイズを小さくする
|
Ctrl + Shift + A
|
文字をすべて大文字に変更する
|
Ctrl + Shift + L
|
箇条書きを変更する
|
Ctrl + D
|
Microsoft ペイントの描画を挿入する
|
Ctrl + F
|
ドキュメント内のテキストを検索する
|
F3
|
[検索] ダイアログ ボックスのテキストの新しいインスタンスを検索する
|
Ctrl + H
|
ドキュメント内のテキストを置換する
|
Ctrl + ←
|
カーソルを左方向に 1 単語分、移動する
|
Ctrl + →
|
カーソルを右方向に 1 単語分、移動する
|
Ctrl + ↑
|
カーソルを 1 行上に移動する
|
Ctrl + ↓
|
カーソルを 1 行下に移動する
|
Ctrl + Home
|
ドキュメントの先頭に移動する
|
Ctrl + End
|
ドキュメントの末尾に移動する
|
Ctrl + PageUp
|
1 ページ上に移動する
|
Ctrl + PageDown
|
1 ページ下に移動する
|
Ctrl + Delete
|
次の単語を削除する
|
F10
|
KeyTip を表示する
|
Shift + F10
|
現在のショートカット メニューを表示する
|
F1
|
ワードパッドのヘルプを開く
|
電卓のショートカット キー
電卓を操作するショートカット キーを、下記の表に示します。
押すキー
|
目的
|
---|---|
Alt + 1
|
普通の電卓に切り替える
|
Alt + 2
|
関数電卓に切り替える
|
Alt + 3
|
プログラマ電卓に切り替える
|
Alt + 4
|
統計電卓に切り替える
|
Ctrl + E
|
日付の計算を開く
|
Ctrl + H
|
計算履歴をオンまたはオフにする
|
Ctrl + U
|
単位変換を開く
|
Alt + C
|
日付の計算およびワークシートを計算または解決する
|
F1
|
電卓のヘルプを開く
|
Ctrl + Q
|
[M-] ボタンを押す
|
Ctrl + P
|
[M+] ボタンを押す
|
Ctrl + M
|
[MS] ボタンを押す
|
Ctrl + R
|
[MR] ボタンを押す
|
Ctrl + L
|
[MC] ボタンを押す
|
%
|
[%] ボタンを押す
|
F9
|
[+/–] ボタンを押す
|
/
|
[/] ボタンを押す
|
*
|
[*] ボタンを押す
|
+
|
[+] ボタンを押す
|
-
|
[–] ボタンを押す
|
R
|
[1/×] ボタンを押す
|
@
|
平方根ボタンを押す
|
0-9
|
数字ボタン (0 ~ 9) を押す
|
=
|
[=] ボタンを押す
|
.
|
[.] (小数点) ボタンを押す
|
BackSpace
|
バックスペース ボタン (←) を押す
|
Esc
|
[C] ボタンを押す
|
Del
|
[CE] ボタンを押す
|
Ctrl + Shift + D
|
計算履歴をクリアする
|
F2
|
計算履歴を編集する
|
↑
|
計算履歴を上に移動する
|
↓
|
計算履歴を下に移動する
|
Esc
|
計算履歴の編集を取り消す
|
Enter
|
計算履歴の編集後に再計算を実行する
|
F3
|
関数電卓で [Deg] を選択する
|
F4
|
関数電卓で [Rad] を選択する
|
F5
|
関数電卓で [Grad] を選択する
|
I
|
関数電卓で [Inv] ボタンを押す
|
D
|
関数電卓で [Mod] ボタンを押す
|
Ctrl + S
|
関数電卓で [sinh] ボタンを押す
|
Ctrl + O
|
関数電卓で [cosh] ボタンを押す
|
Ctrl + T
|
関数電卓で [tanh] ボタンを押す
|
(
|
関数電卓で [(] ボタンを押す
|
)
|
関数電卓で [)] ボタンを押す
|
N
|
関数電卓で [ln] ボタンを押す
|
;
|
関数電卓で [Int] ボタンを押す
|
S
|
関数電卓で [sin] ボタンを押す
|
O
|
関数電卓で [cos] ボタンを押す
|
T
|
関数電卓で [tan] ボタンを押す
|
M
|
関数電卓で [dms] ボタンを押す
|
P
|
関数電卓でパイ ボタンを押す
|
V
|
関数電卓で [F-E] ボタンを押す
|
X
|
関数電卓で [Exp] ボタンを押す
|
Q
|
関数電卓で [x^2] ボタンを押す
|
Y
|
関数電卓で [x^y] ボタンを押す
|
#
|
関数電卓で [x^3] ボタンを押す
|
L
|
関数電卓で [log] ボタンを押す
|
!
|
関数電卓で [n!] ボタンを押す
|
Ctrl + Y
|
関数電卓で [y√x] ボタンを押す
|
Ctrl + B
|
関数電卓で [3√x] ボタンを押す
|
Ctrl + G
|
関数電卓で [10x] ボタンを押す
|
F5
|
プログラマ電卓で [16 進] を選択する
|
F6
|
プログラマ電卓で [10 進] を選択する
|
F7
|
プログラマ電卓で [8 進] を選択する
|
F8
|
プログラマ電卓で [2 進] を選択する
|
F12
|
プログラマ電卓で [Qword] を選択する
|
F2
|
プログラマ電卓で [Dword] を選択する
|
F3
|
プログラマ電卓で [Word] を選択する
|
F4
|
プログラマ電卓で [Byte] を選択する
|
K
|
プログラマ電卓で [RoR] ボタンを押す
|
J
|
プログラマ電卓で [RoL] ボタンを押す
|
<
|
プログラマ電卓で [Lsh] ボタンを押す
|
>
|
プログラマ電卓で [Rsh] ボタンを押す
|
%
|
プログラマ電卓で [Mod] ボタンを押す
|
(
|
プログラマ電卓で [(] ボタンを押す
|
)
|
プログラマ電卓で [)] ボタンを押す
|
|
|
プログラマ電卓で [Or] ボタンを押す
|
^
|
プログラマ電卓で [Xor] ボタンを押す
|
~
|
プログラマ電卓で [Not] ボタンを押す
|
&
|
プログラマ電卓で [And] ボタンを押す
|
A ~ F
|
プログラマ電卓で [A] ~ [F]
ボタンを押す
|
Space
|
プログラマ電卓でビット値を切り替える
|
A
|
統計電卓で平均ボタンを押す
|
Ctrl + A
|
統計電卓で平方平均ボタンを押す
|
S
|
統計電卓で合計ボタンを押す
|
Ctrl + S
|
統計電卓で平方和ボタンを押す
|
T
|
統計電卓で標準偏差ボタンを押す
|
Ctrl + T
|
統計電卓で標準偏差の逆関数ボタンを押す
|
D
|
統計電卓ですべてクリアボタンを押す
|
Windows Journal のショートカット キー
Windows Journal を操作するショートカット
キーを、下記の表に示します。
押すキー
|
目的
|
---|---|
Ctrl + N
|
新しいノートを開始する
|
Ctrl + O
|
最近使用したノートを開く
|
Ctrl + S
|
ノートの変更内容を保存する
|
Ctrl + Shift + V
|
ノートを特定のフォルダーに移動する
|
Ctrl + P
|
ノートを印刷する
|
Alt + F4
|
ノートおよび Journal ウィンドウを閉じる
|
Ctrl + Z
|
変更を元に戻す
|
Ctrl + Y
|
変更をやり直す
|
Ctrl + A
|
ページ上のすべての項目を選択する
|
Ctrl + X
|
選択範囲を切り取る
|
Ctrl + C
|
選択範囲をクリップボードにコピーする
|
Ctrl + V
|
選択範囲をクリップボードから貼り付ける
|
Esc
|
範囲選択を取り消す
|
Del
|
選択範囲を削除する
|
Ctrl + F
|
基本の検索を開始する
|
Ctrl + G
|
ページに移動する
|
F5
|
検索結果を最新の情報に更新する
|
F5
|
ノートの一覧を最新の情報に更新する
|
F6
|
ノートの一覧とノートを切り替える
|
Ctrl + Shift + C
|
ノートの一覧の列ヘッダーのショートカット メニューを表示する
|
F11
|
ノートを全画面表示モードにする
|
F1
|
Journal のヘルプを開く
|
Windows ヘルプ ビューアーのショートカット キー
ヘルプ ビューアーを操作するショートカット キーを、下記の表に示します。
押すキー
|
目的
|
---|---|
Alt + C
|
目次を表示する
|
Alt + N
|
[接続の設定] メニューを表示する
|
F10
|
[オプション] メニューを表示する
|
Alt + ←
|
前に表示したトピックに戻る
|
Alt + →
|
(前に表示した) 次のトピックに進む
|
Alt + A
|
カスタマー サポート ページを表示する
|
Alt + Home
|
[ヘルプとサポート] のホーム ページを表示する
|
Home
|
トピックの先頭に移動する
|
End
|
トピックの末尾に移動する
|
Ctrl + F
|
現在のトピック内を検索する
|
Ctrl + P
|
トピックを印刷する
|
F3
|
カーソルを検索ボックスに移動する
|
登録:
投稿 (Atom)