Renesas Community
Search Community
User
Join or sign in
Site
Search Community
User
Renesas Engineering Community
FAQ
HELP
More
Cancel
Forums & Groups
English Community
中文社区(Chinese Community)
More
Cancel
かふぇルネ
forums-groups
Microcontrollers and Microprocessors
Other MCU/MPU Products
R8C/Tiny
More
Cancel
R8C/Tiny
R8C/Tiny Forum
R8C/1x のPD0プロテクションに関して
Home
Forum
Tags
More
Cancel
New
Replies
4 replies
Subscribers
442 subscribers
Views
1695 views
Users
0 members are here
PD0
PD0プロテクション
R8C
ところPRC2ビット
書き込み
Options
Share
More
Cancel
Related
R8C/1x のPD0プロテクションに関して
TOYKEY
over 12 years ago
こんにちは。
現在R8C/1xを使っているのですが、
少々問題が発生しています。
電源投入時にごく稀に(30回に1回ぐらい)
PD0の設定に失敗します。
PD0設定失敗の原因はプロテクトにあるのではないかと
プログラムを確認したところ
PRC2ビットによる書き込み許可と
PD0の設定は連続しており、マニュアル通りの設定手順を守っています。
なおかつ、
PD0の設定より以前にIフラグにより割り込みを禁止しています。
PRC2ビットは任意の番地への書き込みで
禁止状態に戻るとありますが、
何か別の原因で禁止状態に戻ってしまうということが
あるのでしょうか?
どうかお知恵をお貸しいただければと思います。
Parents
NAKA
over 12 years ago
こんにちは、NAKAといいます。
以前、R8C21238でPD0の設定を行いましたが、不具合はで
たことはありませんでした。
もし、不具合の可能性がありましたら、こちらの掲示板でも
展開していただければと思います。
以下、以前の設定です。
/************************************
//関数名:fn_Init_Port(void)
//動作
:ポートの初期化
//引数
:
//作成
:NAKA
07.01.26
// *********************************/
void fn_Init_Port(void)
{
pd2_0 = 1; //LED_B用PortをOUTにセット
pd2_1 = 1; //LED_G用PortをOUTにセット
pd2_5 = 1; //LED_1用PortをOUTにセット
pd2_4 = 1; //LED_2用PortをOUTにセット
pd2_3 = 1; //LED_3用PortをOUTにセット
pd6_3 = 0; //SW1用PortをINにセット
pd1_3 = 1; //RS233デバイスのシャットダウン端子PortをOUTにセット
prc2 = 1; //プロテクト2の解除
pd0_7 = 1; //CANデバイスのシャットダウン端子PortをOUTにセット
prc2 = 0; //プロテクト2の実行
pd4_5 = 0; //INT0 INPUT
pd1_7 = 0; //INT1 INPUT
pd6_6 = 0; //INT2 INPUT
pd6_7 = 0; //INT3 INPUT
}
/**************************************
//関数名:fn_Init_Device(void)
//動作
:各種デバイスの初期化
//引数
:
//作成
:NAKA
07.01.26
// ***********************************/
void fn_Init_Device(void)
{
fn_Init_Clock(); //システムクロック初期設定
fn_Init_Port(); //ポート初期設定
fn_Init_SCI0(); //シリアル0初期設定 クロック同期
fn_Init_SCI1(); //シリアル1初期設定
fn_Init_CAN(); //CAN初期設定
fn_Init_TRD0(); //タイマーRD(0ch)初期設定(1msorPWM)
fn_Init_TRD1(); //タイマーRD(1ch)初期設定(2msorPWM)
fn_Init_TRA(); //タイマーRA初期設定(25ms)
fn_Init_TRB(); //タイマーRB初期設定(25ms)
fn_Init_TRE(); //タイマーRE初期設定(0.8ms)
fn_Init_AD(); //AD変換器の初期化
fn_Init_INT0(); //外部割込み0の初期化
fn_Init_INT1(); //外部割込み1の初期化
fn_Init_SSU(); //SSUの初期化
}
**************************************/
/*************************************/
/*
メインルーチン
*/
/*************************************/
/*************************************/
void main(void)
{
unsigned short
i; //汎用カウンター
unsigned short
j; //汎用カウンター
//初期設定//
asm(\”FCLR I\”); //割り込み禁止
fn_Init_Device(); //機能デバイスのイニシャライズ
TR_Device_EN(ON); //通信デバイスのハードイネーブル
asm(\”LDIPL #0\”); //割り込み許可レベルの設定
asm(\”FSET I\”); //割り込み許可
//初期値設定//
i = 0; //汎用カウンタクリア
j = 0; //汎用カウンタクリア
while(1)
{
Cancel
Up
0
Down
Reply
Cancel
Reply
NAKA
over 12 years ago
こんにちは、NAKAといいます。
以前、R8C21238でPD0の設定を行いましたが、不具合はで
たことはありませんでした。
もし、不具合の可能性がありましたら、こちらの掲示板でも
展開していただければと思います。
以下、以前の設定です。
/************************************
//関数名:fn_Init_Port(void)
//動作
:ポートの初期化
//引数
:
//作成
:NAKA
07.01.26
// *********************************/
void fn_Init_Port(void)
{
pd2_0 = 1; //LED_B用PortをOUTにセット
pd2_1 = 1; //LED_G用PortをOUTにセット
pd2_5 = 1; //LED_1用PortをOUTにセット
pd2_4 = 1; //LED_2用PortをOUTにセット
pd2_3 = 1; //LED_3用PortをOUTにセット
pd6_3 = 0; //SW1用PortをINにセット
pd1_3 = 1; //RS233デバイスのシャットダウン端子PortをOUTにセット
prc2 = 1; //プロテクト2の解除
pd0_7 = 1; //CANデバイスのシャットダウン端子PortをOUTにセット
prc2 = 0; //プロテクト2の実行
pd4_5 = 0; //INT0 INPUT
pd1_7 = 0; //INT1 INPUT
pd6_6 = 0; //INT2 INPUT
pd6_7 = 0; //INT3 INPUT
}
/**************************************
//関数名:fn_Init_Device(void)
//動作
:各種デバイスの初期化
//引数
:
//作成
:NAKA
07.01.26
// ***********************************/
void fn_Init_Device(void)
{
fn_Init_Clock(); //システムクロック初期設定
fn_Init_Port(); //ポート初期設定
fn_Init_SCI0(); //シリアル0初期設定 クロック同期
fn_Init_SCI1(); //シリアル1初期設定
fn_Init_CAN(); //CAN初期設定
fn_Init_TRD0(); //タイマーRD(0ch)初期設定(1msorPWM)
fn_Init_TRD1(); //タイマーRD(1ch)初期設定(2msorPWM)
fn_Init_TRA(); //タイマーRA初期設定(25ms)
fn_Init_TRB(); //タイマーRB初期設定(25ms)
fn_Init_TRE(); //タイマーRE初期設定(0.8ms)
fn_Init_AD(); //AD変換器の初期化
fn_Init_INT0(); //外部割込み0の初期化
fn_Init_INT1(); //外部割込み1の初期化
fn_Init_SSU(); //SSUの初期化
}
**************************************/
/*************************************/
/*
メインルーチン
*/
/*************************************/
/*************************************/
void main(void)
{
unsigned short
i; //汎用カウンター
unsigned short
j; //汎用カウンター
//初期設定//
asm(\”FCLR I\”); //割り込み禁止
fn_Init_Device(); //機能デバイスのイニシャライズ
TR_Device_EN(ON); //通信デバイスのハードイネーブル
asm(\”LDIPL #0\”); //割り込み許可レベルの設定
asm(\”FSET I\”); //割り込み許可
//初期値設定//
i = 0; //汎用カウンタクリア
j = 0; //汎用カウンタクリア
while(1)
{
Cancel
Up
0
Down
Reply
Cancel
Children
No Data