マイコンでAD変換をしようと思っています><
#include<3048.h>
void ioinit();
void adinit();
int i;
int ADDRA;
main()
{
ioinit();
adinit();
while(1){
AD.ADCSR.BIT.ADST = 1; // A/D変換スタート
while(AD.ADCSR.BIT.ADF==1); // A/D変換終了まで待つ
int i = ADDRA; // レジスタに格納された値をiとする
if (i>=0xA5){ // 電圧が6.5vより高くなった場合
P5.DR.BYTE = 0x01;
}
else if (i<=0x19){ // 電圧が1vより小さくなった場合
P5.DR.BYTE = 0x02;
}
else if (0x19<=i<=0xA5){ // それ以外の電圧だった場合
P5.DR.BYTE = 0x03;
}
AD.ADCSR.BIT.ADF=0; //フラグクリア
}
}
// I/OポートDDR設定
void ioinit()
{
P5.DDR=0xff;
}
// A/D変換設定
void adinit()
{
AD.ADCSR.BYTE = 0x33;
}
このプログラムでAD変換がまったくできません><電圧を変えていくことでP5につながっているLEDで変換結果を見たいと思っています。ADDRAのプログラムあたりがおかしいと思っています;;ちなみにポート7に電圧計とつなげています。その電圧値を変えていくことで結果を見ようとしています。0xA5は6.5Vのときの反応だから回路も分圧させたものにして10Vまでの対応にしました><どこがおかしいのか教えていただけるとてもうれしいです><助けてください;;
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
ソースリストを見たけど,Cの経験が少なくて,ハードウエアマニュアルも読んでいないようですね.
ハードウエアマニュアルは,わかる人にしかわからんとゆう書き方をしてるんで,何回でも何十回でもわかるまで読むとゆうのが基本です.
時間が無くて,Cに習熟できず,ハードウエアマニュアルもわかるまで読めないようなら,外部のソフトハウスに出したらどうでしょうか?
設備関係は,去年に対し受注が1/5~1/10に減ってるから,喜んで引き受けてくれるはずです.
ソフトハウスを知らないようなら,ルネサスの代理店に御願いすれば紹介してくれます.
ソフトの設計書を見てないんでわかりませんが,ソースリストを見て気の付いた点は;
1.A/D変換終了まで待つときは'0'でしょう
2.int ADDRA; って<3048.h>で定義されてるでしょ?
ADDRAは,アドレス固定,unsigned intでvolatileでしょう.
3.ADDRAのデータは上位ビットから詰められる
4.int i = ADDRA; 定義のところで,unsigned intにしておかないと,ここではいらないでしょう
5.if (i>=0xA5){ は,0xA500でしょう,以下略
6.P5.DR.BYTE = 0x01,02,03となってるけど正しいのか?
7.A/D変換設定のデータが変,0x00ならとりあえず動くはず
ですね.
初期化処理がいい加減ですが,きちんとリセットされないことを考え,基本的に関連する全レジスタを処理します.
ソフトの設計無しにいきなりコーディングしているようなら,ソフトハウスに設計から御願いした方が速いです
No.4
- 回答日時:
プログラムにもし問題がないとすれば,
回路をもう一度確認してみてはどうでしょうか.
例えば,H8の電源のグランドと,見たい電圧の電源のグランドは繋げて共通にしてますか?
参考URL:http://homepage1.nifty.com/rikiya/software/104ad …
回答ありがとうございます!実はGND共通にしてませんでした。
しかし、それに気づき、もう一度マイコンを動作させたのですが、未だに変換されぬままです^^;
No.3
- 回答日時:
> マイコンにAD変換結果は届いているのか・・・不安です><
デバッガで1stepずつ見ていけばわかるでしょう.
デバッガが無かったら,ユーザーズ・マニュアルと
ソースリストを照らし合わせながら各レジスタにどんなデータが
入っているのかチェックしていく以外無いでしょう.
その時注意するのはSFRレジスタのデータで,書き込んだ値が
読み出されるとは限らないことです(マニュアルにあり).
デバッガは安いから買った方が速いと思いますよ.
ありがとうございます^^
時間が迫っているので、買いに行く時間はないかもですが、もう少しがんばってみたいと思います。
ADDRAの件も気になりますが、奮闘してみますね
No.2
- 回答日時:
昔のことだしアセンブラでやっててあんまり憶えてないけど,
Cで書けば,
「AD.ADCSR.BIT.ADST = 1; // A/D変換スタート」
の前に,
「AD.ADCSR.BIT.ADST = 0; // A/D変換ストップ」
「AD.ADCSR.BIT.ADF=0; //エンドフラグクリア」
の2行を入れてから,A/D変換をスタートさせたと思うけど.
何でそうしたかとゆうと,デバッガで1ステップずつ実行させると動作し,
連続で動作しないことから,マニュアル読み直したら,スタートと
エンドのフラグがどの程度の遅延時間でクリアされるのか書いて
無かったんで,クリアしたら動作したんじゃなかったんだっけ?
この回答への補足
ありがとうございます^^
プログラムを追加してみました。しかし、電圧を変化させてもLEDは依然、値によって変化しません・・・
P5やP1はDDRが可能のようですがポート7はそれができないようですね;;そこでやはりポート7につながれているP7-0、P7-1が気になります。。。ちなみにCN2の12と13です。そこをとおってマイコンにAD変換結果は届いているのか・・・不安です><
No.1
- 回答日時:
昔,H8マイコン使ったときにやっぱりAD変換ができなかった覚えがあります.
1回変換する毎に,スタートフラグ;
AD.ADCSR.BIT.ADST
をクリアして,スタートさせたらできるようになったかな?
(EOCフラグもクリアしたかも?)
後,タイマとかIICとかにも色々トラップがあって楽しめたような?
この回答への補足
回答ありがとうございます^^
スタートフラグですか。ということは、if文 else if文の終わりすべてに AD.ADCSR.BIT.ADF=0; //フラグクリア を乗せるということなのでしょうか?><
ADDRAの使い方も少し教えて欲しいです;;
初心者でほんとすみません・・・
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- 電気工事士 高圧電力の電気料金の案分方法 1 2022/08/10 07:20
- C言語・C++・C# c言語の問題です 課題1 (二分探索木とセット) 大きさ size の配列 array を考える。す 2 2023/01/10 21:08
- C言語・C++・C# C言語 3 2022/11/09 13:27
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- 物理学 写真の図についてですが、 ①BC間を導線で繋いだら、AB間、CD間の電場の強さが変わっていますが、こ 1 2023/02/19 14:34
- C言語・C++・C# C言語の課題が出たのですが自力でやっても分かりませんでした。 要素数がnであるint型の配列v2の並 3 2022/11/19 17:41
- その他(趣味・アウトドア・車) Arudino nanoが正常に動作しない原因 1 2022/10/30 18:29
- C言語・C++・C# TCP/IP通信時のサーバーからの受信 2 2022/11/23 09:11
- C言語・C++・C# プログラミングのペーパーテスト 実行結果がどのように表示されるか答えよ #include <stdi 1 2022/07/09 14:27
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SJIS⇔UTF-8の文字コード...
-
VB.NETからJavaに変換するツー...
-
VB.NETをJavaに変換するツール...
-
C言語からC#への変換ツール
-
アセンブラ言語の数字を数値に...
-
緯度、経度の 10進法と 60進法...
-
なぜ通信には16進数文字列が使...
-
マンセル⇔XYZ,RGB変換式或いは...
-
AD変換ボードに入力された電圧...
-
vb.netの型変換について
-
画像ファイルから.icoフォーマ...
-
16進数を10進数文字列に変換する
-
3のつく数字と3の倍数のみを表...
-
10進数を2進数に変換するプログ...
-
エクセルVBAの自動変換機能?
-
C#で漢字→ローマ字を変換
-
StrConvの使い方について教えて...
-
C#でのpngからbmpへの変換について
-
C++からCへのソース変換について
-
自作ソフトキーボードによる文...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
緯度、経度の 10進法と 60進法...
-
Excel-VBAのmsgBox()の不思議
-
3のつく数字と3の倍数のみを表...
-
bmp→jpgに、jpg→bmpに
-
分を時間に変換するプログラム
-
Mac 乗数の入力方法
-
家電製品の電力周波数を変える機械
-
10進数をBCDに変換する方法
-
VB6からVB2010への変換について
-
C/C++→JAVAに変換するツール
-
C#でのpngからbmpへの変換について
-
【EXCEL】カナ、ひらがなを英字...
-
数値英単語変換プログラム
-
エクセルVBAの自動変換機能?
-
なぜ通信には16進数文字列が使...
-
画像ファイル変換(Tiff→PDF)
-
UTF8→ShiftJISに変換したいです!
-
c++でmatからvectorへの変換の...
-
SJIS⇔UTF-8の文字コード...
-
VB.NETをJavaに変換するツール...
おすすめ情報