
No.5ベストアンサー
- 回答日時:
「YCSH」はイエローソフト社のホームページによるとdoubleにも対応していると書いてますので、まず大丈夫だと思います。
コンパイル時にリンクエラーとか出ていないですよね?たぶんですが、デバッガはイエローソフト社のイエロースコープを使ったと思いますので環境的にも問題ない気がします。
ソースコードは次の点が気になりました。
(1)変数syuの定義が何処にもないけどaの間違いですかね?
(2)ソースがfloatですがfloatをdoubleに変えただけですか?
(3)scanf("%f",&a);はdoubleの時はscanf("%lf",&a);としていましたか?
まぁ、これらの問題を置いておいても「角度」で表示が止まった説明は出来ません。
なので調べて欲しいことがあります。、
1.イエローソフト社のホームページで「YCSH」が最新版であることを確認してください(コンパイラのバグの可能性もあるため)。
http://www.yellowsoft.com/download/qanda_03.html
2.デバッガでステップ実行してみてください。printfで問題が起きたのかscanfで問題が起きたのかはっきりさせる必要があります。
すいません、aの間違いです;
(2)はただfloatoをdoubleに変えただけです。
(3)はちゃんとdoubleの時はscanf("%lf",&a);にしていました。
調べてほしいことなんですが、もうこの項目の実験は終わってしまったのでもう調べられないんです。担当の先生に直接聞いています。
みなさん詳しく回答していただきありがとうございました。いろいろと勉強になりました。doubleが使えると分かったので満足です。
回答してくださったことを踏まえて、先生にいろいろと聞いてみたいと思います。
No.4
- 回答日時:
SH7044にはFPU(浮動小数点演算回路)が搭載されいないので固定小数点を使って浮動小数点の演算を行いますので単精度でも重いですが、倍精度だとべらぼうに重いと思います。
それはそれとして、
>main関数にwhile文で無限ループをつくったのですが、「double」だとすぐにループを抜けてしまいました。でも「float」で変数宣言したらちゃんとループを抜けずに実行してくれました。
>実行すると、
> 角度
>と表示されてプログラムが終了してしまいました。(?すら表示されませんでした。)
これは無限ループから抜けたんじゃなくて何らかの例外でCPUが停止したんです。ループを抜けるようだと無限ループとは言わない。デバッガで追いかけたらすぐ分る気がするんですけどね。
とりあえず前後も合わせてループの部分を掲載してください。
#include <stdio.h>
//SH7044レジスタ
#define PEIOR (*((volatile unsigned short *)0xFFFF83B4))
#define PECR1 (*((volatile unsigned short *)0xFFFF83B8))
#define TSTR (*((volatile unsigned char *)0xFFFF8240))
#define TSYR (*((volatile unsigned char *)0xFFFF8241))
#define TOER (*((volatile unsigned char *)0xFFFF820A))
#define TCR3 (*((volatile unsigned char *)0xFFFF8200))
#define TMDR3 (*((volatile unsigned char *)0xFFFF8202))
#define TIOR3H (*((volatile unsigned char *)0xFFFF8204))
#define TIOR3L (*((volatile unsigned char *)0xFFFF8205))
#define TSR3 (*((volatile unsigned char *)0xFFFF822C))
#define TCNT3 (*((volatile unsigned short *)0xFFFF8210))
#define TGR3A (*((volatile unsigned short *)0xFFFF8218))
#define TGR3B (*((volatile unsigned short *)0xFFFF821A))
#define TGR3C (*((volatile unsigned short *)0xFFFF8224))
#define TGR3D (*((volatile unsigned short *)0xFFFF8226))
float a, b;
void pwm_init(void)//PWMの初期化
{
TMDR3 = 0x02; //PWMモード1
PEIOR |= 0x0F00; //PE8-11:OUT
PECR1 |= 0x0055; //PE8-11(TIOC3A-TIOC3D):MTU
TSTR &= ~0x40; //カウンタストップ
TCNT3 = 0; //カウンタクリア
TCR3 |= 0x23; //TGR3A TCNTO CLEAR、CLOCK(24.576MHz)/64
TGR3A = 7680; //周期:(1/24.576MHz)*64*7680=20ms
TGR3B = 768; // DUTY:(1/24.576MHz)*64*768=2ms
TIOR3H = 0x16; //GRA初期出力1、コンペアマッチで出力1
//GRB初期出力0、コンペアマッチで出力0
TGR3C = 7680; //周期:(1/24.576MHz)*64*7680=20ms
TGR3D = 768; // DUTY:(1/24.576MHz)*64*768=2ms
TIOR3L = 0x16;//GRC初期出力0、コンペアマッチで出力0
//GRD初期出力1、コンペアマッチで出力1
TSTR |= 0x40;//カウンタ開始
}
void main(void)
{
pwm_init();
while(1){
printf("角度は?\n");
scanf("%f",&a);
b=(float)384+(float)syu*(float)384/(float)180;
printf("%f\n",b);
TGR3B = (unsigned short)b;TGR3D = (unsigned short)b;}
}
見にくくてすいません
No.3
- 回答日時:
開発環境とコンパイラは?
> SH2マイコンでは「double」は使えないのでしょうか?
GCCでもルネサスの評価版C/C++コンパイラでも、浮動小数点はサポートされているので動かないわけではないと思います。が、「ふつうの」SH2は浮動小数点演算コプロセッサを持っていないので、doubleの演算をするとすごく重くなります。特に割り算なんかやらせたら目も当てられない・・・。
> プログラムがハードでうまく実行できませんでした。(プログラムのエラーはないです。)
そういうときは、
1.何をして、
2.どういう結果になると思ったら
3.どうなったか
を書いてください。
開発ソフトウェアは、イエローソフト社製YellowIDEです。
RCサーボモータを指定された角度に制御するプログラムなのですが、プログラムを実行したら、すぐにプログラムが終了してしまいました。
その時の状況は、角度を、
printf("角度は?\n");
scanf("%f",&a);
b=(入力した角度aを変換して、doubleに型キャストした計算式)
TGR3B = (unsigned short)b;
TGR3D = (unsigned short)b;
こんな感じでコンピュータから入力して制御するつもりだったのですが、実行すると、
角度
と表示されてプログラムが終了してしまいました。(?すら表示されませんでした。)
No.2
- 回答日時:
SH2にはハードに浮動小数点回路搭載の有無やら色々バリエーションがあるはずです。
ラインナップ
http://japan.renesas.com/fmwk.jsp?cnt=sh7280_ser …
使用されたコンパイラの名称(HEWか?)とターゲットとなっているSH2の詳細な名称を書いてください。
たぶん、FPUのないSH2でFPUのあるSH2用のコンパイルオプションを指定してしまったとかと言うオチだとは思います(命令例外にならなかったのかが疑問ですが)。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 工学 1つのタクトスイッチで複数の並列回路を閉じ、アースにつなげることができるスイッチはありますか。 2 2022/08/06 10:38
- C言語・C++・C# 10個の実数に対する降順ソート結果を出力するプログラムを作りたいのですが、以下のプログラムをどう直せ 1 2022/07/09 22:16
- その他(プログラミング・Web制作) Linuxについて質問です。 引数に指定されたアクセスログのファイルからアクセス数が多い順に上位3つ 1 2023/02/03 03:46
- C言語・C++・C# このプログラミングの問題を教えてほしいです。 キーボードからデータ数nとn個のデータを入力し、平均値 3 2022/12/19 22:51
- UNIX・Linux 実行の仕方及び実行結果が分かりません。 2 2022/11/17 19:31
- C言語・C++・C# プログラミングを教えて欲しいです。 配列aは、int a[9]={7,6,12,8,3,5,10,9 4 2022/12/19 23:27
- その他(プログラミング・Web制作) プログラムの勉強のおすすめは 7 2022/12/09 20:09
- Visual Basic(VBA) VBAプログラミング 2 2022/11/27 12:07
- その他(プログラミング・Web制作) zshの例外処理 1 2022/06/02 16:36
- C言語・C++・C# C言語 3 2022/10/04 15:07
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ソフトの開発言語を調べる方法
-
エラー0でのビルド失敗について
-
組み込みソフト。ROM領域にデータ
-
unsigned long long 型のフォー...
-
C言語:OS移行時の注意点(Sola...
-
コンパイラによって出力される...
-
変数の内容がコロコロ変わる、...
-
C言語の規格
-
CISCとRISCの移植性について
-
AIXとCOBOLについて
-
トランジスタ技術9月号の第2章A...
-
.netでの、VBと比べてのC++の優...
-
リリースモードとデバッグモー...
-
COBOLの論理演算子について
-
VC++の/Zm オプションについて
-
VB6のコンパイラ
-
C言語
-
オープン系とか、組込み系とか...
-
COBOLの論理演算子について質問...
-
パーサとコンパイラの違いって?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ソフトの開発言語を調べる方法
-
unsigned long long 型のフォー...
-
C++でデスクトップGUIアプリ開...
-
パーサとコンパイラの違いって?
-
printfなど、標準関数のソース...
-
COBOLの論理演算子について質問...
-
cc と gcc の違い
-
組み込みソフト。ROM領域にデータ
-
<conio.h>?
-
COBOLのALPHABET...
-
24bit サイズの変数
-
C++Builder → Visual C++ 移植...
-
リリースモードとデバッグモー...
-
PICでのI2C通信でのマスタ、ス...
-
VC++の/Zm オプションについて
-
bcpadのコンパイラのインストー...
-
『Bin』ディレクトリは何の略語?
-
C言語の規格
-
C言語はC言語でできている?
-
C言語でチェスを作ってみたいと...
おすすめ情報