C言語で開発(XC8)

2013/12/4


XC8

mplabX上でC言語を試す。
ターゲットはPIC16F648A、シミュレータとロジックアナライザで動作確認をする。
C言語の文法を少しくらい知っていてもPICのプログラムは書けない。とにかく「PIC16F627A/628A/648A Data Sheet」を熟読する。

Source

最初にPIC16F648Aに関する設定を記述する。DataSheet中の"14.1 Configuration Bits"(p98)に詳細が記載されている。
/* 
 * File:   main.c
 * Author: webmaster
 *
 * Created on 2013/12/04, 14:24
 */

#include <stdio.h>
#include <stdlib.h>
#include <xc.h>

// CONFIG
#pragma config FOSC = INTOSCIO  // Oscillator Selection bits (INTOSC oscillator: I/O function on RA6/OSC2/CLKOUT pin, I/O function on RA7/OSC1/CLKIN)
#pragma config WDTE = OFF       // Watchdog Timer Enable bit (WDT disabled)
#pragma config PWRTE = ON       // Power-up Timer Enable bit (PWRT enabled)
#pragma config MCLRE = OFF      // RA5/MCLR/VPP Pin Function Select bit (RA5/MCLR/VPP pin function is digital input, MCLR internally tied to VDD)
#pragma config BOREN = ON       // Brown-out Detect Enable bit (BOD enabled)
#pragma config LVP = OFF        // Low-Voltage Programming Enable bit (RB4/PGM pin has digital I/O function, HV on MCLR must be used for programming)
#pragma config CPD = OFF        // Data EE Memory Code Protection bit (Data memory code protection off)
#pragma config CP = OFF         // Flash Program Memory Code Protection bit (Code protection off)

#define _XTAL_FREQ 4e6  //Fosc=4[MHz]

int main(int argc, char** argv) {
    PORTA=0x00;
    TRISA=0x0;
    while(1){
        PORTA=0x55;
        __delay_ms(1);
        PORTA=0xAA;
	__delay(10);
    }
    return (EXIT_SUCCESS);
}

ロジックアナライザ

  1. メニューバーから[Window]-[Simulator]-[Analyzer]を選び、ロジックアナライザを起動する。
    mplabx12

  2. ロジックアナライザの設定を行う。
    ロジックアナライザ画面からmplabx13をクリックし、表示するピンを指定する。
    Available PinからRA1,RA0を選び、Selected Pin(s)に追加する。
    mplabx14

  3. メニューから[Debug]-[Discreate Debugger Operation]-[Launch Debugger]でデバッガを起動し、1ステップづつ実行するとロジックアナライザに信号が描画される。
    横軸の目盛はクロック数(ステート数)であることに注意する。
    mplabx11

  4. しばらくはLowが続く、そこそこに実行するとスパイク状の信号が描画される。
    mplabx10