[PR]
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
dsPIC33CHシリーズはデュアルコアになっていますので、これまでの
PIC/dsPIC/PIC32シリーズとは大きく異なる点があります。
まずスレーブ側はFlashメモリではなく、Program RAM Memory(PRAM)という
揮発性のプログラム領域を有しており、このPRAM領域は起動した時には
何もプログラムは書かれておりません。
スレーブ側のプログラムはマスター側のフラッシュ領域に書きこまれ、
マスター側からスレーブ側に転送を指示する事でスレーブ側が動作する
構造になっています
マスターソースコード
#include <stdio.h>
#include <stdlib.h>
#include <xc.h>
#include <libpic30.h>
#include "config.h"
#include "../../../dsPIC33CH512MP508S1/../dist/default/production/Slave.h"
int main(int argc, char** argv)
{
/*------------------------------------------------------------------------------------------*/
/*【****】初期化*/
/*------------------------------------------------------------------------------------------*/
vds_Main_Init_Clock_Register(); //Clock設定
TRISEbits.TRISE0 = 0u;
_program_slave(1, 0, Slave); /*スレーブへの書き込み*/
_start_slave(); /*スレーブ開始*/
/*------------------------------------------------------------------------------------------*/
/*【****】メインルーチン*/
/*------------------------------------------------------------------------------------------*/
while(1)
{
if ( LATEbits.LATE0 == 1)
{
LATEbits.LATE0 = 0;
}
else
{
LATEbits.LATE0 = 1;
}
}
}
#include "../../../dsPIC33CH512MP508S1/../dist/default/production/Slave.h"
_program_slave(1, 0, Slave); /*スレーブへの書き込み*/
_start_slave(); /*スレーブ開始*/
#include "../../../dsPIC33CH512MP508S1/../dist/default/production/Slave.h"
#include <stdio.h>
#include <stdlib.h>
#include <xc.h>
#include "PeripheralDriver/peripheral_init.h"
#include "board.h"
int main(int argc, char** argv)
{
/*------------------------------------------------------------------------------------------*/
/*【****】初期化*/
/*------------------------------------------------------------------------------------------*/
vdg_Peripheral_Init(); //Clock設定
TRISEbits.TRISE1 = 0u;
/*------------------------------------------------------------------------------------------*/
/*【****】メインルーチン*/
/*------------------------------------------------------------------------------------------*/
while(1)
{
if ( LATEbits.LATE1 == 1)
{
LATEbits.LATE1 = 0;
}
else
{
LATEbits.LATE1 = 1;
}
}
}