RCサーボが何故か片方向にしか動かないバグがあったが、
単純にPWMのH/Lアクティブが間違っていただけだった。
まあ、自分の知ってる範囲のバグで、すぐ直せて良かった(・∀・)ノ
ここにソースを貼り付けていって良いものか悩むけど、
誰のソースも参考にしてないから問題ないかな…?
-----------------------------------------------------
#include"sfr_r8m12a.h"
#define pwm_cycle 50000 // 20ms周期
#define pwm_max 5000 // PWM最大値
#define pwm_min 2500 // PWM最大値
void init(void);
void wait(unsigned int ms);
void main(void);
void init(void)
{
/*************************************/
/* 変数初期化 */
/*************************************/
int j;
/*************************************/
/* システムクロック設定 */
/*************************************/
prc0 = 1; // 書き込み許可
hocoe = 1; // HOCO有効化
for(j = 0; j < 100; j++);
hscksel = 1; // HOCO選択
scksel = 1; // システムクロック:fHSCK
prc0 = 0; // 書き込み禁止
/*************************************/
// 動作確認用SW-LED */
/*************************************/
p1_0 = 1; // 電源ON時のちらつき防止
pu1_1 = 1; // SW入力端子プルアップ
pd1_0 = 1; // LED接続ポート出力設定
/*************************************/
/* servo制御用設定 */
/*************************************/
msttrc = 0; // タイマRC有効化
// 出力ポート設定
p12sel0 = 1;
p12sel1 = 0;
// タイマRC設定(PWM)
pwmb_trcmr = 1; // PWMモード選択
//pwmc_trcmr = 1;
//pwmd_trcmr = 1;
pwm2_trcmr = 1;
polb_trccr2 = 0; // 出力レベル:Lアクティブ
//polc_trccr2 = 0;
//pold_trccr2 = 0;
tob_trccr1 = 0; // 出力レベルH設定
//toc_trccr1 = 0;
//tod_trccr1 = 0;
//cks2_trccr1 = 1; // カウントソース:f32
//cks1_trccr1 = 0; // テスト用
//cks0_trccr1 = 0;
cks2_trccr1 = 0; // カウントソース:f8
cks1_trccr1 = 1; // 本番用
cks0_trccr1 = 1;
cclr_trccr1 = 1; // コンペア一致AでTRCCNTカウンタクリア
eb_trcoer = 0; // 出力許可
//ec_trcoer = 0;
//ed_trcoer = 0;
trcgra = pwm_cycle;
trcgrb = pwm_min;
//trcgrc = 0xffff;
//trcgrd = 0xffff;
cts_trcmr = 1; // タイマ動作開始
}
void wait(unsigned int ms)
{
unsigned int j, k;
for(j = 0; j < ms; j++)
{
for(k = 0; k < 1000; k++)
{
;
}
}
}
void main(void)
{
unsigned int pwm_b;
pwm_b = pwm_min;
// 初期化
init();
// 制御用ループ
while(1)
{
p1_0 = p1_1;
if(p1_1)
{
if(pwm_min < pwm_b)
{
pwm_b -= 10;
}
}
else
{
if(pwm_max > pwm_b)
{
pwm_b += 10;
}
}
trcgrb = pwm_b;
wait(10);
}
}
-----------------------------------------------------
これでも懸念点はまだまだあるけど、
とりあえず動いたことを喜びます(・∀・)ノ
