pic24fマイコンボード その2
マルツのPIC24Fマイコンボードで基本のio動作を動かしました。
まずは動きからどうぞ。
ハードは下の写真のように8個の小型ledを繋ぎました。
ボード左側のピンヘッダCN1AにPORTA,B,Cがでていますので、そこにVCCから
1Kの抵抗を介したLEDを8個つないでいます。
このマイコンボードのCN1AのPORTの配置は以下の通りですので、
それぞれにLEDを繋いでいます。
2pin:RA0 3pin:RA1 4pin:RB0 5pin:RB1 6pin:RB2 7pin:RB3
8pin:RC0 9pin:RC1
このような並びなっていますので、ソフトではRA-RCの各ポートを制御することになります。
サンプルソフトは以下の通りです。今回はAD1PCFGの設定でちょっとはまりました。
これを設定しないといくつかのIOがADC入力になっており動きません。
#include "P24FJ64GA004.h"
//config
_CONFIG2(0xF9FC);
_CONFIG1(0x3F7F);
//main loop
int main(void)
{
unsigned int i;
//Setup clock
OSCCON = 0x11C0; // FRCPLL
CLKDIV = 0x0030; // 1MIPS SETTING
//IO PORT SETTING
AD1PCFG = 0xffff; // Analog input disable //これがないといくつかのIOが動きません。
TRISA = 0x0000; // All output
TRISB = 0x0000; // All output
TRISC = 0x0000; // All output
//Loop
while(1){
for (i=0;i<8;i++) {
Set_Port(0xff - (1<<i));
Wait_time(40);
}
for (i=0;i<8;i++) {
Set_Port(0xff - (0x80 >> i));
Wait_time(40);
}
}
}
// IO PORT CONTROL
void Set_Port(unsigned int val) { //ここで8ビットデータを各ポートに振り分けます。
PORTAbits.RA0 = val & 0x0001;
PORTAbits.RA1 = (val & 0x0002)>>1;
PORTBbits.RB0 = (val & 0x0004)>>2;
PORTBbits.RB1 = (val & 0x0008)>>3;
PORTBbits.RB2 = (val & 0x0010)>>4;
PORTBbits.RB3 = (val & 0x0020)>>5;
PORTCbits.RC0 = (val & 0x0040)>>6;
PORTCbits.RC1 = (val & 0x0080)>>7;
}
// WAIT LOOP
void Wait_time(unsigned int t) {
int t0,t1;
for (t0=0;t0<t;t0++) {
for (t1=0;t1<10000;t1++) {
}
}
}
簡単なものですが、初めてのマイコンボードでLEDが動くのを見るのは
結構楽しみなものです。
とりあえず今回はここまでです。
コメント