スパイス  組み込み制御装置の受注製作

PIC32の導入
平成26年9月28日

 キャッシュ機能の設定確認
 先日までの検証でキャッシュ機能の動作が確認できました。確認の意味で、個々の設定内容とその必要性について吟味してみます。
SYSTEMConfigPerformance()関数の処理内容を再度示します。  個々の必要性を考えると となります。 
ROM上での動作に対して最低限必要な処理としては、ROMアクセス時のウエイト数設定(デフォルトでは7)とキャッシュの有効ビットのセットの二つです。これで先日の動作確認で失敗した理由も判明しました。20MHzで動作可能な設定のまま周波数を80MHzに変更したため、ROMアクセス時のウエイト数設定が0ウエイトのままでした。2にしないから暴走する筈です。ああ、単純ミス...

 これに従ってプログラムを修正します。処理中は割り込みを禁止する処理も追加してあります。
#include <xc.h>
#include "plib.h"

#pragma config FPLLMUL = MUL_20, FPLLIDIV = DIV_4, FPLLODIV = DIV_1, FWDTEN = OFF
#pragma config POSCMOD = HS, FNOSC = PRIPLL

int main(void)
{
    unsigned int status = INTDisableInterrupts();
    CHECONbits.PFMWS = 2;           //ROMへのアクセスでは2ウエイト
    //mBMXDisableDRMWaitState();    //RAMへのアクセスでは0ウエイト
    //CHECONbits.PREFEN = 3;        //プリフェッチ機能を有効化
    CheKseg0CacheOn();              //キャッシュ機能有効
    INTRestoreInterrupts(status);
    //SYSTEMConfigPerformance(80000000);  //この方が簡単だが

    TRISD = 0;
    LATD=0;
    for(;;){
        LATD=0xffff;
        LATD=0;
    }
    return 0;
}
 結果は期待通り80MHzで動作しています。


目次へ  前へ  次へ