
A 回答 (12件中1~10件)
- 最新から表示
- 回答順に表示
No.12
- 回答日時:
>そうはいっても、やはりタイマ割り込みがサンプルに入っていればそれを利用するのが手っ取り早いのですが・・・
確かにその通りなんですけど質問者さん次第ですね。
質問者さんが、今タイマ機能に挑戦する気があればですが、初めての人に割り込み機能は難易度高く見えますからね。
No.11
- 回答日時:
そうはいっても、やはりタイマ割り込みがサンプルに入っていれ
ばそれを利用するのが手っ取り早いのですが・・・
ベタ待ちで計時するなら、十分な長い時間を費やすループを作っ
てストップウォッチで測るのがいいです。
LEDの明滅でループの開始と終了を確認できるようにしておけ
ば、目視計測できますよね。
計測誤差は0.5秒以下として、1分くらいの時間を計測すれば
誤差1%以下で測ることができますから、結果を見てループ回数
を調整すればいいだけです。
みみっちい時間を計時する時はオシロスコープでLEDの信号線
を読むことが多いですが、それほど厳密でないならこういうアバ
ウトな方法もよく使いますよ。
No.10
- 回答日時:
>マイコン環境なら、CPUのタイマモジュールを使って10ms程度の定周期割り込みを作ってありませんか?
AKI-H8-USBですので、そのまま使っているとカーネルと言うかOSは走っていないと思います。ですのでタスクとかsleepとか使えません。>matyrcryさん。>lringollさん。
質問者さんが自分でOS入れていれば別ですが、質問者のhemuruさんの状況ではCPUループで回しても害が無いかと。
No.9
- 回答日時:
マイコン環境なら、CPUのタイマモジュールを使って10ms程度
の定周期割り込みを作ってありませんか?
一定時間の待ち処理には、ベタ処理ループを回して時間を稼ぐ方法と、
スリープ、セマフォなどのカーネル制御によるタスク休眠があります。
カーネル制御の関数はタイムアウト時間を設定できるものが用意され
ているはずなので、休眠時に時間設定して、他所から起床コールを行
わなければ指定時間経過で起床します。
ベタ処理で経過時間を計測したいのであれば、タイマ割り込みで経過
時間をグローバル変数を使ってカウントし、下層のタスクでカウント
が整うまでの待ちループを作れば時間待ちになりますが、ベタの待ち
処理はそれ以下のタスクの時間資源を食いつぶすので注意が必要です。
No.8
- 回答日時:
邪道な回答になるので,あくまで参考程度に.
私も0.1msec単位のループ制御をしたいと思っていたのですが,
sleepではどうやら(分解能は1msecですが)10msec程度の精度しかなく困っていました.
アッセンブラを用いた方法を見つけはしたのですが,アッセンブラの理解もなく,手詰まりになりかけました.
で,私が取った道は,
『ファンクションジェネレータ(信号発生器)とカウンタボードを組み合わせて時間の管理をする』
といった方法です.
プログラミングを専門とされている方からすると色々あるのでしょうが,機械系の学生なのでそんな方法を取らせていただきました.
現状,0.1msecならまったく問題なく処理できています.
この方法の利点は,アッセンブラなどを使わなくても簡単に高精度な時間管理が出来ることです.
しかし,FGとカウンタボードが無いとできないことと,あまり美しいものではないと思います.
少し的外れだったかもしれませんが,参考になれば.
今回の状況からしますと、ご回答頂いた内容のことまではできないのですが、
一つの方法として頭に留めておきたいと思います。
ご回答ありがとうございました。
No.7
- 回答日時:
>数nsのウェイト
H8マイコンでは気にしなくて良いです。高速なマイコンやFPGAやCPLDで制御するなら気にしてほしいですが。SC1602では、それよりも長いウェイトが必要な制御がありますよ。
ともかく実際に使っている方のサイトが参考になると思います。
http://tokyo-ct.net/usr/kosaka/for_students/H8/A …
簡単に検索できるサイトですが、こういうのは参考にならないんでしょうか?
数nsのウェイトについては
ご回答読ませていただいた後解決する事ができました。
LCDの駆動については
最初の返信後自らも調べ、現在実際に動かしながら学習しているところです。
添付していただいたサイトも参考にさせて頂きたいと思います。
最初質問させて頂いた際、手元にあった本とLCD説明書ばかり読んでいた事と、本にあったプログラムで上手くいかなかった事からこのような内容になってしまいました。
今回学ばせていただいた事今後役立てていきたいと思います。
再度ご回答ありがとうございました。
No.6
- 回答日時:
> 各信号間で数nsのウェイトが必要とあったので
AKI-H8/3048Fでは、最大でもクロック周波数が16MHzしかありません。
したがって、nop命令1つでも数十ns以上かかるので、数ns精度のウェイトを入れるのは無理です。
> 各信号間で
そもそもそれらの信号はソフトウェアで制御すべきものなのですか?
参考としてURLを添付させていただいたうちのLCD説明書に
各信号の制御がこの条件を満たすようにプログラミングしてください。
とあり、ソフトウェアでの制御が必要と思っていました。
数nsのウェイトについてですが
1サイクル62.5nsとあり不可能であることに
読んでいたにも関わらず質問していた事、申し訳有りませんでした。
再度ご回答ありがとうございました。
No.5
- 回答日時:
処理系を特定しないのであれば、time関数を用いてウェイトをかけるしかありません。
なお、clock関数はCPU使用時間なので、実時間を計測するには不向きです。
たくさんのご回答ありがとうございます。
大変申し訳有りませんが、こちらのご回答にまとめさせて頂きます。
補足について
現在、AKI-H8-USBという開発キットを用いLCDの制御プログラムを製作しようとしていました。使用している環境としまして、
CPU:H8/3048
コンパイラ:GCC(関係あるかわかりませんが、PCのOSはXP使用)
LCD:SC1602BS*S
となっています。
ご回答の中に無駄に資源を使わないとありましたが、
LCDの説明書の書き込みタイミングのところにおいて、各信号間で数nsのウェイトが必要とあったので、C言語で正確なウェイトを持たせる方法を質問させて頂いたところでした。
H8/3048を使用しているので内蔵タイマについて調べてみようと思いますが、内蔵タイマについてもご回答いただけるようであれば幸いです。
補足においても足りない事がありましたら追記していきたいと思いますので宜しくお願いします。
AKI-H8-USB開発ボードキット
http://www.aki-den.jp/kit_manual/%83%7D%83C%83R% …
H8/3048ハードウェアマニュアル
http://www.mech.ibaraki.ac.jp/~masuzawa/j602093_ …
LCD説明書
http://www.oaks-ele.com/oaks_board/oaks16/data/l …
No.4
- 回答日時:
>C言語でのウェイトの挿入方法を調べたところ、for文等で挿入できるのはわかったのですが、
今時のCPUではこの方法は推奨されませんと言うか出来ません。Z80マイコンレベルなら可ですが。
環境がgccならsleep()やusleep()でウェイトさせます。ただし、マルチプロセスで動いているので正確には時間を刻めません。
組み込み系マイコンなら内蔵タイマを利用して正確に時間をコントロールするのが一般的です。ともかく開発の環境が正確に分らないと答えようが無いですね。
No.3
- 回答日時:
「CPU の処理時間」という貴重な資源を「なにもしない」ということに無駄に使ってはいけません. 使っている「C言語」によりますが, #2 に言われるように sleep系かタイマイベント系の API を使うのがきっと正しい. もちろん「厳密に正確なウェイト」は入らないけど, 今どきのプロセッサならそれはどんな方法を使っても同じこと. だいたい, キャッシュとかはいったらその時点でもう「正確なステート数」は無意味に近い.
参考URL:http://ja.wikipedia.org/wiki/%E3%83%93%E3%82%B8% …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語階乗の総和を求める 2 2023/03/04 23:31
- その他(AV機器・カメラ) レコードの針圧とアンチスケーティングの調整について。 レコードに関する質問です。宜しく御願い致します 2 2022/09/05 16:11
- その他(パソコン・スマホ・電化製品) ガーミンの時計について質問です。 先日、ガーミンの265を購入しました。 iTunesから音楽を入れ 1 2023/05/27 17:03
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- IT・エンジニアリング ITエンジニアの勉強時間や勉強方法について 初めまして閲覧いただきありがとうございます。 当方25歳 4 2022/06/09 18:51
- C言語・C++・C# C言語 3 2022/10/04 15:07
- C言語・C++・C# C言語でファクト関数を使わずに階乗を計算する方法はありますか?できれば教えてください 4 2023/06/07 11:45
- 大学受験 大学受験 辛い 英語 読めない こんにちは。 現在大学受験をしてる者です。 色々あり浪人なんですけど 11 2022/09/06 12:03
- C言語・C++・C# c言語で自然数nを入力、2以上n以下の偶数の累積sumを求めるプログラムをfor文を使って作りたいで 4 2022/11/09 14:10
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
H8/3052 ディップスイッチについて
-
8ビットのデータの、先頭ビット...
-
ライン数とステップ数の違いは?
-
0xffffとは?
-
PICC(HI-TECH SoftWare)によるI...
-
文字参照は10進数と16進数では...
-
アセンブリ言語の質問のコト
-
レジストってなんですか?
-
高級言語がアセンブリ言語に比...
-
アセンブリ言語について
-
命令について
-
アセンブラからC言語に変換する...
-
ビットシフトってどんな時使うの?
-
03分22秒36のような時間の単位...
-
ビット立つの意味
-
CASIOのポケコンZ-1GRのアセン...
-
シーケンス制御についての質問...
-
Visual C++ によるWindowsアプ...
-
【H8マイコン】HEWで埋め込みア...
-
アセンブラ言語で質問です。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
arduinoで信号間の時間を計測し...
-
PICでパルス数をカウントする方法
-
入力回数のカウントをする方法
-
C言語によるウェイト
-
H8マイコンでのカウントタイマ...
-
H8/3052 ディップスイッチについて
-
シリアル通信のデータ受信につ...
-
PICでスピードメーターを作...
-
RTCの通信方法(I2C、S...
-
16 bit timerで1秒を計る
-
Nios II 5.1IDEでの7セグメント...
-
PICの入出力切り替えの時間がプ...
-
PICでパルス数をカウントし、カ...
-
pic16f88のことで
-
LCDへの命令
-
C言語のプログラミングについて
-
Z80 タイマーの記憶方法について
-
Sleep関数について
-
0xffffとは?
-
8ビットのデータの、先頭ビット...
おすすめ情報