1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

C-Firstボードをe2 studioのGCCで割り込みを使ってみる

Posted at

C-Firstボードの割り込みをe2 studioのGCCで使ってみたので状況を紹介します。

e2 studioでGNUのGCCを使うときの基本はこちらです。
https://qiita.com/Fuji_chan/items/0fd5bda8b4b34caa6c71

今回は割り込み処理のGCCへのポーティングの紹介です。
GCCでExecutable Projectを新規作成します。ターゲットデバイスはR5F104LE,Hardware Debugの構成はEZ(RL78)を選択します。

ポーティングしてみたのは,\03_サンプル・プログラム\第8章\リスト3_sample1_3です。
元のサンプルコードはこれです。

#include "iodefine.h"

void main(void)
{
	PM1 = 0x7F;
	OSMC |= 0x10;
	RTCEN = 1;
	ITMK = 0;
	ITMC = 0x8000 + 15000/4-1;
	__EI( );
	while( 1 )  {
	}
}

unsigned char p1;

#pragma interrupt intit(vect=INTIT)
void intit(void)
{
	P1 ^= 0x80;
	p1 = P1;
}

ポイントは2つ。割り込み許可のコードと割り込み処理関数の指定。

__EI( );
#pragma interrupt intit(vect=INTIT)

GCCでは

EI();
void INT_IT(void) __attribute__ ((interrupt));

となるので,サンプルと同じ関数構成とするなら,

#include <iodefine.h>
#include "iodefine_ext.h"

void main(void)
{
	PM1 = 0x7F;
	OSMC |= 0x10;
	RTCEN = 1;
	ITMK = 0;
	ITMC = 0x8000 + 15000/4-1;
	EI( );
	while( 1 )  {
	}
}

unsigned char p1;

#include "interrupt_handlers.h"
void INT_IT (void)
{
	P1 ^= 0x80;
	p1 = P1;
}

inhandler.cファイルのINT_IT関数はデフォルトで生成されているので,コメントアウトしておきます。

/*
 * INT_IT (0x38)
 */
//void INT_IT (void) { }

以上で完成。

image001.png

ビルドして実行するとLEDが設定した時間で点滅します。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?