忍者ブログ
趣味でやってるラジコン二足の製作日記
Posted by - 2024.05.18,Sat
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

Posted by TryNamo - 2009.04.24,Fri
#include "iodefine.h"

void main(void)
{
while(1){
////////////////////////////////////////////////////////
//SH7125はデフォルトで省電力モードが設定されているので//
//使いたいクロックを解除しよう            //
////////////////////////////////////////////////////////

STB.CR4.BIT._MTU2=0; //MTU2へのクロック供給(スタンバイモード解除)
//STB.CR4.BIT._CMT=0; //CMTへのクロック供給(スタンバイモード解除)

/*---- IO設定 ----*/
PFC.PECRL2.WORD=0x0055; //ポートEをMTUに設定
PFC.PEIORL.BYTE.L=0xFF; //ポートEを出力に設定

///////////////////////////////////////////////
//TCRの設定はカウンタを停止してから設定するよ//
///////////////////////////////////////////////

MTU2.TSTR.BYTE=0; //チャンネル0~4のTCRTを停止(カウンタ停止)

/*---- タイマ・カウント設定 ----*/
MTU20.TCR.BIT.TPSC=1; //クロック設定 Φ/4(MTU20はMTU2の0チャンネル言うこと)
MTU20.TCR.BIT.CCLR=3; //同期クリア

MTU21.TCR.BIT.TPSC=1; //クロック設定 Φ/4(MTU20はMTU2の0チャンネル言うこと)
MTU21.TCR.BIT.CCLR=1; //TGRAコンペアマッチでTCNTクリア

MTU2.TSYR.BYTE=3; //チャンネル0,1同期動作

MTU20.TIOR.BIT.IOA=2; //TIOC0A初期値出力0V,コンペアマッチで5V
MTU20.TIOR.BIT.IOB=2; //TIOC0B初期値出力0V,コンペアマッチで5V
MTU20.TIOR.BIT.IOC=2; //TIOC0C初期値出力0V,コンペアマッチで5V
MTU20.TIOR.BIT.IOD=2; //TIOC0D初期値出力0V,コンペアマッチで5V

MTU21.TGRA=5000; //パルスの周期

MTU20.TGRA=1000; //パルスのOFF時間
MTU20.TGRB=2000; //パルスのOFF時間
MTU20.TGRC=3000; //パルスのOFF時間
MTU20.TGRD=4000; //パルスのOFF時間

MTU20.TMDR.BIT.MD=3; //PWMモード2
MTU21.TMDR.BIT.MD=3; //PWMモード2

MTU2.TSTR.BIT.CST0=1; //カウントスタート
MTU2.TSTR.BIT.CST1=1; //カウントスタート
}
}


1、省電力モード解除
2、IO設定
3、カウントストップ
4、MTUの設定
5、カウントスタート
で動くよね普通。
PR
Comments
無題
参考までに・・・・
resetprg.c と intprg.c の変更も忘れずに!!

/*PWM制御*/


#include "iodefine.h"
int servo,i;


void initIO(void)
{
PFC.PECRL1.BIT.PE0MD = 0x01; //PECRQR1(ポートEコントロールレジスタL1) PE1/TIOC08/RXD0端子の機能の選択

PFC.PEIORL.BIT.B0 = 1; //PEIORL(ポートE・IOレジスタL)出力端子に設定
//PFC.PEIORL.BIT.B1 = 1; //出力端子に設定
//PFC.PEIORL.BIT.B2 = 1; //出力端子に設定
//PFC.PEIORL.BIT.B4 = 1; //出力端子に設定
PE.DRL.BIT.B0 = 1; //1を出力
//PE.DRL.BIT.B4 = 1; //1を出力
//PFC.PEIORL.BIT.B6 = 1; //出力端子に設定
}

void initMTU(void)
{
STB.CR4.BIT._MTU2 = 0 ;//MTU2は動作
MTU2.TSTR.BYTE = 0x00; //TCNT全カウンタストップ
MTU23.TCR.BIT.TPSC = 0x02;//MPφ/16でカウント チャネル0
//MTU20.TCR.BIT.CKEG = 0; //立ち上がりエッジでカウント
MTU23.TCR.BIT.CCLR = 1;//TGRAのコンペアマッチ/インプットキャプチャでTCNTクリア
MTU23.TIOR.BIT.IOA = 0x02;//初期出力は0出力 コンペアマッチで1出力
MTU23.TIOR.BIT.IOB = 0x05;//初期出力は1出力 コンペアマッチで0出力
MTU23.TCNT = 0x0000;
MTU23.TGRA = 31250-2344;
MTU23.TGRB = 2344;
MTU23.TMDR.BIT.MD = 0x02;//PWMモード1
PFC.PECRL3.BIT.PE8MD = 0x01; //PECRQR1(ポートEコントロールレジスタL1) PE1/TIOC08/RXD0端子の機能の選択
PFC.PEIORL.BIT.B8 = 1; //PEIORL(ポートE・IOレジスタL)出力端子に設定
PE.DRL.BIT.B8 = 1; //1を出力
INTC.IPRE.BIT._MTU23G = 15;//割り込み優先順位
INTC.IPRE.BIT._MTU23C = 15;//割り込み優先順位
MTU23.TIER.BIT.TGIEA = 1;//TGFAビットによる割り込み許可
MTU2.TSTR.BIT.CST3 = 1;//TCNT_0はカウント動作
}

void int_MTU23(void)
{
MTU23.TSR.BIT.TGFA = 0;//フラグクリア
}

void wait(int x)
{
while(x--);
}
void main(void)
{
initIO();
initMTU();

MTU23.TGRB=2334;
wait(10000);

while(1)
{
for(i=0 ; i<90 ; i++)
{
MTU23.TGRB +=15;
wait(5000);
}
wait(5000000);
for(i=0 ; i<180 ; i++)
{
MTU23.TGRB -=15;
wait(5000);
}
wait(5000000);
for(i=0 ; i<90 ; i++)
{
MTU23.TGRB +=15;
wait(5000);
}
//wait(5000000);
}

}
Posted by りゅー隊長 - 2009.04.24,Fri 15:55:06 / Edit
Post a Comment
Name :
Title :
E-mail :
URL :
Comments :
Pass :   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
TrackBack URL
TrackBacks
プロフィール
HN:
TryNamo
年齢:
-98
性別:
男性
誕生日:
2123/04/08
職業:
大学生
趣味:
映画
自己紹介:
知能的な移動ロボットに興味を持っています。
今年は卒論を中心に、忙しい一年になれるようになりたいです。
カレンダー
04 2024/05 06
S M T W T F S
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
バーコード
ブログ内検索
カウンター
Template by mavericyard*
Powered by "Samurai Factory"
忍者ブログ [PR]