[H8-ML(4334)] Re:Message for h8
From: 石山 峰之 <m_ishi8@xxxxxxxxxxx>
Date: 2004年01月21日(水)15時42分11秒
> これだけではだめです。マニュアルの頁10-47に示される手
順
> で該当するレジスタを全て設定してください。

プログラムをまた作りました。ここにまた載せたいと思います
。

#include <3048f.h>
#include <machine.h>

#pragma interrupt(intimia1)
extern unsigned int cnt0;   /* 信号のHighの時間を記憶 */

void main(void)
{
    cnt0  = 0;                  /* cnt0初期化 */
    PA.DDR = 0x00;              /* Port-Aは入力設定 */
    PB.DDR = 0xff;             /* Port-Bは出力設定 */
    
    ITU.TSTR.BYTE = 0x00;   /* ひとまず全タイマー停止 */
    ITU.TSNC.BYTE = 0x00;   /* 全タイマーは独立動作 */
    ITU.TMDR.BYTE = 0x00;   /* ITUはすべて通常動作 */
    ITU.TFCR.BYTE = 0x00;   /* ITU3,4およびGRA3,4,GRB3,4
は通常動作 */
    ITU.TOER.BYTE = 0x00;      /* ITU3,4による端子出力は
禁止 */
    ITU.TOCR.BYTE = 0xff;      /* 外部トリガ禁止 */
    ITU1.TCR.BYTE = 0x83;      /*
クロックの1/8で動作。TCNT
のクリア禁止 */
    ITU1.TIOR.BYTE = 0xdf;     /* 両エッジでGRAへインフ
゜ットキャプチャ */
    ITU1.TIER.BYTE = 0x03;     /* IMFA,IMFBによる割り込
み許可 OVIE禁止 */
    ITU1.TSR.BYTE = 0x00;      /* 全割り込みフラグクリア
*/
    ITU1.TCNT = 0x00;          /* カウントクリア */
    ITU1.GRA = 0;              /* GRA初期値設定 */
    
  
    set_imask_ccr(0);          /* 割り込みマスクビットを
クリアします。*/
     
    ITU.TSTR.BIT.STR1 = 1;     /* ITU1スタート */
       
    ITU.TMDR.BIT.PWM0 = 1;     /* ITU0 PWMモード */
    ITU0.TCR.BYTE = 0x23;      /* クロックの1/8で動作。GRA
コンペアマッチ */
    ITU0.GRA = cnt0;           /* GRAの値はcnt0 */
    ITU.TSTR.BIT.STR0 = 0;     /* カウント停止状態 */     
             
         
    ITU.TSTR.BIT.STR0 = 0;     /* ITU0スタート */
       
    while(1){                                    
     PB.DR.BYTE=PA.DR.BYTE;               
            }                                    
void intimia1(void){                                      
                    if(PA.DR.BIT.B4){      /* 
立ち上がりエッジの場合 */
      ITU1.TCNT = 0x00;    /* カウントをクリア */
                     }                                   
else{         
      /* 立ち下がりエッジの場合 */
           cnt0 = ITU1.GRA;      /* 値をcnt0に記憶 */
         }                                        
  ITU1.TSR.BIT.IMFA=0;   /* 割り込みフラグ解除 */
}

色々ご指摘を頂きましたが、ITU1へADXLの出力をインプットし
、PWMモードにしたITU0でそれを出力。パルス幅はcnt0という
ようにしています。メイン関数ではITU0の設定が全て終わった
時点でITU1の設定をしました。
このプログラムで果たして出力をパルス幅で出せるのでしょう
か?またご指摘お願いします。


__________________________________________________
Do You Yahoo!?
Yahoo! BB is Broadband by Yahoo!
http://bb.yahoo.co.jp/

スレッド概略
[4293(R)](起点)
 └[4333(U)]
   └[表示中]
     ├[4336(1)]
     └[4339(2)]


投稿順に移動
[←前の記事へ(P)]
[→次の記事へ(N)]


リスト表示へ
[このスレッド(T)]
[本記事の前後(L)]