忍者ブログ

[PR]

×

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

2025/05/22

dsPIC33CH Curiosity Development Board(DACモジュールの使い方):

dsPIC33CHシリーズには12bitD-Aコンバータがマスターコアに1ch、スレーブコアに3ch搭載されています。D-Aコンバータは基本的に内部コンパレータの比較値として使用しますが、その中で1chだけマイコンのピンに出力可能です。さらにその4chのD-Aコンバータにはそれぞれスロープ補償モジュールが搭載されています。このスロープ補償はスイッチング電源をピーク電流モードでPWMDutyが50%以上の場合に発生する低調波発振という現象を防止してくれます。
このスロープモジュールはDACモジュールに対し加算もしくは減算の制御を行い、DACの出力を自動で可変する機能を有しています。
今回は三角波出力モードとして動作させます。

ハードウェア構成

周辺モジュールはSLP1とDAC1を使用します。三角波出力モードの場合、SLP1モジュールがDACxHとDACxL間を交互に自動でスイープしてくれるため、ソフトウェアの介在は必要ありません。 
 

  ソースコード

コンフィグレーション設定やクロック設定の関数に関して記述を省略していますが「dsPIC33CH Curiosity Development Board(準備編)」と同じです。

/*----------------------------------------------------------------------------------*/
/*【INC】インクルードファイル*/
/*----------------------------------------------------------------------------------*/
#include <stdio.h>
#include <stdlib.h>
#include <xc.h>
/*----------------------------------------------------------------------------------*/
/* Main関数 */
/*----------------------------------------------------------------------------------*/
int main(int argc, char** argv) 
{
    /*-----------------------------------------------------------------------------*/
    /* クロック初期化*/
    /*-----------------------------------------------------------------------------*/
        vds_Main_Init_Clock_Register();     /* クロック初期化 */
    /*-----------------------------------------------------------------------------*/
    /* GPIO初期化*/
    /*-----------------------------------------------------------------------------*/
        ANSELBbits.ANSELB2 = 1u;            /* RB2ピンはアナログピン(DACOUT1) */
    /*-----------------------------------------------------------------------------*/
    /* CMP初期化*/
    /*-----------------------------------------------------------------------------*/
        DACCTRL1L = 0x0000u;
        DACCTRL1Lbits.CLKSEL = 0u;      /* DACクロック源( 0 = AFVCO/2 = 500MHz) */
        DACCTRL1Lbits.CLKDIV = 0u;      /* DACクロックディバイダ (0 = 1/1) */
        DACCTRL1Lbits.FCLKDIV = 7u;     /*コンパレータフィルタクロックディバイダ*/
        DACCTRL1Lbits.DACON = 1u;       /* モジュール有効化(0 = 無効,1 = 有効) */
        DACCTRL2H = 0x001Au;            /* 移行開始からの時間 */
        DACCTRL2L = 0x0055u;            /* 遷移モードの継続時間 */
        DAC1CONH = 0x0000u;
       
        DAC1CONL = 0x0000u;
        DAC1CONLbits.INSEL = 0u;        /* コンパレータソース (0 = CMPxA input pin) */
        DAC1CONLbits.HYSSEL = 1u;       /* コンパレータヒステリシス (1 = 15mV) */
        DAC1CONLbits.DACOEN = 1u;       /* DAC外部出力 (0 = 無効,1 = 有効) */

        DAC1DATH = 0x07FFu;                 /* コンパレータ比較値上限 */
        DAC1DATL = 0x0300u;                 /* コンパレータ比較値下限 */
    /*-----------------------------------------------------------------------------*/
    /* SLOPE初期化*/
    /*-----------------------------------------------------------------------------*/
        SLP1CONH = 0x0000u;
        SLP1CONHbits.TWME = 1u;             /* 三角波出力モード有効 */
        SLP1CONL = 0x0000u;
        SLP1DAT = 0x0001u;                  /* スロープ速度 */
    /*-----------------------------------------------------------------------------*/
    /* DAC1の有効化*/
    /*-----------------------------------------------------------------------------*/
        DAC1CONLbits.DACEN = 1u;         /* DAC1の有効化 */
    /*-----------------------------------------------------------------------------*/
    /* メインルーチン*/
    /*-----------------------------------------------------------------------------*/
        while(1)
        {
            /*---------------------------------------------------------------------*/
            /*【****】何もなし*/
            /*---------------------------------------------------------------------*/ 
        }
}

結果

動作を確認する為に、DAC1DATH(上限値),DAC1DATL(下限値),SLP1DAT(速度)を変更し実験しました。
DACxDATHとDACxDATL、SLPxDATの関係式は[SLPxDAT=((DACxDATH - DACxDATL)・16)/(SlopeSpeed / (2/500MHz))]の式で表されますので計算通りの波形が出力されています。

    
DAC1DATH = 0x0FFFu/DAC1DATL = 0x0000u/SLP1DAT = 0x0001u


DAC1DATH = 0x0FFFu/DAC1DATL = 0x0000u/ SLP1DAT = 0x0010u

  
DAC1DATH = 0x07FFu/ DAC1DATL = 0x0300u/SLP1DAT = 0x0001u;

PR

2020/08/17 dsPIC33C Comment(0)

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