忍者ブログ

[PR]

×

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

2025/05/23

dsPIC33CH Curiosity Development Board(Lチカ編)

まずは恒例のLチカから動かして行きます。
とりあえず最初はMasterのみ動作させます。

ハードウェア


dsPIC33CH Curiosity Development Boardには赤色のLEDが2つ備わっており、 回路図によるとRE0とRE1に接続されていますので、 今回はRE0をMaster、RE1をSlaveに割り当てます。

ソースコード (#1)
LATビットをif文で判断して点滅

int main(int argc, char** argv) 
{
   /*------------------------------------------------------------------------------------------*/
   /*【****】初期化*/
   /*------------------------------------------------------------------------------------------*/
      vds_Main_Init_Clock_Register();  //Clock設定
      TRISEbits.TRISE0 = 0u;
   /*------------------------------------------------------------------------------------------*/
   /*【****】メインルーチン*/
   /*------------------------------------------------------------------------------------------*/
       while(1)
       {
           if ( LATEbits.LATE0 == 1)
           {
               LATEbits.LATE0 = 0;
           }
           else
           {
               LATEbits.LATE0 = 1;
           }
       }
}

結果(#1)

ON時間が98nsec,OFF時間が135nsecとなりました。
if文の分岐命令によりONとOFFで実行時間の差が出ています。



ソースコード (#2)
LATビットをビット反転して点滅

int main(int argc, char** argv) 
{
  
    /*------------------------------------------------------------------------------------------*/
    /*【****】初期化*/
    /*------------------------------------------------------------------------------------------*/
      vdg_Peripheral_Init();  //Clock設定
      TRISEbits.TRISE0 = 0u;
    /*------------------------------------------------------------------------------------------*/
    /*【****】メインルーチン*/
    /*------------------------------------------------------------------------------------------*/
        while(1)
        {
            LATEbits.LATE0 = ~LATEbits.LATE0;
        }
        return (EXIT_SUCCESS);
}

結果(#2)

ON時間が120nsec,OFF時間が124nsecとなりました。


ソースコード (#3)
LATビットをビット加算して点滅(非推奨)

int main(int argc, char** argv) 
{
  
    /*------------------------------------------------------------------------------------------*/
    /*【****】初期化*/
    /*------------------------------------------------------------------------------------------*/
      vdg_Peripheral_Init();  //Clock設定
      TRISEbits.TRISE0 = 0u;
    /*------------------------------------------------------------------------------------------*/
    /*【****】メインルーチン*/
    /*------------------------------------------------------------------------------------------*/
        while(1)
        {
            LATEbits.LATE0 ++;
        }
        return (EXIT_SUCCESS);
}

結果(#3)

ON時間が120nsec,OFF時間が124nsecとなりました。
アセンブラリストを見ると面白い事に結果(#2)と同じコードが生成されていました。



ソースコード (#4)
組み込み関数でビット反転して点滅

int main(int argc, char** argv) 
{
  
    /*------------------------------------------------------------------------------------------*/
    /*【****】初期化*/
    /*------------------------------------------------------------------------------------------*/
      vdg_Peripheral_Init();  //Clock設定
      TRISEbits.TRISE0 = 0u;
    /*------------------------------------------------------------------------------------------*/
    /*【****】メインルーチン*/
    /*------------------------------------------------------------------------------------------*/
        while(1)
        {
            __builtin_btg(&LATE,0);

        }
        return (EXIT_SUCCESS);
}

結果(#4)

ON時間が64nsec,OFF時間が68nsecとなり、その他の2倍の速度で
ビットトグルが出来ています。
PR

2019/04/22 dsPIC33C Comment(0)

COMMENT

COMMENT FORM

NAME
MAIL
WEB
TITLE
COMMENT
PASSWORD

プロフィール
 
HN:
ぴくお
性別:
非公開
 
 
カテゴリー
 
 
 
最新記事
 
(10/03)
(09/05)
(08/23)
(08/17)
(08/16)
 
 
RSS
 
 
 
リンク
 
 
 
免責事項
当サイトに掲載の回路図やプログラム等は動作する事を期待して掲載しておりますが、その動作の保証、性能の保証は致しません。 また掲載されているソフトウェアの使用により生じたいかなる損害に関しまして作者は一切責任を負いません。