04/03/12 23:43
>>1
すみません。棒がなかなか立てられないんですが。
3:デフォルトの名無しさん
04/03/13 06:51
>>1
お疲れ様。
4:デフォルトの名無しさん
04/03/13 08:05
>>2
倒立振子? 楽しそうだよね。
5:制御シミュレーションしたい
04/03/13 09:19
PC+I/Oカードから、アナログ入力して、動的に動く、制御シミュレーションを簡単にやりたいのです。
言語はVBで組みたいのですが、何を参考にすればよいでしょうか?
6:デフォルトの名無しさん
04/03/13 09:21
>>5
?
機械の代わりにプログラムの機械モデルを動かすって事ですか?
取りあえず回路の電気特性とか入力に対する道徳性とか?
7:デフォルトの名無しさん
04/03/13 10:34
電気・電子板
URLリンク(science2.2ch.net)
8:制御シミュレーションしたい
04/03/14 17:30
>>6
機械の代わりにプログラムの機械モデルを動かしたいのですが、、、
9:デフォルトの名無しさん
04/03/14 18:49
>>8
そうか、そういう事ならちょっとこのスレには合わないかな。
閑古鳥が鳴きまくってる上に厨な板で処で悪いのだが、
URLリンク(science2.2ch.net)
こっちにスレたてなさい。 タイトルは
「初心者がVBで作る機械のシミュレータ」
中身は>>5+>>8ね。
スレたてたら、リンクをこっちに貼れば、タマに覗いてあげるよ。
10:デフォルトの名無しさん
04/03/14 21:01
>>4
先輩が棒をぐるぐる振り回して遊んでただんだけど。あれってホントは何するもの?
11:デフォルトの名無しさん
04/03/14 21:04
>>10
宝探しとか地中に埋まってる水道管を探り当てたりとか。
12:デフォルトの名無しさん
04/03/16 00:59
>>10
倒立振り子
>>11
井戸掘るときに実際見たよ、グルグルはまわさんかった
13:デフォルトの名無しさん
04/03/16 00:59
今まで業務系の仕事をやっていたのですが、いきなり制御系にいけといわれ
テストが渡されました。何をみてもいいと言われてるんですが、もう時間が
ないです・・ 板違いとは思いますが誰か助けてください・・・
多分簡単な問題だとは思うのですが、さっぱり分かりません。
問題 V0は何[V]ですか?
5[V]
-○-
l
>
> 4.7kΩ
>
l______○
l ↑
> l
> l ←V0
> 3.3kΩ l
l l
l l
l l
l ↓
---
///
14:デフォルトの名無しさん
04/03/16 01:04
テンプスタッフへ電話しな
15:デフォルトの名無しさん
04/03/16 01:11
>>13
V0=5÷(4.7+3.3)*3.3
16:13
04/03/16 01:19
<<15
ありがとうございます!
17:デフォルトの名無しさん
04/03/16 01:23
回路電流 I=E/R=5/(4700+3300)=0.000625
V0電圧 E=IR=0.000625*3300=2.0625
18:デフォルトの名無しさん
04/03/16 01:27
>>13
教科書のオームの法則のページを見れ。
それでわからないならまじであきらめろ。
19:デフォルトの名無しさん
04/03/16 01:46
>>13
ネタだろ?
厨房の理科レベルだぞ
20:デフォルトの名無しさん
04/03/16 23:05
>>19
あほか、アースなんぞ出てこん。
21:デフォルトの名無しさん
04/03/16 23:27
カーボンで5/(黄紫赤+橙橙赤)*橙橙赤
チップで5/(472+332)*332
最近のチップは小さすぎて見ずらくなった。
22:デフォルトの名無しさん
04/03/16 23:53
グランド
23:デフォルトの名無しさん
04/03/17 01:05
>13へのテストは数値の答えよりも問題を解くために
とった手段を問われていたのではと妄想
”2chで聞く”は何点と採点されるのかね
24:デフォルトの名無しさん
04/03/18 12:37
>>23
鋭いなー。
漏れも業務系から制御系に一人で放り込まれたが、どうにかなってる。
やってる事のレベルが低いだけかも知れんが。
25:デフォルトの名無しさん
04/03/20 07:27
>>5
コンテックのアナログ入力ボードを使えば小学生でも制御系はマスターできます。
VB用DLLも付属しているので、簡単にPG可能です。
VBのタイマーは精度が悪いので、高精度タイマーは別途作る必要があります。
26:デフォルトの名無しさん
04/03/24 09:39
普通にプログラム(C、JAVA)やるよか
こういった制御系のほうがイイメリットとかありますか。
27:デフォルトの名無しさん
04/03/24 09:52
>>26
どういう立場の人の話を聞きたい?
28:デフォルトの名無しさん
04/03/24 10:20
どういう立場があるのでしょうか?
29:デフォルトの名無しさん
04/03/24 10:22
過去ログ2より
3 名前:1 投稿日:02/11/24 09:02
就職相談の話題が循環するから先に答えておく。
好きならやれ。
他に選択肢があるならそっちをえらべ。
自分が選んだ、なりたい自分になれ。
以上。
30:デフォルトの名無しさん
04/03/24 10:55
パラレルポートにCでアクセスする方法を教えて下さい。
ちなみにOSはXPでつ。
31:デフォルトの名無しさん
04/03/24 11:31
>>30
URLリンク(www.toyoshima-house.net)
32:デフォルトの名無しさん
04/03/24 22:28
>>26
イイメリット>ワルイメリット>イイデメリット>ワルイデメリット
こんな感じでいいのか?
33:デフォルトの名無しさん
04/03/25 07:42
制御系なんてメリットがあるからやるんじゃなくて、
やるしかなかったり、やる事が決まってる人がやるもんなんだよ。
34:デフォルトの名無しさん
04/03/29 22:29
つーか、俺なんかCPU廻り設計してたH/W屋あがりだからねぇ
H/W設計しろといわれた方がなんぼかマシ
35:デフォルトの名無しさん
04/03/29 22:53
>>30
giveio.sysっていうやつを使うと、Win9xと同様に
inp(),outp()命令で直接アクセスできるようになるよ。
36:デフォルトの名無しさん
04/03/31 22:28
Jiniに勝利したUPnPの次の一手は
2002/11/12
Windowsのプラグ&プレイをネットワーク機器や家電に拡張したUPnP(Universal Plug and Play)についてのデベロッパ向けイベント
「Universal Plug and Play Forum Asia Summit in Tokyo」が始まった。UPnPの標準化団体「UPnPフォーラム」には、
ハードベンダを中心に現在、524団体が参加しているが、UPnPはもともとマイクロソフトが提案した規格だけに、Windows関連の話題が多かった。
マイクロソフトのConnected Home Technical Evangelist スコット・マンチェスター氏。UPnPをサポートするルータを掲げて対応デバイスの多さをアピール
11月11日に講演した米マイクロソフトのConnected Home Technical Evangelist スコット・マンチェスター(Scot Manchester)氏は、
UPnPについてのこれまでのフォーラムの取り組みを振り返り、「仕様は充実し、認証済みデバイスの配備も開始された」と評価。
「Windows Me、XP、CE.NETでサポートされているが、次のWindowsでもサポートする」と明らかにした。
現在UPnPフォーラムが標準化に力を入れているのが、UPnPのバージョン2。バージョン2ではWebサービスとの連携を強化させる。
スコット氏によると、フォーラムはバージョン2にWebサービスの記述言語であるWSDL(Web Services Description Language)を採用。
現在、バージョン2のアーキテクチャ定義のための委員会を設置して討議を続けているという。
UPnPデバイスとWebサービスが交信できるようプロトコルや開発ツールの統一を図る。
マイクロソフトが主に主導するUPnPに対して、サン・マイクロシステムズは同様のコンセプトの技術「Jini」を推し進めていた。しかし、
最近ではJiniの話題を聞くことも少なくなってしまい、普及も進んでいない。JiniはJavaを基に開発され、プラットフォームを問わずに広く稼働することが特徴だったが、
利用できるデバイスの数などから言えば、マイクロソフトがサンとの規格争いに勝利したといえるだろう。
まあJava厨は知っている単語を並べているだけで、その技術の意味すら理解できないようだ。
37:デフォルトの名無しさん
04/04/02 05:10
>H/W設計しろといわれた方がなんぼかマシ
禿堂
38:デフォルトの名無しさん
04/04/02 09:24
34 □ デフォルトの名無しさん □ sage □ 04/03/26(金) 01:50 □
仕事が選べる>26に惚れますた
39:デフォルトの名無しさん
04/04/05 04:24
また新しい石: 客に言われたよ
1. 自作評価基板の不具合 ---> クリア
2. C コンパイラの不具合
3. CPU コアの不具合
4. CPU 内臓周辺回路の不具合
5. プログラムの不具合
どこに問題があるとしても、プログラムで回避するしかありません。
もう、出るわ出るわ(^o^)・・・ 客がまた言うの。「枯れた物使ってると商売にならないの」
まあ、ここのメーカーがわりとまともで、しらを切ったりせずにバグはバグとして公表して
くれるからよかったけどね。
40:デフォルトの名無しさん
04/04/05 07:55
>4. CPU 内臓周辺回路の不具合
生体CPUなのかな?
41:39
04/04/05 20:06
変換ミスですがな。5.はこれから山ほど出すのですが、
2と4を踏んづけてしまったよ。 さすがに3はなかなか出会えません。
42:39
04/04/07 20:13
WDT割り込みが実機だとうまく動いてくれない。これはまだ未解明。
43:デフォルトの名無しさん
04/04/08 08:11
ああ、あるよね。使える筈といわれたアドレッシングモードが特定の命令だけで使えなかったり
今回は偶数アドレスでも大丈夫ですよと言われたのにやっぱりダメだったり
44:デフォルトの名無しさん
04/04/09 17:17
2Mbpsで同期シリアル通信を行うターゲットボードがあります。
H8/300Hなどを使うと、2Mbpsの同期シリアル通信が可能だということがわかった
のですが、このターゲットボードが、3bitとか15bitといった、8bit単位ではな
いシリアル通信を要求しています。
H8/300Hの同期シリアルは8bit単位での通信になるので、実現は不可能だと思い
ます。GPIOだと2Mbpsは速度的に難しいでしょうか。
なにか良い方法(1bit単位で同期シリアル通信ができるボード等)は無いでしょ
うか。
45:デフォルトの名無しさん
04/04/09 23:49
>>44
オーバーランした際の仕様を調べろ
受ける方はどうにでもなるだろ
46:デフォルトの名無しさん
04/04/10 00:26
>>45
オーバーランしてはダメな仕様です。
47:デフォルトの名無しさん
04/04/10 16:26
>>44
クロックいくつで動かすのかわからんが、GPIOでは無理だろう。
まずボード作った奴にどういうデバイスで制御されるのを想定したか相談しろ。
48:デフォルトの名無しさん
04/04/10 18:52
>>44
同期クロックはどっちが供給するの?
もしこちらから供給するのなら、正確に2Mbps供給する必要はないんじゃない?
間延びが許されるのなら、GPIOでパタパタやっても大丈夫なのでは?
49:44
04/04/10 22:04
>>47
当初の構想では、秋月のH8マイコンボードを使うつもりだったので、
CPUクロックは16 or 18MHzです。
>>48
クロックは、今から作るボード・プログラム側が供給します。(マスタ)
ターゲットボードがスレーブになります。
そのターゲットボードが2Mbpsで動くかどうかを評価するプログラムを
作るのが目的なので、2Mbps供給が必要です。
GPIOでやったら2Mbpsでるかどうかもわかりませんが、出たとしても、
デューティー比もメチャクチャになりそうですよね。
3GHzのPCにPCIのデジタル入出力ボードを接続してパタパタって
いうのはどうでしょうか。
50:48
04/04/10 22:48
>>49
一般論だけど、
この手のシリアル通信って、個々の要素は3ビットとか半端なビット数でも
まとめると8ビットの倍数とかになるようになってるはずなんだけど、
そうじゃないのかな?
かなりローカルな仕様?
51:デフォルトの名無しさん
04/04/10 23:02
>>49
それってプログラム要るのか?
ちょっとしたPLDでちょこちょこシリパラの変換する回路組んだ方が
遥かに速い気がするのは気のせいか?
52:デフォルトの名無しさん
04/04/10 23:19
>>49
このテーマには初めての書き込みですが、H8のGPIOは見込みなしですね。パソコンも
CPUの速度よりは、PCIバスが心配ですね。I/Oリードに、オーバーヘッドなしでも
6クロック必要のようですから、読むだけとしても、バスクロック66Mでも2Mビットだと
1ビットの間に5回しか読めないですね。実際はもっとずーっと遅いでしょうから、余裕が
はたしてあるかどうか。 (66M / 6 / 2M = 5.2)
ソフトだけで制御するのは、難しいのではないかな。I/F回路を作らないと無理な気がしますね。
>>51
同期通信だと多分プロトコルがあるでしょうから、単純なシリパラ変換だけでは
だめかもしれませんね。非同期とちがって、スタートビットの認識は必要でしょうし、
いずれにせよ転送データの正当性の検証は必要でしょう。
53:デフォルトの名無しさん
04/04/10 23:28
>>52
石の仕様と話みた限りじゃ単純なSPIのような気がするんだが?
54:デフォルトの名無しさん
04/04/10 23:49
>>53
52: 石の仕様は、書いてないと思うのですが、どの発言でしょう?
今までの話だけで、仕様を特定できますか?
55:デフォルトの名無しさん
04/04/11 00:54
>>54
44 名前:デフォルトの名無しさん 投稿日:04/04/09 17:17
2Mbpsで同期シリアル通信を行うターゲットボードがあります。
H8/300Hなどを使うと、2Mbpsの同期シリアル通信が可能だということがわかった
コイツのマニュアル見て同期シリアルと言いそうな内蔵インタフェースを見た。
コレで出来ると思ったんなら、単純なCLK+DATA+FPのSPIだろ?
ヘッダやらなにやらがつくような高級なプロトコルじゃない
56:デフォルトの名無しさん
04/04/11 01:03
>>54
補足
どうも情報が足らないので断定は出来んが、予想が正しければ
検証用のHMと組んだインタフェース回路の制御用IにCPU使うのもいいと思う
ちょっとしたCLI組み込んでやれば使い勝手は回路だけで組むより
相当良くなるし。 その辺は「どんな評価がしたいのか」によって取捨するところ。
単純にそのボードが2Mbpsで通信出来るか見たいだけなら回路組むだけでもいいかも
3bitやら15bitなら受信データはLEDとSW並べたって大したことにはならない。
57:デフォルトの名無しさん
04/04/11 10:41
H8って品種によっては遅延時間を設定出来るストローブを出せたと思う。
こいつをクロックにしてしまえば、いいと思うけどね。
58:44
04/04/12 10:55
>>52
>>53
通信方法としてはSPIです。CS/CLOCK/DATA IN/DATA OUTです。
SPIで転送サイズを1bit単位で指定できる何か(CPU?)は無いでしょうか。
>>48
データシートに、3bitのコマンドを送ったらCSをOFFにし...という感じで8bitの
倍数にはならないようです。
59:デフォルトの名無しさん
04/04/13 00:14
>>58
52:私見だけど、転送サイズを変更できるような機能を持ったCPUはないんじゃないかな。
機能確認ということであれば、同期シリアルなんだからクロッックを落としてソフトで確認して
それでOKなら伝送系の問題だから、 >>56 のような簡単な確認での確認でもOKでしょう。
相手側に細工ができないのならだめだけど。 どっかで割り切らないと手間とお金がかかる
案件のような気がするな。
60:48
04/04/13 02:11
>>58
俺も、>>59と同じで、そういうCPUはないと思うな。
転送パターンが決め打ちでいいなら、AVRやSHなんかのRISCマイコンで
クロック数を計算して2MBPS正確に出すって事ができなくもないね。
12MHzのAVRなら1命令1クロックだからなんとかできるんじゃない?
あと、使ったことないけど「データジェネレータ」ってのがあるらしいね。
URLリンク(jp.home.agilent.com)
ちょっと大げさな気もするけど、レンタルできるかもね。
61:デフォルトの名無しさん
04/04/13 06:18
>>60
52: AVRのことは知らないけど、RISCに限らず高速のマイコンは、Cacheやパイプラインを使っている場合が多い。
クロック数を計算してというテクニックは、使えない場合が多いから、そういう発想は浮かばなかったな。
1命令1クロックということは、命令の読み出しを考えると最低限パイプラインくらいは使っているんじゃないのかな?
クロック数で正確に計算してってことができるんでしょうか?
それに、DATA INがあるってことは受信もあるんじゃないのかな、受信のときに、クロック数だけで、
同期クロックをチェックしないでデータをリードするのは荒技の気がするけどな。
データジェネレータも送信だけでしょうから、受信なしでOKかどうかでしょうね。
62:デフォルトの名無しさん
04/04/13 07:25
AVRやPICや4ビット8ビットマイコンの殆どが命令数を数えるテクニックが使えます。
6502系のようにパイプラインを使っていても命令数は普通に数える事が出来ますよ。
それからデータの受信送信と、クロックのマスタースレーブは別問題でしょ
63:sage
04/04/14 15:06
>>58
別にペリフェラル使わなくても自分でポートパタパタさせて
送受信すればいいんじゃないの?
自分で2MHzのCLOCKをパタパタさせながらDATAOUT/INすれば。
こんな感じじゃだめ?
void SerialInOut(unsigned char bit)
{
unsigned char i;
/* 通信前の処理 */
CS = HIGH;
CLOCK = HIGH;
DATAOUT = HIGH;
/* 通信処理 */
CS = LOW;
for (i = 0; i < bit; i++){
CLOCK = LOW;
DATAOUT = outBuff[i];
/* 時間調整 */
CLOCK = HIGH;
inpBuff[i] = DATAIN;
/* 時間調整 */
}
CS = HIGH;
}
64:デフォルトの名無しさん
04/04/14 15:41
>>63
割り込みとか考えなくてもいいなら、それもアリかもなー
結局他の処理もさせることを考えると、前にも誰かが言ってたように
PLDかPIC辺りをフロントエンドにしないと、後で泣きを見るだろうな
65:デフォルトの名無しさん
04/04/14 20:48
>>63
例えば60の発言の例であげてある 12MHzのAVRを使ったとしても、1ビット出力するまでの間に実行可能な
命令は5,6命令程度。とても、63のプログラムは書けない。ソフトじゃ無理だと思うんだけどな。
62の発言のソフトディレイの使えるようなCPUは、基本的には遅いCPUといっていいでしょう。
63のプログラムが実行可能なほど高速だとCacheくらいは必須だろうから、ソフトディレイは
だめだと思うんだけどな。
66:デフォルトの名無しさん
04/04/14 21:23
単に信号出すだけなら
out命令を並べるだけだから 4MIPS あればいい
マスターで受信するなら out in out で時間を合わせる為に8MIPS必要
PICだと 8*4=32Mで動かさないといけなくなるな。
H8だと ストローブをクロック代わりにするようなアイデアが必要になるだろう
67:デフォルトの名無しさん
04/04/14 21:46
>>66
4MIPSだとループもできませんね。その程度のことでまにあうのなら、そもそもCPUを使う必要がないですね。
通信の確認作業で、信号出すだけでOKというのは、まずありませんからね。プロの仕事の場合は。
受信というのは、どういうことを言っているのか分からないのですが、データとして受け取れてこそ
受信じゃないでしょうか。 信号のつじつま合わせだけで動作確認終了とは、いかないんじゃないでしょうか。
68:60
04/04/14 23:39
SPIを発案したMotorolaのCPUなんかは3~16ビットの
半端なシリアルデータを送受信できるようだね。(DragonBallとか)
もっとも、実験用に簡単に入手・使用できるようなCPUじゃないけど。
69:デフォルトの名無しさん
04/04/15 01:22
>>68
そういや、昔860使った時出来たような気もするな。
でも何したいのか未だに良く分からんがQUICCじゃ大げさ過ぎないか?
SPIだったらオーバランが駄目というより
読み出し:CS立下りから有効Bit数のみ保証
書き込み:CS立ち上がり直前から有効Bit数分前の入力までが有効
ってな感じになってるんじゃないの?
これなら適切に処理してやれば8bit単位で伝送したって問題は無いだろ
70:デフォルトの名無しさん
04/04/15 07:32
>>67
データを受け取れてこその受信だが受信ポートをLSBかMSBにしておいて
回転命令2つををout命令に挟めばいい。
幸いPICとかはRAM上の回転も1サイクルだ。
そもそも、”ターゲットボードが2Mbpsで動くかどうかを評価するプログラム”
なんだから、信号のつじつま合わせのON/OFFでも信号さえ出せばOKだろう。
そうじゃないなら、どういう仕様か書けば必要な能力を見積もってあげるよ。
71:デフォルトの名無しさん
04/05/14 18:33
CPUのバグらしい現象を追跡するのにハード屋さんにつきあって、あっちこっちにプローブ用の
信号を「この位の幅のパルス出してね」ってのを一日中やった。どうやら証拠っぽい波形を得る
までにこっちはへとへと。あれでめげないハード屋さんって尊敬しちゃう。 この後この現象を
「英語で」メーカーへ文句たれるんだから、ますます尊敬しちゃう。
72:デフォルトの名無しさん
04/05/18 22:49
ハード屋は、ハードをソフトに置き換えるのがどれだけ大変か分かってない。
73:デフォルトの名無しさん
04/05/18 23:50
ソフト屋は、ソフトをハードに置き換えるのがどれだけ大変か分かってない。
74:デフォルトの名無しさん
04/05/19 08:06
>>72 禿同
>>73 んなこたーない
75:デフォルトの名無しさん
04/05/20 23:22
ソフト・ハード両方やっている者から言わせてもらうと、ソフト屋は甘いと思う。
76:デフォルトの名無しさん
04/05/20 23:45
近頃のハード屋は『ハードだけ』では通用しないしね
77:デフォルトの名無しさん
04/05/21 02:02
確かに、ソフトしか知らない奴は甘いね。
78:デフォルトの名無しさん
04/05/21 03:48
不具合発生
ハード屋はソフトで対処できるならハードの対処はしない
ソフト屋はハードで対処できることを知らされずソフトで対処する
79:デフォルトの名無しさん
04/05/21 21:27
不具合発生
ASICや基板はもちろん変更しない
ソフト屋は前回の流用だから変更したくないと言って変更しない
FPGAを変更する
80:デフォルトの名無しさん
04/05/21 21:55
不具合の対処なんてハードでやろうとソフトでやろうと原因はどうあれ
問題なく、より低コストで、ユーザにも納得させられるようできれば
どっちでも良いんとちゃうん?
81:デフォルトの名無しさん
04/05/21 23:07
コストの差が明らかでない場合も多いからな。
あと、高コストなものを作っている人間が常に楽をすることになるから、
愚痴のひとつも言いたくなるだろ。
82:デフォルトの名無しさん
04/05/21 23:49
でも、黙々とハード回路にパッチ当ててる姿とか見ると
ソフト屋でよかったってしみじみ思うよ
83:デフォルトの名無しさん
04/05/22 00:10
部品変更や改造って、購買からサービスまでの全部署全工程に影響出るしなぁ。
「ソフトで対処できるものはソフトで」ってのは、ハード屋だけの思惑ではないし。
84:デフォルトの名無しさん
04/05/22 00:30
>>83
禿胴
85:デフォルトの名無しさん
04/05/22 01:04
今時入手できないようなOpAmpでも交換しなくてはならなくなるからなぁ。
86:デフォルトの名無しさん
04/05/22 01:12
>>85
んだなぁ。
理想は、本生産開始までにハードバグ、ソフトバグが全て取れりゃいいんだけど
なぁ。
とは言っても、ハードもソフトも完璧でも、本生産開始から大分経ってから、例え
ば部品がディスコンになったりで、ハードやソフトを弄らなきゃならない事態に陥
るってのは有りがちだからなぁ…
はぁ…
87:デフォルトの名無しさん
04/05/22 11:46
>>82
0.5mm間隔のピンに半田付けしてジャンパー配線してる姿はまさに神業
ハード屋さんは電子機器界の外科医のようです
88:デフォルトの名無しさん
04/05/23 03:38
量産しない一品物はソフト修正よりハード修正の方が低コストなんだよな
89:デフォルトの名無しさん
04/05/24 00:46
>>87
QFPを手半田する人もすごいね。
90:デフォルトの名無しさん
04/05/25 00:40
0.5mmピッチまでなら手付けできる
ピン上げてジャンパー飛ばせネーけど
91:デフォルトの名無しさん
04/05/25 00:52
windowsでRS232Cを用いてデバイスを制御し、データの送受信を行いたいのですが、
初心者なのでよく分かりません・・・。分かりやすく説明してるサイトってないですか?
VC6.0++でやろうと思っているんですが。
92:デフォルトの名無しさん
04/05/25 01:39
そのデバイスとやらは何者だ?
93:デフォルトの名無しさん
04/05/25 05:54
>>91
シリアルは CreateFile で "COMx"を開いて ReadFile WriteFileで読み書きして
BuildCommDCB
BuildCommDCBAndTimeouts
GetCommXXXX SetCommXXXX とかで制御すればいいから簡単は簡単
VBやDelphiを使う方が簡単だと思うよ。
94:デフォルトの名無しさん
04/05/25 22:00
>>92
レーザー距離計です。
>>93
ありがとうございます。COMポートを複数開けるのも容易に出来るんですか?
初心者なもので・・・すいません。
自分はC以外やったことがないのでCでやろうかなと思っています。
95:デフォルトの名無しさん
04/05/27 00:41
昨日愕然としたこと。
ハード屋先輩「この石のXXとYYのピン、オープンなのに入力になっとるぞ」
ハード屋後輩「え、オープンのピンって入力にしておくのが普通じゃないのですか?」
(;´Д`)
この後輩、もう3年目ぐらいなんだけどなー。折れはソフト屋だけど
CMOSの入出力ピンをプルアップ/ダウンなしで入力にしちゃいけない
ことぐらい知ってるんだが・・・(キホンだよねぇ・・・
なんかたまに小難しいことをいう割にこんなことも知らないというのは
ちとなぁ。さすがに呆れた。新人ならともかく、いままで何をしてきたんだろうと。
まぁ、任されていたハードのデバッグがつまると、なぜか病気になって休んだり
と(w 問題行動が多かったけど、妙に腰を低く振る舞うから救われているだけ
なんだよな。休んだときは先輩が仕方なく尻ぬぐいしてたけど、不憫でならない
わ。休み明けに後輩が出てきて謝って、先輩はキニスンナとかそいつに言ってた
けど、影では先輩は上司に別の香具師に変えてくれと懇願してるよ(w
96:デフォルトの名無しさん
04/05/27 19:58
>>94
CでのWindowsプログラミングの経験次第かなぁ。
全く無いってのであれば、結局VBやDelphiで書いた方が早いって事も有り得る。
あとはまぁ納期次第かと思ったり。
97:デフォルトの名無しさん
04/05/28 01:18
PCと自作組込機器とをシリアルで結ぼうと思ったんだけど、
PC側は将来的には、VBか何かで作るとして、
とりあえずはフリーウェアのシリアル通信ソフトでお茶を濁そうと考えてたんだけど、
バイナリファイルを扱えるシリアル通信ソフトって意外とないものなのね
みんな、ターミナルソフトばっかり
98:デフォルトの名無しさん
04/05/28 02:19
自作基板なら好き勝手組めるんだからFTDIとか使ってみるのは?
PC側USBになって転送速度も上がるだろうし、ハッタリ効くし(w
FTDIのページにドライバー有るし、C、VB、Delphiのサンプルソースもある
機器側もシリアルかFIFOかチップで選べる
通販価格840円、難点はQFPなんで手配線だとピッチ変換基板が要る
99:デフォルトの名無しさん
04/05/28 06:00
>>97
自作機器ならテキストで扱えるようにしといたら?
何かと端末ソフトがそのまま使えるから何かと便利よ。
さもなきゃXMODEM辺りをサポートするかねぇ。
100:デフォルトの名無しさん
04/05/28 07:29
>97
>バイナリファイルを扱えるシリアル通信ソフト
フリーでSerial Command Exploreがあるよ(Winなら)
URLリンク(www.namakoworld.com)
装置のデバッグには結構便利
通信速度とデータ量の関係でバイナリで送らざるを得ないときもあるから
UDP版もあるし、あとはTCP版があれば良いんだけど
101:デフォルトの名無しさん
04/05/28 07:50
>>100
97じゃないけどイタダキ
アリガトン
102:デフォルトの名無しさん
04/05/28 14:55
>>95
「オープンなのに入力」ってのがよく判らない…
オープンドレインってこと?
103:デフォルトの名無しさん
04/05/28 15:07
>>102
オープン=未接続
CMOSデバイスの入力ピンを開放すると色々な問題があったはず…。
104:デフォルトの名無しさん
04/05/28 15:27
>>102
マイコンのI/Oが未接続なのに入力になっとる、って事だろうな。
こんなん見つけた。
URLリンク(www.h3.dion.ne.jp)
105:デフォルトの名無しさん
04/05/28 23:50
「組込み開発者におくるMISRA-C―組込みプログラミングの高信頼化ガイド」
が出ました。
URLリンク(www.amazon.co.jp)
みなさんよろぴく。
106:デフォルトの名無しさん
04/05/29 00:02
>105
ワカタヨ(アソシエイトのリファ抜き↓)
URLリンク(www.amazon.co.jp)
107:デフォルトの名無しさん
04/05/30 00:24
>>100
おっ、なかなか便利そうなフリーウェア
というわけでDLしたよ
理想は受信データをログ保存できて、送信もバイナリファイルを送信できるものなんだけど
108:デフォルトの名無しさん
04/06/12 14:13
部品の買い方・そろえ方。
ここさえなんとかなれば…
109:デフォルトの名無しさん
04/06/25 03:16
今Windowsで、BIOSのI/Oからデータを取得しようとしているのですが
BIOSのI/Oポートの一覧を調べるにはどうしたらいいのでしょうか?
またそういうのが見れる所がありますか?
110:デフォルトの名無しさん
04/06/26 10:32
Windowsだけでは判らんのよ。 NT系列なのか9x系列なのか。
それからBIOSのI/Oポートという書き方も良く判らん。
具体的にWindows2000ならデバイスマネージャ -> 表示->リソース(種類別)
で、アドレス一覧が表示出来る。
ただし、Windows2000なら、I/Oを直接読み書きするには誰かにサービスしてもらわないといけない。
GWIOPM GIVEIOなどが有名所だ。
111:109
04/06/27 00:34
>>110
どうもレスありがとうございます。
>Windowsだけでは判らんのよ。 NT系列なのか9x系列なのか。
>それからBIOSのI/Oポートという書き方も良く判らん。
すみません、説明不足でしたね・・
一応、NT系OSでI/Oアクセス出来る様に「giveio.sys」を導入して
I/Oアクセス可能にする所までは出来てます。
具体的に何がしたいかと言いますと、CPU温度とかファン回転数みたいな、BIOS上で参照出来る情報が取得したいんです。
自分で色々調べた結果、BIOSのI/Oにアクセスして情報を取得出来るという所までは分かったのですが
具体的に、どのI/Oポートアドレス?からデータを引き出せばよいか分からないんです・・
この辺は、モニタリングチップや、マザーボードの種類によって色々変わってくるみたいですので
その辺の事が、ハードの種類別に知りたいのですが、そういう事を調べるにはどうしたらよいでしょうか?
あまり、ハードウェア関係の知識がありませんので
言っている事が分かりづらいかもしれませんが・・
112:デフォルトの名無しさん
04/06/27 00:43
>>111
Linuxのならソースあるんじゃない?
113:デフォルトの名無しさん
04/06/27 00:54
>112
ナイスぼけ
114:デフォルトの名無しさん
04/06/27 00:59
たしかに舌足らずだったな。
URLリンク(www.itmedia.co.jp)
のあたりのソースを参考に、ってことだ
115:109
04/06/27 01:29
>>114
情報をどうも。
とりあえず、ソースがあるのなら「Lm_sensor」でも落してみます。
また良い情報がありましたら、宜しくお願いします。
116:デフォルトの名無しさん
04/06/30 09:43
PowerPartsとGENWARE2の評価教えて下さいでつ。
117:デフォルトの名無しさん
04/06/30 17:50
T-Engineで開発費抑えれるかと思いきや、
開発環境やライセンスが異常に高価でない?
こんなんじゃ、Win系に制覇されちゃうかも。
WinCE/T-Kernelなんてデモしたにもかかわらず、
WinCE 5.0のアナウンスにも入ってないし。
118:デフォルトの名無しさん
04/06/30 18:05
>>117
どの開発環境と、どのような事で比べましたか?
119:デフォルトの名無しさん
04/06/30 19:02
>>118
iTRONにGUIライブラリとフォントを足すのと、
WinCEのライセンス価格を調べました。
WinCEはMSECで動作せず、
バージョンアップ販売停止がはやいので、
組み込みに不向きなのは知ってますが。
120:デフォルトの名無しさん
04/07/01 18:33
>>117 !? 開発環境はLinuxかCygwinだからタダじゃなくて?
まあ周辺のライブラリは必要になるが。
121:120
04/07/01 18:33
失礼 >>119読んでなかった・・
122:デフォルトの名無しさん
04/07/01 18:34
gcc使えば無料
ライブラリは自作したりフリーの使えば無料
123:デフォルトの名無しさん
04/07/02 00:22
>>119
QNXにしとけ
124:デフォルトの名無しさん
04/07/02 08:49
詳しく教えて。>>123
QNXって、まさか100マイクロセカンドで動作出来たりしないよね?
出来たらITRON並みのUNIXだね。
125:デフォルトの名無しさん
04/07/04 21:52
>>124
QNXはRTOSだぞ。。。。
126:デフォルトの名無しさん
04/07/04 22:45
VxWorksマンセー
127:デフォルトの名無しさん
04/07/05 00:17
>>126
高いよママン
128:デフォルトの名無しさん
04/07/05 06:55
割込ハンドラと割込ルーチンはどこが違うのですか?
また、なぜ分ける必要があるのでしょうか?
129:デフォルトの名無しさん
04/07/05 17:39
windowsXP,c言語でAPIを使ってCOMポートの制御やってるんですが、
受信バッファのサイズを変更するなど、
バッファに関するAPIはどのようなものがあるか教えて頂けませんか?
130:デフォルトの名無しさん
04/07/05 23:45
>>128
言葉の違いにしか思えないけど、
その二つが具体的にどんなものなのか書いたら説明できるかも。
思いつきで想像すると、
割り込みによって起動される処理で
とりあえずハードからさっさと情報をかき集めるだけの処理と
集めた情報をちょっと落ち着いてから処理する部分かな?
(WindowsではDPCとかLINUXだとBHとかいうやつ)
分ける理由は、割り込み処理内では使えるAPIが限られているのと
割り込みでいつまでももたもた処理しているとみんなの迷惑だから。
>>129
COMポートでバッファといったら、
後は送信バッファとUARTのFIFOサイズ
送受信とも、バッファの残りがどのくらいになったら
通知してくれるかの設定くらいしか思い浮かばん。
実装上、どうすればいいかは、MSDNでも使ってしらべれ。
131:デフォルトの名無しさん
04/07/06 00:42
>>128
割込ハンドラ・・・とにかく他の割込を禁止してでも、緊急に処理しなければならない必要最小限のプログラム
割込ルーチン・・・ハンドラで処理の終わった残りのプログラム。あとで少し余裕を持って(メインルーチンで)処理。他の割込は受付可能。
分ける理由・・・割込禁止区間を長くしたくないから。
こんなところでどう?
132:デフォルトの名無しさん
04/07/06 05:20
>>131
ちょっと用語集も調べて見たけど、ハンドラのことを緊急に処理しなければならない必要最小限のプログラムと
定義したものはなかった。プログラマ結構長くやっているけど、そういう区別を自分は耳にしたことはない。
OSを使っている場合に、割り込みハンドラという言い方をしているかと自分は思っていたけど、用語集を見る限り
割り込みハンドラは、割り込み時に読み出されるプログラムコードという定義がしてあるようだ。
特に、区別されてないんではないのかな?
133:デフォルトの名無しさん
04/07/06 06:15
>>128の言う割り込みルーチンというのは
割り込みハンドラから起動されるタスクのことを指しているのかも
134:デフォルトの名無しさん
04/07/06 07:51
某CPUだと、割り込みハンドラって所謂割り込みベクタに書けるような小さいロジックってイメージが…
#で、通常はそこにはジャンプだけ書いておいて飛んだ先が割り込みルーチン。
135:デフォルトの名無しさん
04/07/06 14:12
「割り込みハンドラ」「割り込みルーチン」から
割り込み時の飛び先が1個所で、割り込み要因をチマチマと割り込みを発生させた
デバイスのレジスタのビットをチェックして、それぞれのルーチンに飛ばしてる
大昔のゲーム機を思い浮かべた
136:デフォルトの名無しさん
04/07/06 21:39
>>134
H8なんかそうでしょ?
て言うか普通そうなんじゃないの?
>>135
SHは割込ハンドラの中で割込を発生させた要因を調べなければならなかったような
137:デフォルトの名無しさん
04/07/06 22:34
>>136
SHにかぎらずRISCプロセッサはみなそんな感じ。
RISCにかぎらずPCIだとそれしかないし、
Chain of Responsibility な割り込みハンドラになるし。
138:123
04/07/06 23:04
>>124
日本語である程度文書あるね
URLリンク(www.qnx.co.jp)
ホワイトペーパーよんでQNXマンセーしる。
>>126
6.0は売れないとみた。
139:デフォルトの名無しさん
04/07/07 01:00
>>136
SH3から
SH2までは要因ごとのべくた
140:デフォルトの名無しさん
04/07/07 10:39
H8やSHについて解説してあるページや書籍には
どんなものがあるんでしょうか?
おすすめ教えてください。
141:デフォルトの名無しさん
04/07/07 11:17
>>140
オフィシャルサイトからデータシートをダウンロードできると思いますが。
142:デフォルトの名無しさん
04/07/07 11:35
>>140
丁寧なアプリケーションノートが置いてあるよね。
143:デフォルトの名無しさん
04/07/07 23:05
>>140
ピンからキリまで、腐るほどある
144:デフォルトの名無しさん
04/07/08 09:59
今からビッグサイト逝く香具師の数→(1)
145:デフォルトの名無しさん
04/07/08 19:30
明日逝くょ。
146:デフォルトの名無しさん
04/07/08 21:43
ビッグサイト、暑そうだな。
147:デフォルトの名無しさん
04/07/08 23:02
>>144
俺も明日
148:デフォルトの名無しさん
04/07/08 23:29
逝ったひとは感想をplease。
イイ!!とダメダコイツラ..ってのを。
149:デフォルトの名無しさん
04/07/09 00:32
コンパニオンのS/N比が気になる。
ってかそんなにいないか。
150:デフォルトの名無しさん
04/07/09 01:52
>>140
日立時代は電話すればマニュアルを無料で送ってくれた。
ルネサスになってからは、知らない。
151:デフォルトの名無しさん
04/07/09 01:54
MSのブースでVS2005のDEMO中
フリーズしてDEMO中止になった
152:デフォルトの名無しさん
04/07/09 01:55
>>150
日立時代は、日立のサイトからマニュアルをダウンロードできたが
ハードコピーマニュアルをスキャナで取り込んでPDF化したもので
とても使えるものではなかった。
ルネサスになってからはまともなPDFをサイトからダウンロードできるようになった。
(あれ?その前からかな?)
153:デフォルトの名無しさん
04/07/09 01:56
初期の時はしらないが、SuperHのサイトのときは普通のPDFだった記憶がある
154:デフォルトの名無しさん
04/07/09 01:58
>>153
あ、すまへん。言葉がたんなかった。
H8がそんなヘボイPDFだった。SHはマトモなPDFだった。
155:デフォルトの名無しさん
04/07/09 09:49
初心者が一番はじめに手を出すとしたらどのチップがよいでしょうか。
やはりmips?
H8が人気なのはトラ技のせいなのかな・・
156:デフォルトの名無しさん
04/07/09 11:34
>>152
古いマニュアルはそんなんだな。PDF化できる電子データがないんだろう。
ページ数のわりにやたらでかいので、落とすのも大変だった…
157:デフォルトの名無しさん
04/07/09 15:34
>>155
取り敢えずCPUを触ってみたいってんであれば、Z80辺りを
触ってみては?
参考資料も多いし、CPUの基礎を勉強するには手頃なんじゃ
ねぇかなぁ。今でも現役で使えるし。
158:デフォルトの名無しさん
04/07/09 15:37
>初心者が一番はじめに手を出すとしたらどの
仕事?趣味?学校? どこでどーするのかオシエレ
159:155
04/07/09 17:26
>>158
PC上でC言語などでのプログラミング経験があるが、組み込みの経験が
ない人を対象として、コンピュータの仕組みをよく理解するために、
それほど複雑でないマイコンを使って、アセンブリ言語やC言語などで
プログラミングして実際にポートの入出力などを体験しながら学習する、
といった用途です。
160:デフォルトの名無しさん
04/07/09 18:00
>>159
秋月電子にあるようなボードでするのがラクかもね
個人的にはH8やSHやったほうがいいかなって気はするけど、
PICも捨てがたい・・・
161:デフォルトの名無しさん
04/07/09 18:07
>>159
秋月のH8ものに一票
intは16ビットと叩き込む(w
PICやAVRなのど石はまんどくさいよ
162:デフォルトの名無しさん
04/07/09 18:58
RS-232CのTxDをC#から制御しようと思ってます。
目的は学習リモコン
38kHzの変調もソフト出かけるつもりです。
今、com1の設定を115200bpsにすると
1bit=8.68us
38kHzのキャリアは1/38kHzだと26.3us
duty比がわからないのですが、
110か100にしてキャリアの1cycleが1bitになるようにして
データを送ったのですが機器が反応しません。
どこがまずいのでしょうか?
163:デフォルトの名無しさん
04/07/09 20:58
>>162
>どこがまずいのでしょうか?
この程度の情報で答が得られると思ってる162の頭
IR-LEDはどのように発光させてるの?
で、発光してる位は確認済み?
164:デフォルトの名無しさん
04/07/09 21:17
学習リモコンのハードも自作するのかな?
165:162
04/07/09 21:40
情報少なくてすいません。
電流制限抵抗なしでTxD-GND間にIR-LEDつけてます。
発行してるかどうかは赤LEDに付け替えて目視確認しました。
スタンドアロンのリモコンとしてではなくPCから制御するつもりです。
//これまでにしたこと。
LIRC,WinLIRCのサイトを見てDCD受信、DTR送信なトランスミッターを作成。
winLIRCにて、外部機器が無事動作するのを確認。
つぎに上述のTxD-IR-LED送信機(っていうほどでもないですが)を作成して
WinLIRCで取得した生データ(High us,low us...)を元に
>>162に至った次第です。
166:163
04/07/09 22:43
なるほど。そこそこはやってるのね。
>電流制限抵抗なしでTxD-GND間にIR-LEDつけてます。
大丈夫か? そんなことして。って気がしないでもないが、
WinLIRCとやらはテストの足しにはならないのでしょうか?
167:162
04/07/09 23:08
LEDは大丈夫なようです。(WinLIRCからだと無事動く)
念のためCRDいれときます。
WinLIRCは生データを覚えてそれをそのまま吐き出す用にできていて、
入力はDCD,RxD 出力はDTR,TxDが選べるようになっているので
とりあえず丸覚えさせたデータをTxDで出してみて動作確認はしました。
やはりduty比が悪いんでしょうか?(1/3か2/3しか選べないのが…)
168:デフォルトの名無しさん
04/07/09 23:17
>>148
ダメってわけじゃないが
T-engineばっかりで嫌になった
169:163
04/07/10 01:14
>>167
>とりあえず丸覚えさせたデータをTxDで出してみて動作確認はしました。
ってのは、本来のリモコンの送信を学習できるのを確認したってことだよね?
WinLIRCが記憶するデータの仕様が分かるなら、自作の送信機を学習させて
比べてみたらどうだろ。
キャリアのdutyは50%が良いんだろうけど、実は中心周波数が安定していれば
大丈夫な気がする。
それより、普通にTxDをキャリアとして使おうとしたらStart|Stop bitをうまく
処理しなくちゃと思うのだが、それは大丈夫なんだろか。
170:163
04/07/10 01:38
何度もありがとうございます。
winLIRCのデータの仕様は Xμsec high , Xμsec lowの繰り返しだけで、
それをそのまま自作の送信プログラムに持ってきてます。
C#でシリアル通信をするのに、ネットで拾ってきたラッパー
URLリンク(www.gotdotnet.com)
をつかって
public void Write(byte[] buffer, int offset, int count)
を使ってます。
シリアル通信仕様をいまいちわかってないのですが、
start,stop bit(1bitに設定)というのは1byteごとの最初と最後に1がつくってことなんでしょうか?
171:デフォルトの名無しさん
04/07/10 03:14
>>159
AlteraのNiosとかどうよ?
トレーニングキットで、ついでにデジタル回路の学習もできるっていうおまけつき。
あんまり情報がないからダメか?
172:デフォルトの名無しさん
04/07/10 10:02
>>170
>シリアル通信仕様をいまいちわかってないのですが、
>start,stop bit(1bitに設定)というのは1byteごとの最初と最後に1がつくってことなんでしょうか?
その通り
調歩同期やUARTで調べてみろ
173:163
04/07/10 11:49
>>172さんありがとうございます。
非同期通信=調歩同期 start,stopビットありなんですね。
で、ふつうにラッパーとかが想定してる送信方法はこれと。
TxDピンの出力を直接制御するのはかなり難しそうですね…
うーん…
同期送信ってあんまりメジャーじゃないみたいで。
174:デフォルトの名無しさん
04/07/10 14:58
>>171
その通りじゃないでしょ。 startビットは0 stopビットは1
だからstopサイズが1 でデータサイズが8なら 10bit周期しか作れない。
だから 0<10101010>1 これはOKだけど、これ以外は難しいよ。 これで送信してみては?
周期がバラバラずれると、受信機には、振幅変調がかかるようになるからダメ。
175:163
04/07/10 15:21
>>174さん ご丁寧にありがとうございます。
>> 0<10101010>1
の場合“だけ”ですよね?
start/stop,1bitで周期がずれずに送信可能なのって。
Highを出力するのはこの手でいけそうですが、
Lowが続くとき、 0x00 を送信したとしても 受信する側からみたら
b' 00000 00001 になっちゃうから結局リモコンとしては使えなさそうですね…
PICみたいな感覚でいたのでもっとDTRにしろTxDに任意のピンをいじれるかなって
思ってたので、考えが甘かったみたいです。
176:163
04/07/10 15:24
PICみたいな感覚でいたのでもっとDTRにしろTxDに任意のピンをいじれるかなって
↓訂正
PICみたいな感覚でいたので、DTRにしろTxDにしろ任意のピンの状態をいじれるかなって
すいません。
177:デフォルトの名無しさん
04/07/10 17:00
>>174
アヒャ!
Low/Highみてなかった
>>175
正直、そういう用途でピンを弄るなら
プリンタ出力でやれ
178:デフォルトの名無しさん
04/07/10 17:15
>>175周波数が違えば振幅変調になるから 0 0000 0000 1 でも距離を離せばいけるかもしれないよ。
他に、例えば DTRとの間で送信するようにして、TXには常時送信してるようにしてDTRでON/OFFするとか
あるいは、PIC使えるなら PICにシリアル送信でコマンド送って PICで赤外送信したらどう?
179:163
04/07/10 17:28
みなさんお付き合い頂きありがとうございます。
>>177さん
LPTですか。 盲点でした。 LPTの扱いについてもこれを機にちょっと調べてみます。
>>178さん
2ピン使ってANDとるのもありですね。
TxDにbyte[]送るときに、 byte[] = 0x00なら DTR = LOW
それ以外で、Highにして。
早速やってみます!
180:デフォルトの名無しさん
04/07/10 17:53
>>179
and 取るというか、単純に2電間でLEDを点けるだけだよ。
TxD-GND間にLED入れてるんでしょ? GNDの代わりにつなぎ変えるだけ。
RS232Cでは、ショートした時の電流規格があった筈で、火災が起きないような電流に制限されてたから
リモコン用の赤外LEDなら壊れないとは思うけど・・・まあ抵抗入れた方がいいと思うけどね。
181:デフォルトの名無しさん
04/07/10 17:57
|3・)・・・
182:デフォルトの名無しさん
04/07/10 17:58
|3・)アルェーゴバクシッチャッタyo
183:ホンモノの163
04/07/10 20:09
しょうがねえなぁ…
COMポートを速度 115200bps、データ長 7bits、ノンパリティ、ストップビット長 1bit
で設定して、データとして 0x12 か 0x5B を連続して送出してみな。
TxDからきれいな38.4kHzの信号が出るはずだから。
184:163
04/07/10 20:24
>>183
ありがとうございます。
ちょうど>>174さんの方法だと57.6khzになるので困ってました。
0x12 は 0 0100100 1 で100,100,100でバッチリなるのでこれで行ってみます。
185:ホンモノの163
04/07/10 21:01
おっ!飲みこみが早いねぇ
その調子ならきっとうまく行くよ。
ちょっと気になるのは、TxDから直接取れる電流じゃ多分弱々なんじゃってこと。
昔の記憶を辿るとLEDには数100mA(ピーク時)を流した覚えがある。
そうしないと数メートルと離れられない。
もしかしたら今のLEDは高輝度だから大丈夫なのかもしれないが…
186:デフォルトの名無しさん
04/07/10 22:02
>>185
正直、PCからの出力でTr制御して
別電源で駆動したいところだ
187:デフォルトの名無しさん
04/07/10 22:09
アキバでLEDと抵抗買ってこい
今時のLEDは10mA流せば十分
188:デフォルトの名無しさん
04/07/10 22:13
なんか面白そうな事やってるなぁ。
夏休みの自由研究にでも出来そうなネタだ。
189:187
04/07/10 22:18
ああ、ただLED光らせるんじゃないのか・・・
IR-LEDでリモコン制御か、ログ全然読んでなかった
スマソ
190:デフォルトの名無しさん
04/07/10 22:21
>>189
そんなトコじゃないかと思ってた。
191:名無しさん@そうだ選挙に行こう
04/07/11 11:50
(´-`).。oO(X68000+ジョイスティックポートで学習リモコン作ったなぁ…)
192:名無しさん@そうだ選挙に行こう
04/07/11 14:09
昔は楽しそうだなあ
193: ◆Wsx33BP8MQ
04/07/11 18:57
162(170/173/175)です。
>>163さん
途中から番号間違ってしまってすいません。 トリップつけます。
38kHzのパルスを作るには0x12@7bitでいけそうなんですが、
0x00がやはりstopbitがついて 0 0000 0000 1 0 0000 0000 1 0...
になってしまうので、上ででた
TxD-IR_LED-CRD-DTR
にして、
bool pulse //LED,ONの時true
byte p = 0x12 l = 0x00 で、
this.serialPort1.BaudRate=115200;
this.serialPort1.DataBits=7;
if(pulse)
{this.serialPort1.DtrEnable = false;
this.serialPort1.Write(p,0,1);
}
else
{this.serialPort1.DtrEnable = true;
this.serialPort1.Write(l,0,1);
} }
としてるのですが、LEDはちゃんとpulse=trueの時だけ発光してるのですが、
機器が動作しない=コードが認識されてない 状態です。
194:名無しさん@そうだ選挙に行こう
04/07/11 20:01
>>162
発振はRとCとインバータでマルチバイブレータ作ったほうが簡単だと思うが。。。
あとIR-LEDが光ってるかどうかはビデオカメラ等でも確認できる。(CCDでは緑っぽく光って見える)
195: ◆Wsx33BP8MQ
04/07/11 21:21
PICで作った100mSecに何個パルスが来るか数える周波数カウンタに
TxDの出力を入れると…80Hzとか…
while(true)
this.serialPort1.DtrEnable = false;
this.serialPort1.DtrEnable = true;
しても1(ずっとHight)
無限ループ中に for(int i =0;i<4000<i++){}
な空ループ入れると8kHzくらいになるんですが。
いったいどこが悪いんでしょうか…
わけわかんなくなってきました…
WinLIRCはいったいどうやって高速にシリアルポート制御してるんだろう…
DTR出力ですら38kHz作れるなんて…
196:ホンモノの163
04/07/11 23:28
>>193
COMポートから 0x00 を送信する局面ってあるか?
赤外線リモコンってキャリアのON/OFFだけで変調かけるわけだから、
TxDでキャリアを送出するならタイマ割り込み契機でトランスミッタを
Enable/Disableすれば良いんじゃないかなぁ。
書かれたコードじゃどうに変調かけてるのかサッパリ分からんです。
>>195
そのカウンタってのにTxDを直接入れたのか?
TxD(というかCOMポートの出力)はTTLレベルじゃないのはOK?
197:デフォルトの名無しさん
04/07/11 23:41
PICがあるなら PICにデータ出力して送出してもらえば?
つうか そんな問題じゃないか。。
198: ◆Wsx33BP8MQ
04/07/11 23:49
>>163さん 長らくお付き合い頂きありがとうございます。
トランスミッタってのはどの部分をさしてるんでしょうか?
後、タイマ割り込みはμsecオーダーで機能するんでしょうか?
カウンタにはフォトカプラ経由で入れました。
で、さらに調べて、WinLIRCでTxDにIR-LEDをつないで送信して機器が動作するのを確認して、
LEDはずしてカウンタにたたき込んでも全然カウンタが拾えてないみたいです。
PICカウンタ自体は、555なんかで発振したのをたたき込むと16bit/100mSecまで確実にカウントできるので、
何が原因か調査中です。
199: ◆Wsx33BP8MQ
04/07/12 00:57
フォトカプラ使うのやめて
TxD抵抗-Red_LED-ベース
Vcc-コレクタ
エミッタ-10kΩ-GND(232C,PIC共通)
でエミッタ電圧をカウントするようにしたら無事カウントできました。
で、たぶん機器が赤外線受け手も動かない原因は
>>193で書いた0x00にstop bit 1がつくのと、
示したコードだと38kHzがでてないっぽいです
とりあえずコードの問題のようなので、いろいろがんばってみます。
200:ホンモノの163
04/07/12 01:28
>>198
トランスミッタってのはCOM?のデータ送信部のことだよ、この場合。
PCのタイマ割り込みでもH/Wとしてはμsec単位程度の精度は出る。
Windowsの上でどうかと云われると分かんない。調べてみてくれ。
尤も赤外線リモコンじゃμsecの精度は全然要らないと思うが…
WinLIRCとやらでも充分な精度の計時をやってるはずだから何等かの方法は
あるってわけだ。
>>199
>193のコードだと 1byte送出しておしまい、なんてことはない?よな…
まあがんばってくれ。
201:デフォルトの名無しさん
04/07/12 07:52
実機デバッグのまったくできない環境は、制御系の場合、けっこうあると思うのですが、
こういう場合、どうやって、実戦投入一発で決めたり、実機のない状態で、バグをつぶしたりするのですか?
202:デフォルトの名無しさん
04/07/12 09:24
>>201
脳内エミュレータ
203:デフォルトの名無しさん
04/07/12 09:37
>>201
"HILS" "検証"でググれ!
204:デフォルトの名無しさん
04/07/12 16:50
>>201
人生色々。 環境も色々。
実機デバッグ出来ないような環境だと、仕様さえまともに決まってない場合が多いしね。
自分が良くやるのは制御系なら簡単な中間言語スクリプトを作って
そいつのエミュレータをWindows上で作って、そいつで主な動作は仕上げるようにして、対応力を上げておき
先に元客にそいつを触って貰って実機来る前に大方を固めるパターンかな。
205:デフォルトの名無しさん
04/07/13 06:24
>>204
中間言語スクリプトと言うとPerlか何かですか?
206:デフォルトの名無しさん
04/07/13 06:37
>>205
なんでやねん。
207:デフォルトの名無しさん
04/07/14 08:30
>>205
そんな賢いもんじゃなくて、四則演算と内部関数呼び出しが出来る程度のものね。
言語仕様としては昔のbasicより貧弱な程度、中間言語はスタックマシンで十分実用になるよ。
208: ◆Wsx33BP8MQ
04/07/15 22:22
ちょっと間が空きましたが、進展なしです…
winLIRCの出力パルスを見てみたんですが、405と変な数で
もう何がなんだか分けわかんなくなってPICなぞ買ってみましたorz
まぁPICは別に使う予定なんですが、こっちも最悪PICかなとも思ったり…
209:163
04/07/16 21:02
>>208
> winLIRCの出力パルスを見てみたんですが、405と変な数で
ってのは、もしかして100ms間のパルスを数えたんじゃないの?
事象が100ms以下の場合のことは考慮してる?
赤外線リモコンって1シーケンスはせいぜい数10msだと思うんだよな。
210:デフォルトの名無しさん
04/07/17 09:20
赤外線リモコンは 変調 40KHz付近 (38~42K)で 16周期程度が1単位になってる事が多い
1:1/1:3 とか 1:1/ 1:2 が1ビット つまり0,1で長さが異なる 固定長レートではない事が多い。
211: ◆Wsx33BP8MQ
04/07/17 13:26
ぇーっと大事な発見をしました。
URLリンク(elm-chan.org)
をみてたんですが、
100100100 を 送ると ピンの出力電圧としては -10V,+10V,+10V,-10V,+10V,+10V,-10V,+10V,+10V
になるんですね。
>>163さん
100msで数えてます。出力は合計39msくらいです。うち発光部が20msなので
20msで405だとキャリアが38kHzにならないんですよ…
winLIRCみるかぎり38kHz Duty1/2で出してるみたいなんですが。
212:デフォルトの名無しさん
04/07/17 13:52
>>193 >としてるのですが、LEDはちゃんとpulse=trueの時だけ発光してるのですが、
ほんとにこうなってるなら ±10Vで反転してるのは問題ないと思うが
213: ◆Wsx33BP8MQ
04/07/17 15:29
>>193
が間違えていたようです。
常に38kの変調かけてるつもりだったので、
duty1/3じゃなく2/3で光ってたみたいです。
ぁぅぁぅ
214: ◆Wsx33BP8MQ
04/07/18 22:29
笑ってください…ヘタレです…
555つかって38kHzのキャリア作って無事動作しました…
今の僕には100us単位でしか制御できないみたいです…
while(true)
{
this.serialPort1.DtrEnable=true;
this.serialPort1.DtrEnable=false;
}
ってコード書いてDTRを抵抗通してPICのカウンターに入れても
10.3kHz程度しかでないの…C#+シリアル通信ラッパーだと38kのキャリア生成できなさそうで…
調歩同期で0x6Dおくれば38kHz duty1/3でますが、こちらもいまいち
動いてくれないので…
可能性としてはまだ調歩同期ならいけそうな気もするのでがんばってみます…
215:デフォルトの名無しさん
04/07/18 22:35
>>214
いいやん。取り敢えず別法ってのはアリだよ。全部ソフトで
やらなあかんって事はないし、全部ハードでやらなあかんっ
て事もないしね。
ソフトで38kHzのキャリア作るのは宿題と言う事で今後も
研究してみるといいと思う。
216:デフォルトの名無しさん
04/07/18 23:54
>>214
なんか基本的なところで間違ってる気がするんだよな~
217: ◆Wsx33BP8MQ
04/07/19 01:05
まとめ
・DTRを切り替えるのは遅い。
・TxDに115200bpsに 1101101(0x6D)を送ればduty1/3の38kHzになる
・ラッパーのWrite(byte[],int offset,int count)メソッドで
各要素が0x6Dの配列pulse[]を Write(pulse,0,発光時間(μsec)/78)
で送信
QueryPerformanceCounter(ref long);
で出力Low時間分待ち。
上に戻る。
でやってみましたがだめでした
>>216さん
ヒントください…
218: ◆Wsx33BP8MQ
04/07/19 01:13
できたーーーーーーーーーーーーー
217の内容読み直して自分で見直したらできたーー!!!
やったーーー
for(int i=0;i<len.Length;i++) //len[1]=(発光時間/78)μsec len[2]消灯時間そのまま(μsec) len[3](発光時間/78)μsec …
{
pulse=!pulse;
if(pulse)
{
last+=len[i]*freq/12820; // 78/1000000 = 1/12820
this.serialPort1.Write(p,0,(int)len[i]);
end = last + len[i+1] * freq / 1000000;
}
else
{
while (last < end)
{
QueryPerformanceCounter(ref lasttime);
}
}
}
でいけました!
219: ◆Wsx33BP8MQ
04/07/19 01:17
あ、ソースの
QueryPerformanceCounter(ref lasttime);
↓
QueryPerformanceCounter(ref last);
です。板汚しスマソ
一応プログラム全体としては,high,lowを一行ごとにusec単位で書いた
テキストファイル読み込んで動作します。
6行目が味噌でした。 現在の時間を取るのに
送信終わった跡で、
QueryPerformanceCounter(ref time);
をかけずに自分で指定しないとだめだったみたいです。
長らくありがとうございました。
ASPと組み合わせて携帯からアクセスしてエアコンの効いた部屋に帰れそうです。
220:216==163
04/07/19 01:50
まずは良かったね。
ん? 0x6D なんてどっから出てきたんだよ!
ふ~ん、そんなんでも動いちゃうんだヽ(^o^;ノ
勉強になりました。ありがとう
221: ◆Wsx33BP8MQ
04/07/19 11:30
0x6D=1101101
にstart stopがついて 0 110 1101 1
出力はこれを反転させて1 001 0010 0
のつもりだったんですが。
で…0x12,0xED,0x7Dとか0x11(これは適当) でも動いちゃいました…
結構アバウトというか何というか…
極めつけに0x00でも動きましたよ…
一応0x6Dが38kHz duty 1/3には一番近いと思うのでこれで行くつもりです。
222:デフォルトの名無しさん
04/07/19 16:30
>携帯からアクセスしてエアコンの効いた部屋に帰れそうです。
志低いなぁ、おい。w
まぁ、サボるために定時連絡電文発呼装置作ったエジソンよりはましか。
223:デフォルトの名無しさん
04/07/19 20:01
>>222
まぁ必要は発明の母だからな。
あれだ、目的意識がある分、所謂「言語やろうと思いますが、何作ったらいいでしょうか?」
って頭悪い奴よりは遥かにマトモかと。この経験はきっと何処かで生きると思うしね。
基本的にモノと言うものは人間が楽をする為に作る訳だしね。
224:デフォルトの名無しさん
04/07/19 22:27
>>223
>まぁ必要は発明の母だからな。
それを言ったのはエジソンだってことだね。
ついでに言えば、>221は「発明は1%のひらめきと、99%の努力」をも地で行ったわけだね。
225:デフォルトの名無しさん
04/07/19 23:08
>>224
んだな。まぁエジソンは若い頃は列車でボヤを出したり、>>222のように
手段に溺れて目的を逸脱したモノも作っちゃうんだけどね。それでクビ
になるのは当然なんだが。それもまた経験なのかも知れず。
226: ◆Wsx33BP8MQ
04/07/20 00:00
いろいろとご意見ありがとうございます。
99%の努力のうちまだ30%くらいしかできてない気がします。
残りの69%は受信部分…
これまではwinLircって別のソフトで受信したのを送ってたんですが、
DSRピンをIR受光モジュールの出力につないで、
100usecごとに読めばいけるかと思いきや全然そんなこと無いみたいで。
まだまだ長い道のりがまってそうです。
227:163
04/07/20 00:01
>>221
> 0x6D=1101101にstart stopがついて 0 110 1101 1
もう一度基礎からやり直せ。
> 出力はこれを反転させて1 001 0010 0のつもりだったんですが。
そういう論理レベルと物理レベルをごっちゃにするような考え方はすべきでない。
短いお付き合いでしたが以上を餞の言葉とさせて頂きます。
228:デフォルトの名無しさん
04/07/22 22:59
19じとか、20じとかに こんなこと書いてるなら、もう少しやってから帰ればいいのに・・・
229:デフォルトの名無しさん
04/07/24 15:09
多数の入力が非同期に入力され、
それに応じて、出力や内部状態を変化させる、
そういう場合にエレガントにコーディングする方法はないのでしょうか?
状態遷移を関数テーブルなどで組んだとしても、
入力が多数で、その入力の組み合わせで、次の状態が決まるようなケースだと、
状態遷移関数が複雑で長くなると思うのですが。
230:デフォルトの名無しさん
04/07/24 15:40
>>229
入力の検出手段を複数用意するとか
231:デフォルトの名無しさん
04/07/24 16:01
>>229
いっそラダーチャートの方がシンプルかつエレガントだったりして。
232:デフォルトの名無しさん
04/07/24 16:23
象かよ
233:デフォルトの名無しさん
04/07/24 20:46
>>232
それはエレフ(ry
234:デフォルトの名無しさん
04/07/25 00:09
>>231
ラダーはシンプルかつエレガントでしょ
グラフィカルで直感的に把握しやすい
>>229のような用途に使うために開発された言語なんだから
>>229もラダーを使ってみたら?
235:デフォルトの名無しさん
04/07/25 02:26
>>229
分割っつーか、個々の状態の組み合わせには出来んのか?
236:デフォルトの名無しさん
04/07/25 06:47
>>236
ラダーか。自分がやったなかでは、最も嫌いなものだな。20世紀に置いて
くるべきだって思うくらい嫌いだったな。
昔のBASICの悪夢を極端に増幅させてたな。ちょっと前なので、改善
されてるかもしれないが、自分が仕事中に感じたのは
(1) 基本的に機能拡張がないので、際限なく増えた命令
(2) 遅い、制御には問題ないが、処理には向かない。
(2) サブルーチンやライブラリもないので、カット アンド ペースト命
(3) 変数、I/Oはコイル番号。記憶力が良くないときつい。
(4) ソースをパソコンに読み出して編集とかできなかった。不便だった。
(5) 機種ごとの互換性がない。
(6) 人の書いたラダーなんか読めたもんじゃない。
オブジェクト指向どころか、構造化プログラミングも糞食らえの、
超プリミティブ環境。簡単な制御ならOKだと思うけど、結構複雑な制御も
しているみたいで、信じられなかった。
かなり偏見が入っている気がするが、自分はもう二度とやりたくない。
237:デフォルトの名無しさん
04/07/25 06:50
>>229
論理演算でさらっと
238:デフォルトの名無しさん
04/07/25 07:29
>>239
>そういう場合にエレガントにコーディングする方法はないのでしょうか?
もっと具体的な例を出してもらわないことには何ともいえないな・・・
239:デフォルトの名無しさん
04/07/25 12:31
>>236 かなり偏見が入っている気がするが
偏見ではない。
ラダーは、電気が流れると磁石が働き、スイッチが閉じることを知っているだ
けで設計できるもの。本来は機械屋さんが電気屋を介さずに、自分で機械系を
制御するときに使うもの。
でも、工場のラインの制御で使われることが多く、ラインの保守担当が理解で
きて、変更できるものとして使われている。
まともな頭を持っていたら、ラダーの設計なんてアホくさくてできない。
OOP を理解しているやつに、ラダー回路を設計させたら辞めてしまう。
240:デフォルトの名無しさん
04/07/25 13:14
だって、「エレガントに」なんておっしゃるんですもの~(くすくす
241:デフォルトの名無しさん
04/07/25 14:17
夏を感じるぜ
242:デフォルトの名無しさん
04/07/25 18:04
まぁ>>239が偏見に満ちているのは間違いない事実だが。
単なるOOPバカだろ。
243:デフォルトの名無しさん
04/07/25 23:52
ラダーはクズだ
244:デフォルトの名無しさん
04/07/26 01:08
>236
今のラダーは、構造化プログラミングの影響を受けて、多少マシになっている
> (1) 基本的に機能拡張がないので、際限なく増えた命令
メーカーごとに、命令を増やしている。
しかし、ユーザー定義の命令を使えるものもある。
(だが、ラダーに無理矢理、シーケンシャルな処理を追加したような形となっているので、使い勝手はよくない。)
> (2) 遅い、制御には問題ないが、処理には向かない。
組込向けCPUよりも、大幅に汎用性を持たせているために、CPU規模の割りにはるかに遅いのは事実。
しかし、最近は、CPUパワーにものを言わせ、1msecスキャンのものも出ている。
> (2) サブルーチンやライブラリもないので、カット アンド ペースト命
最近は、サブルーチン、モジュール構成を使えるものが多い。
> (3) 変数、I/Oはコイル番号。記憶力が良くないときつい。
I/Oコンフィギュレーションのようなもので割付を行う。コイル、リレーは実アドレスではなく、変数で管理できる。
> (4) ソースをパソコンに読み出して編集とかできなかった。不便だった。
ソース、コメントもPLCに保存できる。
> (5) 機種ごとの互換性がない。
これは、進歩なし。
> (6) 人の書いたラダーなんか読めたもんじゃない。
これも進歩なし。ただ、どのプログラミング言語でも、同じことでは?
> かなり偏見が入っている気がするが、自分はもう二度とやりたくない。
・・・いろいろ、PLCを擁護しつつ、同意。
最近のトレンドを採り入れて、あまり凝ると、生産現場から、理解できない、メンテナンスできないとクレームが来るから。
245:デフォルトの名無しさん
04/07/26 02:17
漏れもラダー図を使う人種の発想は理解できないが、それで良いんじゃないかい。
「ソフト屋の言うことは信用するな」ってのが、メカ屋の鉄則らしいし、
同じ物を違う観点から見たほうがシステム全体の信頼性は上がるんでないの。
オブジェクト指向で設計しました、とか言うメカ屋がいたら逆に怖いと思う。
246:デフォルトの名無しさん
04/07/26 06:22
俺は職業ラダー使いだが・・・。JAVAもやってる。
確かに馬鹿みたいな言語は同意だが、ラダープログラムって超安定してるんだよねー。24時間365日絶対止まらない。
生産現場では抜群の信頼性を持つので重宝されている。
俺はラダーやってて、「こんな馬鹿みたいな言語やってたら将来ホームレスだよ」なんて心配したから、JAVAも勉強してる。
でも、最近思ったのは、JAVAよりもラダーの方が飯が食えそうだ(金になる)な。と思った。
だって中途半端なJAVA技術者→デジドカでしょ?
話によると、業界の方向性としては、どうやら組み込み系JAVAとラダーが融合していく方向性のようだ。どんな形になるか分からんが。。
俺は>>237さんに同意かな。
247:デフォルトの名無しさん
04/07/26 20:33
>>246
ちゅうか
ラダー = 論理演算のかたまり
なんだよね
248:デフォルトの名無しさん
04/07/26 20:45
>>247
組み方にもよる
249:229
04/07/26 22:54
で、組み込みマイコン制御で多数の非同期入力を扱うにはどうしたらよいのでしょうか?
250:デフォルトの名無しさん
04/07/26 23:08
>>249
>>230, >>231, >>235, >>237, >>238
251:デフォルトの名無しさん
04/07/26 23:09
これがほんとのメッセージループ
252:デフォルトの名無しさん
04/07/26 23:12
>>249
だから階層化して分割出来んのか? と言ってるだろう
最終的に導き出す状態が1つだからってなんでもかんでも
一つの状態遷移表にまとめる必要はないだろ
253:デフォルトの名無しさん
04/07/27 23:07
ロータリーエンコーダの発注の時、パルス数指定するの忘れて
100P/Rのが来てしまった。500P/Rのが必要だったのに…
素人過ぎだ俺。
254:デフォルトの名無しさん
04/07/28 03:46
バ ル ス
255:デフォルトの名無しさん
04/07/28 04:00
小は大を兼ねない
256:デフォルトの名無しさん
04/07/28 09:08
>>253
パルス数指定なしで、なんの疑いも無く100P/R
よこしてくる方も、なんかあれな感じだな
257:デフォルトの名無しさん
04/07/28 09:08
ロリータエンコーダ禁止
258:デフォルトの名無しさん
04/07/28 10:36
制服系?
259:デフォルトの名無しさん
04/07/28 12:20
援交だ
260:デフォルトの名無しさん
04/07/28 13:33
>>259
うまい
261:デフォルトの名無しさん
04/07/28 20:33
ロリータ援交だの発注のとき、年齢指定するのを忘れたら、10歳のが来た
14歳がよかったのに
262:デフォルトの名無しさん
04/07/28 21:15
ここでやれ
スレリンク(tech板)
263:デフォルトの名無しさん
04/07/28 21:55
知り合いの言葉を借りるとロリータの定義は、「初潮を迎える前の美少女」らしい。
となると14歳も10歳もロリータには当てはまりそうにないな。
264:デフォルトの名無しさん
04/07/28 22:20
>>263
ぐぐってみたら、平均年齢は12歳くらいらしいぞ
265:デフォルトの名無しさん
04/07/28 22:26
>>264
乙。今でもそんなものなのか。最近じゃ平均が10歳だと
思ってた。正直12歳ってのは20年位前の統計じゃない
かと疑ってしまった。スマソ
まぁ14歳がロリータだと思ってる>>261は、俺の知り合いに
失笑を買うだろうな。
だからなんだ? って言われると困るけどな。
266:デフォルトの名無しさん
04/07/28 22:40
流れからすると、>>261はパルスの話じゃないのか?
まあ、そっちの方はよく分からんけど。
267:デフォルトの名無しさん
04/07/28 22:44
>>266
空気読めてない奴ハケーンヽ(゚∀゚)ノ
>>253>>257>>259>>261
268:デフォルトの名無しさん
04/07/28 22:44
14歳のパルスを1.4分周すると10歳になりますか?
269:デフォルトの名無しさん
04/07/28 22:57
ラピュタが滅びます
270:デフォルトの名無しさん
04/07/29 10:24
>>269
そりゃパルスじゃなくてバルスだと突っ込んでみるテスト
271:デフォルトの名無しさん
04/07/29 12:24
>>269-270
概出
>>254
272:デフォルトの名無しさん
04/08/04 23:38
2種類以上の割り込み要因による割り込みがあるとき、
その割り込みが重なったときに、どうやって対処する?
プライオリティを考える?
多重割り込みを許可する?
ケースバイケースだろうけど
273:デフォルトの名無しさん
04/08/05 02:31
あーここ制御系スレだったね。
>>272
プライオリティ順に処理する。
もしどちらもプライオリティが高いなら、
割り込み処理を分割して最低限のことだけやって
続きは別の機会に片付ける。
274:デフォルトの名無しさん
04/08/07 01:22
>>272
多重割り込みを許可するのと複数の割り込みが
Pendingされてる時は、別の問題だと思うが?
どっちのことを言ってるんだ?
その質問だとよくわからんぞ
275:デフォルトの名無しさん
04/08/07 07:08
ようするに反応時間を満足するように作るしかないわけで、
満足出来なければクロックを上げるてなんとかするとか、
外部ハードで反応時間の余裕を上げるとか
多重割り込みで解決出来るケースはそれほど無いだろう。
まあ多重割り込みで解決出来るくらい割込処理に負荷かけてるなら別だが
276:デフォルトの名無しさん
04/08/09 07:36
クロック上げてくれと言ったら却下された
俺が選定したわけじゃないのに
277:デフォルトの名無しさん
04/08/10 01:53
>>276
そんなタイトなクロックを決める方がアホかと
278:デフォルトの名無しさん
04/08/10 08:56
原子力発電所のプログラム書いたことある人いる?
279:デフォルトの名無しさん
04/08/10 09:07
います
280:デフォルトの名無しさん
04/08/10 09:15
あんまり多くは語れないか。
281:デフォルトの名無しさん
04/08/10 17:40
>>279
原子力発電所/飛行機/車などの制御プログラムを、どうやってテストしているか教えていただけ
ますでしょうか。
私がもし飛行機制御のプログラムを作ったら、その飛行機には乗りたくありません。ましてや他人が作った
プログラムが制御している飛行機なんて絶対に乗りません。
282:デフォルトの名無しさん
04/08/10 17:47
飛行機って、製作元の異なる3つくらいプログラムが、
互いに結果を照合しあって合致してるかどうか
確認してるんじゃなかったっけ?
283:デフォルトの名無しさん
04/08/10 18:31
>>281
男なら覚悟を決めて、実機デバッグ
もちろんテストパイロットはプログラマーなw
284:デフォルトの名無しさん
04/08/10 19:01
飛行機なら、ハードのバグよりも操縦士のバグの方が問題視されてるよな。
285:デフォルトの名無しさん
04/08/10 19:08
>>284
どういう意味だ?
286:デフォルトの名無しさん
04/08/10 19:20
>>285
パイロットが予想外な警告に対応できなかったりとか。
にしてもさ、未だに事故があるたびに、ボイスレコーダーが
どうとか言ってるんだけど、本当はコックピットの全ての
オペレーションに大してログ取ってるんでしょ?取ってないの?
287:デフォルトの名無しさん
04/08/10 19:28
>>286
パイロットだって人間だぞ?ミスはあるし混乱もする
おまえだって人間だろ?ミスしないのか?混乱しないのか?
288:デフォルトの名無しさん
04/08/10 19:33
>>286
フライトレコーダーはあるが、こまかい操作まで取っているものではない
289:デフォルトの名無しさん
04/08/10 19:36
これは中々象徴的な出来事だった。
URLリンク(www.asagaku.com)
で、やっぱりボイスレコーダーがどうとかやってる。
まだこんなことやってるの?って感じ。
290:デフォルトの名無しさん
04/08/10 19:38
あー、もちろん空の世界はアナログ、デジタル混在、
新旧よりどりみどりの、いろんなシステムが飛んでるわけだから、
たまたま原始的な方法を用いた、旧来の飛行機が事故にあった
という話は分ります。
291:デフォルトの名無しさん
04/08/10 19:42
あんなただの鉄のかたまりが飛んでいるのに、空港も空路も満杯なのに
事故は多くないんだよ。
292:デフォルトの名無しさん
04/08/10 19:43
まあ、ヒューマンエラーを引き起こすようなソフトは仕様の不備というのもあるわな
それよりエアバスみたいにホントにバグで落ちる方がこわい
あと、最近流行の自動車のリコール
ソフトのバグでリコールとかないの?
293:デフォルトの名無しさん
04/08/10 19:46
>>292
URLリンク(u-cfc.mitsubishi-motors.co.jp)
こんな感じの?検索したらいっぱいでたが。
294:デフォルトの名無しさん
04/08/10 19:46
>>292
航空機産業はエアバスの1人勝ちらしいですな。
ボーイングもうダメポらしい。
っていうか、マ板に制御ネタのスレあったっけ。
あればそっちでやるべきか。
でも、最近のマ板のあまりラウンジ化で、ひとが
いないからなあ。
295:デフォルトの名無しさん
04/08/10 23:32
>>294
ここ
制御系プログラマーこそ神
スレリンク(prog板)
296:デフォルトの名無しさん
04/08/11 19:24
ながーい割り込み処理のトンネルの中に
遅くてもOKな処理がポツポツと浮かんでいる上越新幹線みたいなプログラムを組んでみた
これって変?
297:デフォルトの名無しさん
04/08/11 22:02
>>296
書いてることが変
298:デフォルトの名無しさん
04/08/11 22:40
上越新幹線の辺りを説明してくれ
299:デフォルトの名無しさん
04/08/11 22:48
>>298
トンネルを抜けるとまたトンネル
割り込み処理が終わるとまた割り込み処理
ということでは?
300:デフォルトの名無しさん
04/08/12 22:10
普通に割り込みだけのプログラムを作っているが何か?
301:デフォルトの名無しさん
04/08/12 22:16
いや、別に・・・・w
302:デフォルトの名無しさん
04/08/13 01:07
今日ビックカメラ行ってきたんだが、マッサージチェアって
凄いな。もはやマッサージロボットと呼んでもいいだろ。
金と置き場があれば一台欲しいとオモタヨ
303:デフォルトの名無しさん
04/08/13 05:10
Z80とかって割り込みベクタとハンドラ作ってHALTして終わり
っていうプログラムの書き方しなかった?
304:デフォルトの名無しさん
04/08/13 16:35
HALTしたら、リセットしか受付なくないか?
305:デフォルトの名無しさん
04/08/13 18:44
>>304
そんなことはない
306:デフォルトの名無しさん
04/08/13 21:55
>>305
じゃあ、割り込みハンドラから帰ってきたら、どこへ行く?
HALTの次の命令???
307:デフォルトの名無しさん
04/08/13 23:22
>>304
DI
HALT
するとそうなるかな?
あ、NMIを受け付けるか。
>>306
そう
308:デフォルトの名無しさん
04/08/13 23:36
昔のCPUはそんなシンプルなつくりしかできなかったんだよな
凝ったもの作ろうとしても
OSなんか載らないし
309:デフォルトの名無しさん
04/08/14 04:50
>>306
0000H
0008H
0010H
0018H
0020H
0028H
0030H
0038H
0066H
の中から選べる。
310:デフォルトの名無しさん
04/08/14 04:52
>>308
Z80系にはCP/Mという立派なOSが載っていた
311:デフォルトの名無しさん
04/08/14 10:50
>>309
それは戻り先じゃないっしょや。
0-0x38がRST0-RST7の割り込みベクタ。
0x66がNMIの割り込みベクタ。
割り込みモードによっては0x00-0xffをバスから与える。
>>306
処理が終わったらHALTしておく。
つまり、割り込みハンドラから戻らない。
312:デフォルトの名無しさん
04/08/14 15:57
むかーし、取引先が新規に自社CPUをつくった。
NMIがマスクできる仕様だった・・・・・・(;´Д`)??????
でも、そのMPU関連の仕事くれたから(・∀・)イイ!!
313:デフォルトの名無しさん
04/08/14 17:04
それはNMIと呼ばないのではw
314:デフォルトの名無しさん
04/08/14 19:49
打ち合わせの時、「そのNMIはマスク出きるか、否か」の確認は取ったが、
その点以外は誰も突っ込まなかった。
カラスは白い場合もあるんだな、って思ったよ。
315:デフォルトの名無しさん
04/08/14 21:22
書込み可能なROMみたいなもんだな。
316:デフォルトの名無しさん
04/08/14 21:27
そのたとえはいかがなものかと
317:デフォルトの名無しさん
04/08/15 06:19
リセット入力をマスク出来るCPUみたいなもんだな
318:デフォルトの名無しさん
04/08/15 10:16
美子っていう名のブスみたいなもんだな。
誰も突っ込まないところも同じ。
319:デフォルトの名無しさん
04/08/15 10:21
>>317
設定EPROMレジスタでリセット入力端子を汎用入出力に出来る一チップマイコンは普通にあるけどね
320:デフォルトの名無しさん
04/08/15 12:54
バグっててリセットできないとむかつく。ノートPC使ってるが、ハングッたら
電源OFFさえできないのでバッテリーはずして電源ケーブルを
抜かなきゃならん。ヽ(`Д´)ノ
何を考えて設計しているのかと小一時間・・・
321:デフォルトの名無しさん
04/08/15 13:01
>>320
電源スイッチ長押し
322:デフォルトの名無しさん
04/08/15 15:02
>320
今時、電源スイッチ長押しでだめなノートPCあるの?
それとも自分の無知を棚上げ...
323:320
04/08/15 15:37
>>231>>232
え?電源スイッチ長押し・・・・・・?あ、ああ。そうだよ。そうとも
>>それとも自分の無知を棚上げ...
((((;゚Д゚)))y-~~ガクガクブルブル
・・・嫌だな。釣りだよ。釣り。
今時 知らない香具師いるわけないじゃん。w
次にハングしたら、慌てず騒がず、いつもの様に電源長押しで対処さっ ♪
∩
( ⌒) ∩_ _グッジョブ !!
/,. ノ i .,,E)
./ /" / /"
_n グッジョブ!! ./ /_、_ / ノ'
( l _、 _ / / ,_ノ` )/ / _、 _ グッジョブ!!
\ \ ( <_,` )( /( ,_ノ` ) n
ヽ___ ̄ ̄ ノ ヽ |  ̄ \ ( E)
/ / \ ヽフ / ヽ ヽ_//
324:デフォルトの名無しさん
04/08/15 16:20
漏れのノートPCの電源スイッチは落下のショックで押せなくなったのだが。
>>320
餅搗け。レス番間違ってるぞ。
325:デフォルトの名無しさん
04/08/15 17:01
>>324
起動できないね
326:デフォルトの名無しさん
04/08/15 18:34
>>325
大丈夫、ゼムクリップを使えばなんとか端子を接触させられる。
一度起動したら後はサスペンドかリセットしかしないし。
#サスペンド/サスペンドからの復帰は蓋の開け閉め。
327:デフォルトの名無しさん
04/08/18 11:44
割り込みで書き込み、普通のルーチンで読み込みするとデータが化けるんだけど、何で?
328:デフォルトの名無しさん
04/08/18 12:01
色んな原因が考えられる。一概には言えないので、
なにをどうしてるか、環境とかをUPしてください。
329:デフォルトの名無しさん
04/08/18 13:14
>>327
バグってるから
330:デフォルトの名無しさん
04/08/18 15:33
>>327 volatile付けた?
331:デフォルトの名無しさん
04/08/18 17:12
多いのが 8bitマイコンで割り込みで 16bitのINC をさせたりしてるのを
メインで比較しようとしたらとかのミスだね
332:デフォルトの名無しさん
04/08/18 19:02
メイン側の比較の最中に割り込みが起きるとアボーンというわけか・・・
333:デフォルトの名無しさん
04/08/18 21:23
int幅より大きい変数を扱う場合は化ける可能性がある
あと、構造体やデータブロックを扱うときは
メインでアクセスしている最中に割込が入れば、
割込前と割込後でデータに整合性がなくなることがある
334:デフォルトの名無しさん
04/08/19 07:47
単純に割り込み禁止・許可をすればいいんじゃない?
335:デフォルトの名無しさん
04/08/19 07:48
質問したひともういない?
336:デフォルトの名無しさん
04/08/19 16:39
セグメンテーション・フォールト って
叫んでみたんだけど、まるで何かの必殺技みたいだよな
337:デフォルトの名無しさん
04/08/19 17:01
>>336
プログラムを一発で停止させる必殺呪文
338:327
04/08/20 22:07
帰郷してました(^^;
職場の先輩に聞いてみたら、やっぱり>>331>>333のような話でした。
でも、割込禁止を使うと割込できるところが少なくなってしまうという問題があって。
割込って難しいですね。
339:デフォルトの名無しさん
04/08/20 22:20
>>338
複数命令にまたがって読むほんの数バイトのコードのとこだけ割り込み禁止にすればいいんだよ
340:デフォルトの名無しさん
04/08/20 23:08
>>338
割り込みは不必要に多用される傾向があります。
割り込みを使うと、今回のようなボラタイルなデータの発生があります。どの
データがボラタイルか明確ならば良いのですが、注意していても見逃しやすい
ものです。通常は、割り込みルーチンを先に作りあげ、後からはできるだけ
いじらないようにします。
割り込みの多用は、プログラムを難しくすること以外に CPU の時間不可を
消費することです。急いでもいないものに割り込み処理をさせることで、
本当に高速に処理しなければならない処理が遅らされてしまいます。
残念ですが、最初から、時間不可を適切に配分した制御プログラムの設計は
めったに見られません。
341:デフォルトの名無しさん
04/08/20 23:26
>>340
今回の件はvolatile関係無いんじゃ?
volatileつけてても、下位の計算と上位の計算の間に、割り込みルーチンにより変数が
変化したら壊れた値を読んでしまう。
342:デフォルトの名無しさん
04/08/21 01:15
どうしても割り込み使いたくないなら、排他制御でぐぐれば
何かよさげな方法が見付かるのではないかと。
atomic性を保証する手段はいくつかあるし。
まあ割り込み禁止してしまうのが簡単・確実だと思うが。
343:デフォルトの名無しさん
04/08/21 02:10
>>342
AVRとかでの推奨は、16ビットレジスタは、
unsigned int TIM16_Read_TCNT1(void)
{
unsigned char sreg; /* ステータスレジスタ一時保存変数定義*/
unsigned int i; /* TCNT1読み出し変数定義*/
sreg = SREG; /* 現全割り込み許可フラグ(I)を保存*/
_CLI(); /* 全割り込み禁止*/
i = TCNT1; /* TCNT1値を取得*/
SREG = sreg; /* 全割り込み許可フラグ(I)を復帰*/
return i; /* TCNT1値で呼び出し元へ復帰*/
}
というふうにしてヤレとなってますな。
344:デフォルトの名無しさん
04/08/21 08:42
>>338
割り込みで16bitのカウンタを実装しないというのもシンプルで有効な戦法だよ。
割り込みでは8bitのカウンタを inc だけして
メインではそのカウンタがゼロでなければ、ひとつdecして16bitカウンタを1つ動かす。
メインで実際のカウンタを実装するわけ
345:デフォルトの名無しさん
04/08/21 11:55
341>今回の件はvolatile関係無いんじゃ?
C 言語の volatile じゃなく、英語での volatile の意味と解釈してください
346:デフォルトの名無しさん
04/08/23 07:45
データブロックの場合はバッファを持たせて、ポインタを使えば、
バッファを指すポインタをつけ換えるところだけ割り込み禁止にするだけでよいので、
割り込み禁止の影響は最小にできる
347:デフォルトの名無しさん
04/08/23 08:38
>>346
その方法ならReadポインタ Writeポインタを別にすれば、割り込禁止も無くせるね
348:デフォルトの名無しさん
04/08/23 09:38
>>347
ReadポインタとWriteポインタが重なったときはどうする?
349:デフォルトの名無しさん
04/08/23 11:19
>>348
buff1
buff2
・・・
buffN
とバッファがあるとしよう
PointerR PointerW が 最初 buff1を示しているとする。
PointerW は割り込みでその位置に書いて 次のバッファを示すように更新される
PointerR はメインで、PointerWと値が違うときに、その位置を読んだ後に次の位置に更新される
たとえば、割り込み周期内でメイン内で1回以上呼ばれるなら、バッファのサイズは2でよい。
さて問題。
PointerWが2バイトで表現されたとして、メインの比較途中に割り込みが起きたとして、
それが誤動作の原因になるか?
350:デフォルトの名無しさん
04/08/23 15:18
>>340 デバイスドライバのトップハーフとボトムハーフみたいに、
「本当に必要な箇所のみ割り込みで動作」させるというのが解?
351:デフォルトの名無しさん
04/08/23 15:52
>>350
イエス
352:デフォルトの名無しさん
04/08/23 16:26
>>349
PointerW と PointerR の不一致検出なら
PointerRは割り込み側で更新されないから誤動作しないと思う
差などの演算結果を利用してたりするとダメダメ
353:デフォルトの名無しさん
04/08/23 16:33
>>352
もっとも比較のしかたによっては一周期検出が遅れる場合はあるでしょうから
それでタイミングが間に合わなくなるようだと誤動作するということになるですね
ほんなとこに神経使わなくていいように素直に割り込み禁止かけるのが吉
デバッグや機能追加でハマル原因
354:デフォルトの名無しさん
04/08/23 23:08
>>340
>残念ですが、最初から、時間不可を適切に配分した制御プログラムの設計は
>めったに見られません。
わたしゃ8ビットCPUのしょぼいコードしか書いたことないから偉そうなことはいえないけど、
「時間負荷の配分」がそんなに難しい問題とは思えない。
要はイベントaに対応する必須の処理を処理Aとすると、処理Aをブロックする処理(処理A自身を
含む)の合計時間がイベントaの最短の発生間隔を超えないようなコードを書くだけ。
あとはゲームや動画の分野では初歩の初歩である「忙しいときは
やってもやらなくてもいい処理は諦める」ようにするだけ。
これは時分割ルーチンのフラグをメインの中でポーリングするようにすれば
自然とそうなる。
355:デフォルトの名無しさん
04/08/24 00:29
>>349
ポインタをインクリメントするところだけは割り込み禁止にしないと危なくないか?
厳密には安全な場合だってあると思うが
356:デフォルトの名無しさん
04/08/24 11:34
HEW/C++では関数ポインタをvoid *で使えないみたいです。
何を定義したら良いですか?
357:デフォルトの名無しさん
04/08/24 12:23
>356
void (*pfunc)();
キャストするときはこんな感じ
pfunc=(void(*)())func;
358:デフォルトの名無しさん
04/08/24 14:49
>>355
良く考えれば、それぞれのポインタのインクリメントは割り込みとメインでされて
それぞれの不一致比較だけなので、問題無いと判ります。
危険そうだから保護というのは一見正しそうにみえて深く考えてなく
危険なのに保護されない原因になるので注意。
359:デフォルトの名無しさん
04/08/26 21:27
>>358
下の2行が なんか 心に響いた
360:デフォルトの名無しさん
04/08/27 02:51
SH3を扱っている方で、
マニュアルに、多重割り込み時のレジスタの保存はユーザがやれみたいな記述があったと思いますが
gccで開発するとき、このあたりを意識していますか?
ちゃんとコンパイラが吐き出したコードを見ればいいのでしょうけど
アセンブラが苦手なもので。。。
ご教授ください。
361:デフォルトの名無しさん
04/08/27 08:52
>>360
そんな人はこの業界から去ってください。
海外に発注したほうがマシだ。
362:360
04/08/27 09:53
>>361
ここは質問スレかと思った。すまんね。
363:デフォルトの名無しさん
04/08/28 03:02
>>360
意識以前にそんな濃いとこはアセンブラで書けよ
364:デフォルトの名無しさん
04/08/28 06:13
割り込みはアセンブラで書くよな
365:デフォルトの名無しさん
04/08/28 07:44
>>360
マニュアルにそう書かれているなら、
少なくともルネサスね開発ツールではサポートしてなさそう
やはりgccでもないと考えるのが妥当では?
366:360
04/08/28 08:36
>>365
ありがとうございます。
やはりCとアセンブラではCの方が圧倒的に可読性が高いし楽に感じますので
単純に関数に入るときに現在のレジスタを退避するだけでいいなら
なにも考えなくてもいけるかなとか思ってました。
どなたか経験者がいればお話を聞きたいと思いました。
>>363, >>364 アセンブラで通常のジャンプとはどういうところを変えるか気にして書いたらいいですか?
367:デフォルトの名無しさん
04/08/28 09:25
うーん。
Cで書いて間に合うような処理なら、割り込みではフラグだけ建ててメインで処理すればいいんじゃないの?
と思っちゃうんだよね。 割り込みは最低限にするべきじゃないの?
割り込み負荷が大きいと、電池の消耗も大きいしさ、
色んなタイミング合わせが厳しくなって、その時楽に思えても、後で効いてくるんだよね。
通信 FIFOに書くまで
タイマ カウンタやフラグを建てるまで