>>1 すみません。棒がなかなか立てられないんですが。
5 :
制御シミュレーションしたい:04/03/13 09:19
PC+I/Oカードから、アナログ入力して、動的に動く、制御シミュレーションを簡単にやりたいのです。
言語はVBで組みたいのですが、何を参考にすればよいでしょうか?
>>5 ?
機械の代わりにプログラムの機械モデルを動かすって事ですか?
取りあえず回路の電気特性とか入力に対する道徳性とか?
8 :
制御シミュレーションしたい:04/03/14 17:30
>>6 機械の代わりにプログラムの機械モデルを動かしたいのですが、、、
>>4 先輩が棒をぐるぐる振り回して遊んでただんだけど。あれってホントは何するもの?
>>10 宝探しとか地中に埋まってる水道管を探り当てたりとか。
>>10 倒立振り子
>>11 井戸掘るときに実際見たよ、グルグルはまわさんかった
今まで業務系の仕事をやっていたのですが、いきなり制御系にいけといわれ
テストが渡されました。何をみてもいいと言われてるんですが、もう時間が
ないです・・ 板違いとは思いますが誰か助けてください・・・
多分簡単な問題だとは思うのですが、さっぱり分かりません。
問題 V0は何[V]ですか?
5[V]
-○-
l
>
> 4.7kΩ
>
l______○
l ↑
> l
> l ←V0
> 3.3kΩ l
l l
l l
l l
l ↓
---
///
テンプスタッフへ電話しな
<<15
ありがとうございます!
回路電流 I=E/R=5/(4700+3300)=0.000625
V0電圧 E=IR=0.000625*3300=2.0625
>>13 教科書のオームの法則のページを見れ。
それでわからないならまじであきらめろ。
21 :
デフォルトの名無しさん:04/03/16 23:27
カーボンで5/(黄紫赤+橙橙赤)*橙橙赤
チップで5/(472+332)*332
最近のチップは小さすぎて見ずらくなった。
グランド
>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)やるよか
こういった制御系のほうがイイメリットとかありますか。
どういう立場があるのでしょうか?
過去ログ2より
3 名前:1 投稿日:02/11/24 09:02
就職相談の話題が循環するから先に答えておく。
好きならやれ。
他に選択肢があるならそっちをえらべ。
自分が選んだ、なりたい自分になれ。
以上。
30 :
デフォルトの名無しさん:04/03/24 10:55
パラレルポートにCでアクセスする方法を教えて下さい。
ちなみにOSはXPでつ。
>>26 イイメリット>ワルイメリット>イイデメリット>ワルイデメリット
こんな感じでいいのか?
制御系なんてメリットがあるからやるんじゃなくて、
やるしかなかったり、やる事が決まってる人がやるもんなんだよ。
つーか、俺なんかCPU廻り設計してたH/W屋あがりだからねぇ
H/W設計しろといわれた方がなんぼかマシ
35 :
デフォルトの名無しさん:04/03/29 22:53
>>30 giveio.sysっていうやつを使うと、Win9xと同様に
inp(),outp()命令で直接アクセスできるようになるよ。
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厨は知っている単語を並べているだけで、その技術の意味すら理解できないようだ。
>H/W設計しろといわれた方がなんぼかマシ
禿堂
34 □ デフォルトの名無しさん □ sage □ 04/03/26(金) 01:50 □
仕事が選べる>26に惚れますた
また新しい石: 客に言われたよ
1. 自作評価基板の不具合 ---> クリア
2. C コンパイラの不具合
3. CPU コアの不具合
4. CPU 内臓周辺回路の不具合
5. プログラムの不具合
どこに問題があるとしても、プログラムで回避するしかありません。
もう、出るわ出るわ(^o^)・・・ 客がまた言うの。「枯れた物使ってると商売にならないの」
まあ、ここのメーカーがわりとまともで、しらを切ったりせずにバグはバグとして公表して
くれるからよかったけどね。
>4. CPU 内臓周辺回路の不具合
生体CPUなのかな?
変換ミスですがな。5.はこれから山ほど出すのですが、
2と4を踏んづけてしまったよ。 さすがに3はなかなか出会えません。
WDT割り込みが実機だとうまく動いてくれない。これはまだ未解明。
ああ、あるよね。使える筈といわれたアドレッシングモードが特定の命令だけで使えなかったり
今回は偶数アドレスでも大丈夫ですよと言われたのにやっぱりダメだったり
44 :
デフォルトの名無しさん:04/04/09 17:17
2Mbpsで同期シリアル通信を行うターゲットボードがあります。
H8/300Hなどを使うと、2Mbpsの同期シリアル通信が可能だということがわかった
のですが、このターゲットボードが、3bitとか15bitといった、8bit単位ではな
いシリアル通信を要求しています。
H8/300Hの同期シリアルは8bit単位での通信になるので、実現は不可能だと思い
ます。GPIOだと2Mbpsは速度的に難しいでしょうか。
なにか良い方法(1bit単位で同期シリアル通信ができるボード等)は無いでしょ
うか。
>>44 オーバーランした際の仕様を調べろ
受ける方はどうにでもなるだろ
46 :
デフォルトの名無しさん:04/04/10 00:26
>>44 クロックいくつで動かすのかわからんが、GPIOでは無理だろう。
まずボード作った奴にどういうデバイスで制御されるのを想定したか相談しろ。
>>44 同期クロックはどっちが供給するの?
もしこちらから供給するのなら、正確に2Mbps供給する必要はないんじゃない?
間延びが許されるのなら、GPIOでパタパタやっても大丈夫なのでは?
>>47 当初の構想では、秋月のH8マイコンボードを使うつもりだったので、
CPUクロックは16 or 18MHzです。
>>48 クロックは、今から作るボード・プログラム側が供給します。(マスタ)
ターゲットボードがスレーブになります。
そのターゲットボードが2Mbpsで動くかどうかを評価するプログラムを
作るのが目的なので、2Mbps供給が必要です。
GPIOでやったら2Mbpsでるかどうかもわかりませんが、出たとしても、
デューティー比もメチャクチャになりそうですよね。
3GHzのPCにPCIのデジタル入出力ボードを接続してパタパタって
いうのはどうでしょうか。
>>49 一般論だけど、
この手のシリアル通信って、個々の要素は3ビットとか半端なビット数でも
まとめると8ビットの倍数とかになるようになってるはずなんだけど、
そうじゃないのかな?
かなりローカルな仕様?
>>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 同期通信だと多分プロトコルがあるでしょうから、単純なシリパラ変換だけでは
だめかもしれませんね。非同期とちがって、スタートビットの認識は必要でしょうし、
いずれにせよ転送データの正当性の検証は必要でしょう。
>>52 石の仕様と話みた限りじゃ単純なSPIのような気がするんだが?
54 :
デフォルトの名無しさん:04/04/10 23:49
>>53 52: 石の仕様は、書いてないと思うのですが、どの発言でしょう?
今までの話だけで、仕様を特定できますか?
>>54 44 名前:デフォルトの名無しさん 投稿日:04/04/09 17:17
2Mbpsで同期シリアル通信を行うターゲットボードがあります。
H8/300Hなどを使うと、2Mbpsの同期シリアル通信が可能だということがわかった
コイツのマニュアル見て同期シリアルと言いそうな内蔵インタフェースを見た。
コレで出来ると思ったんなら、単純なCLK+DATA+FPのSPIだろ?
ヘッダやらなにやらがつくような高級なプロトコルじゃない
>>54 補足
どうも情報が足らないので断定は出来んが、予想が正しければ
検証用のHMと組んだインタフェース回路の制御用IにCPU使うのもいいと思う
ちょっとしたCLI組み込んでやれば使い勝手は回路だけで組むより
相当良くなるし。 その辺は「どんな評価がしたいのか」によって取捨するところ。
単純にそのボードが2Mbpsで通信出来るか見たいだけなら回路組むだけでもいいかも
3bitやら15bitなら受信データはLEDとSW並べたって大したことにはならない。
H8って品種によっては遅延時間を設定出来るストローブを出せたと思う。
こいつをクロックにしてしまえば、いいと思うけどね。
>>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でしょう。
相手側に細工ができないのならだめだけど。 どっかで割り切らないと手間とお金がかかる
案件のような気がするな。
61 :
デフォルトの名無しさん:04/04/13 06:18
>>60 52: AVRのことは知らないけど、RISCに限らず高速のマイコンは、Cacheやパイプラインを使っている場合が多い。
クロック数を計算してというテクニックは、使えない場合が多いから、そういう発想は浮かばなかったな。
1命令1クロックということは、命令の読み出しを考えると最低限パイプラインくらいは使っているんじゃないのかな?
クロック数で正確に計算してってことができるんでしょうか?
それに、DATA INがあるってことは受信もあるんじゃないのかな、受信のときに、クロック数だけで、
同期クロックをチェックしないでデータをリードするのは荒技の気がするけどな。
データジェネレータも送信だけでしょうから、受信なしでOKかどうかでしょうね。
AVRやPICや4ビット8ビットマイコンの殆どが命令数を数えるテクニックが使えます。
6502系のようにパイプラインを使っていても命令数は普通に数える事が出来ますよ。
それからデータの受信送信と、クロックのマスタースレーブは別問題でしょ
>>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;
}
>>63 割り込みとか考えなくてもいいなら、それもアリかもなー
結局他の処理もさせることを考えると、前にも誰かが言ってたように
PLDかPIC辺りをフロントエンドにしないと、後で泣きを見るだろうな
65 :
デフォルトの名無しさん:04/04/14 20:48
>>63 例えば60の発言の例であげてある 12MHzのAVRを使ったとしても、1ビット出力するまでの間に実行可能な
命令は5,6命令程度。とても、63のプログラムは書けない。ソフトじゃ無理だと思うんだけどな。
62の発言のソフトディレイの使えるようなCPUは、基本的には遅いCPUといっていいでしょう。
63のプログラムが実行可能なほど高速だとCacheくらいは必須だろうから、ソフトディレイは
だめだと思うんだけどな。
単に信号出すだけなら
out命令を並べるだけだから 4MIPS あればいい
マスターで受信するなら out in out で時間を合わせる為に8MIPS必要
PICだと 8*4=32Mで動かさないといけなくなるな。
H8だと ストローブをクロック代わりにするようなアイデアが必要になるだろう
67 :
デフォルトの名無しさん:04/04/14 21:46
>>66 4MIPSだとループもできませんね。その程度のことでまにあうのなら、そもそもCPUを使う必要がないですね。
通信の確認作業で、信号出すだけでOKというのは、まずありませんからね。プロの仕事の場合は。
受信というのは、どういうことを言っているのか分からないのですが、データとして受け取れてこそ
受信じゃないでしょうか。 信号のつじつま合わせだけで動作確認終了とは、いかないんじゃないでしょうか。
SPIを発案したMotorolaのCPUなんかは3〜16ビットの
半端なシリアルデータを送受信できるようだね。(DragonBallとか)
もっとも、実験用に簡単に入手・使用できるようなCPUじゃないけど。
>>68 そういや、昔860使った時出来たような気もするな。
でも何したいのか未だに良く分からんがQUICCじゃ大げさ過ぎないか?
SPIだったらオーバランが駄目というより
読み出し:CS立下りから有効Bit数のみ保証
書き込み:CS立ち上がり直前から有効Bit数分前の入力までが有効
ってな感じになってるんじゃないの?
これなら適切に処理してやれば8bit単位で伝送したって問題は無いだろ
>>67 データを受け取れてこその受信だが受信ポートをLSBかMSBにしておいて
回転命令2つををout命令に挟めばいい。
幸いPICとかはRAM上の回転も1サイクルだ。
そもそも、”ターゲットボードが2Mbpsで動くかどうかを評価するプログラム”
なんだから、信号のつじつま合わせのON/OFFでも信号さえ出せばOKだろう。
そうじゃないなら、どういう仕様か書けば必要な能力を見積もってあげるよ。
CPUのバグらしい現象を追跡するのにハード屋さんにつきあって、あっちこっちにプローブ用の
信号を「この位の幅のパルス出してね」ってのを一日中やった。どうやら証拠っぽい波形を得る
までにこっちはへとへと。あれでめげないハード屋さんって尊敬しちゃう。 この後この現象を
「英語で」メーカーへ文句たれるんだから、ますます尊敬しちゃう。
ハード屋は、ハードをソフトに置き換えるのがどれだけ大変か分かってない。
ソフト屋は、ソフトをハードに置き換えるのがどれだけ大変か分かってない。
ソフト・ハード両方やっている者から言わせてもらうと、ソフト屋は甘いと思う。
近頃のハード屋は『ハードだけ』では通用しないしね
確かに、ソフトしか知らない奴は甘いね。
不具合発生
ハード屋はソフトで対処できるならハードの対処はしない
ソフト屋はハードで対処できることを知らされずソフトで対処する
不具合発生
ASICや基板はもちろん変更しない
ソフト屋は前回の流用だから変更したくないと言って変更しない
FPGAを変更する
不具合の対処なんてハードでやろうとソフトでやろうと原因はどうあれ
問題なく、より低コストで、ユーザにも納得させられるようできれば
どっちでも良いんとちゃうん?
コストの差が明らかでない場合も多いからな。
あと、高コストなものを作っている人間が常に楽をすることになるから、
愚痴のひとつも言いたくなるだろ。
でも、黙々とハード回路にパッチ当ててる姿とか見ると
ソフト屋でよかったってしみじみ思うよ
部品変更や改造って、購買からサービスまでの全部署全工程に影響出るしなぁ。
「ソフトで対処できるものはソフトで」ってのは、ハード屋だけの思惑ではないし。
今時入手できないようなOpAmpでも交換しなくてはならなくなるからなぁ。
>>85 んだなぁ。
理想は、本生産開始までにハードバグ、ソフトバグが全て取れりゃいいんだけど
なぁ。
とは言っても、ハードもソフトも完璧でも、本生産開始から大分経ってから、例え
ば部品がディスコンになったりで、ハードやソフトを弄らなきゃならない事態に陥
るってのは有りがちだからなぁ…
はぁ…
>>82 0.5mm間隔のピンに半田付けしてジャンパー配線してる姿はまさに神業
ハード屋さんは電子機器界の外科医のようです
量産しない一品物はソフト修正よりハード修正の方が低コストなんだよな
89 :
デフォルトの名無しさん:04/05/24 00:46
0.5mmピッチまでなら手付けできる
ピン上げてジャンパー飛ばせネーけど
91 :
デフォルトの名無しさん:04/05/25 00:52
windowsでRS232Cを用いてデバイスを制御し、データの送受信を行いたいのですが、
初心者なのでよく分かりません・・・。分かりやすく説明してるサイトってないですか?
VC6.0++でやろうと思っているんですが。
そのデバイスとやらは何者だ?
>>91 シリアルは CreateFile で "COMx"を開いて ReadFile WriteFileで読み書きして
BuildCommDCB
BuildCommDCBAndTimeouts
GetCommXXXX SetCommXXXX とかで制御すればいいから簡単は簡単
VBやDelphiを使う方が簡単だと思うよ。
>>92 レーザー距離計です。
>>93 ありがとうございます。COMポートを複数開けるのも容易に出来るんですか?
初心者なもので・・・すいません。
自分はC以外やったことがないのでCでやろうかなと思っています。
昨日愕然としたこと。
ハード屋先輩「この石のXXとYYのピン、オープンなのに入力になっとるぞ」
ハード屋後輩「え、オープンのピンって入力にしておくのが普通じゃないのですか?」
(;´Д`)
この後輩、もう3年目ぐらいなんだけどなー。折れはソフト屋だけど
CMOSの入出力ピンをプルアップ/ダウンなしで入力にしちゃいけない
ことぐらい知ってるんだが・・・(キホンだよねぇ・・・
なんかたまに小難しいことをいう割にこんなことも知らないというのは
ちとなぁ。さすがに呆れた。新人ならともかく、いままで何をしてきたんだろうと。
まぁ、任されていたハードのデバッグがつまると、なぜか病気になって休んだり
と(w 問題行動が多かったけど、妙に腰を低く振る舞うから救われているだけ
なんだよな。休んだときは先輩が仕方なく尻ぬぐいしてたけど、不憫でならない
わ。休み明けに後輩が出てきて謝って、先輩はキニスンナとかそいつに言ってた
けど、影では先輩は上司に別の香具師に変えてくれと懇願してるよ(w
>>94 CでのWindowsプログラミングの経験次第かなぁ。
全く無いってのであれば、結局VBやDelphiで書いた方が早いって事も有り得る。
あとはまぁ納期次第かと思ったり。
97 :
デフォルトの名無しさん:04/05/28 01:18
PCと自作組込機器とをシリアルで結ぼうと思ったんだけど、
PC側は将来的には、VBか何かで作るとして、
とりあえずはフリーウェアのシリアル通信ソフトでお茶を濁そうと考えてたんだけど、
バイナリファイルを扱えるシリアル通信ソフトって意外とないものなのね
みんな、ターミナルソフトばっかり
自作基板なら好き勝手組めるんだからFTDIとか使ってみるのは?
PC側USBになって転送速度も上がるだろうし、ハッタリ効くし(w
FTDIのページにドライバー有るし、C、VB、Delphiのサンプルソースもある
機器側もシリアルかFIFOかチップで選べる
通販価格840円、難点はQFPなんで手配線だとピッチ変換基板が要る
>>97 自作機器ならテキストで扱えるようにしといたら?
何かと端末ソフトがそのまま使えるから何かと便利よ。
さもなきゃXMODEM辺りをサポートするかねぇ。
>>100 97じゃないけどイタダキ
アリガトン
>>95 「オープンなのに入力」ってのがよく判らない…
オープンドレインってこと?
>>102 オープン=未接続
CMOSデバイスの入力ピンを開放すると色々な問題があったはず…。
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ポートの一覧を調べるにはどうしたらいいのでしょうか?
またそういうのが見れる所がありますか?
Windowsだけでは判らんのよ。 NT系列なのか9x系列なのか。
それからBIOSのI/Oポートという書き方も良く判らん。
具体的にWindows2000ならデバイスマネージャ -> 表示->リソース(種類別)
で、アドレス一覧が表示出来る。
ただし、Windows2000なら、I/Oを直接読み書きするには誰かにサービスしてもらわないといけない。
GWIOPM GIVEIOなどが有名所だ。
>>110 どうもレスありがとうございます。
>Windowsだけでは判らんのよ。 NT系列なのか9x系列なのか。
>それからBIOSのI/Oポートという書き方も良く判らん。
すみません、説明不足でしたね・・
一応、NT系OSでI/Oアクセス出来る様に「giveio.sys」を導入して
I/Oアクセス可能にする所までは出来てます。
具体的に何がしたいかと言いますと、CPU温度とかファン回転数みたいな、BIOS上で参照出来る情報が取得したいんです。
自分で色々調べた結果、BIOSのI/Oにアクセスして情報を取得出来るという所までは分かったのですが
具体的に、どのI/Oポートアドレス?からデータを引き出せばよいか分からないんです・・
この辺は、モニタリングチップや、マザーボードの種類によって色々変わってくるみたいですので
その辺の事が、ハードの種類別に知りたいのですが、そういう事を調べるにはどうしたらよいでしょうか?
あまり、ハードウェア関係の知識がありませんので
言っている事が分かりづらいかもしれませんが・・
>>111 Linuxのならソースあるんじゃない?
113 :
デフォルトの名無しさん:04/06/27 00:54
>112
ナイスぼけ
>>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のアナウンスにも入ってないし。
>>117 どの開発環境と、どのような事で比べましたか?
>>118 iTRONにGUIライブラリとフォントを足すのと、
WinCEのライセンス価格を調べました。
WinCEはMSECで動作せず、
バージョンアップ販売停止がはやいので、
組み込みに不向きなのは知ってますが。
>>117 !? 開発環境はLinuxかCygwinだからタダじゃなくて?
まあ周辺のライブラリは必要になるが。
gcc使えば無料
ライブラリは自作したりフリーの使えば無料
124 :
デフォルトの名無しさん:04/07/02 08:49
詳しく教えて。
>>123 QNXって、まさか100マイクロセカンドで動作出来たりしないよね?
出来たらITRON並みのUNIXだね。
VxWorksマンセー
128 :
デフォルトの名無しさん:04/07/05 06:55
割込ハンドラと割込ルーチンはどこが違うのですか?
また、なぜ分ける必要があるのでしょうか?
windowsXP,c言語でAPIを使ってCOMポートの制御やってるんですが、
受信バッファのサイズを変更するなど、
バッファに関するAPIはどのようなものがあるか教えて頂けませんか?
>>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を使っている場合に、割り込みハンドラという言い方をしているかと自分は思っていたけど、用語集を見る限り
割り込みハンドラは、割り込み時に読み出されるプログラムコードという定義がしてあるようだ。
特に、区別されてないんではないのかな?
>>128の言う割り込みルーチンというのは
割り込みハンドラから起動されるタスクのことを指しているのかも
某CPUだと、割り込みハンドラって所謂割り込みベクタに書けるような小さいロジックってイメージが…
#で、通常はそこにはジャンプだけ書いておいて飛んだ先が割り込みルーチン。
「割り込みハンドラ」「割り込みルーチン」から
割り込み時の飛び先が1個所で、割り込み要因をチマチマと割り込みを発生させた
デバイスのレジスタのビットをチェックして、それぞれのルーチンに飛ばしてる
大昔のゲーム機を思い浮かべた
136 :
デフォルトの名無しさん:04/07/06 21:39
>>134 H8なんかそうでしょ?
て言うか普通そうなんじゃないの?
>>135 SHは割込ハンドラの中で割込を発生させた要因を調べなければならなかったような
>>136 SHにかぎらずRISCプロセッサはみなそんな感じ。
RISCにかぎらずPCIだとそれしかないし、
Chain of Responsibility な割り込みハンドラになるし。
139 :
デフォルトの名無しさん:04/07/07 01:00
>>136 SH3から
SH2までは要因ごとのべくた
H8やSHについて解説してあるページや書籍には
どんなものがあるんでしょうか?
おすすめ教えてください。
>>140 オフィシャルサイトからデータシートをダウンロードできると思いますが。
>>140 丁寧なアプリケーションノートが置いてあるよね。
今からビッグサイト逝く香具師の数→(1)
明日逝くょ。
ビッグサイト、暑そうだな。
逝ったひとは感想をplease。
イイ!!とダメダコイツラ..ってのを。
コンパニオンのS/N比が気になる。
ってかそんなにいないか。
150 :
デフォルトの名無しさん:04/07/09 01:52
>>140 日立時代は電話すればマニュアルを無料で送ってくれた。
ルネサスになってからは、知らない。
151 :
デフォルトの名無しさん:04/07/09 01:54
MSのブースでVS2005のDEMO中
フリーズしてDEMO中止になった
>>150 日立時代は、日立のサイトからマニュアルをダウンロードできたが
ハードコピーマニュアルをスキャナで取り込んでPDF化したもので
とても使えるものではなかった。
ルネサスになってからはまともなPDFをサイトからダウンロードできるようになった。
(あれ?その前からかな?)
初期の時はしらないが、SuperHのサイトのときは普通のPDFだった記憶がある
>>153 あ、すまへん。言葉がたんなかった。
H8がそんなヘボイPDFだった。SHはマトモなPDFだった。
初心者が一番はじめに手を出すとしたらどのチップがよいでしょうか。
やはりmips?
H8が人気なのはトラ技のせいなのかな・・
>>152 古いマニュアルはそんなんだな。PDF化できる電子データがないんだろう。
ページ数のわりにやたらでかいので、落とすのも大変だった…
>>155 取り敢えずCPUを触ってみたいってんであれば、Z80辺りを
触ってみては?
参考資料も多いし、CPUの基礎を勉強するには手頃なんじゃ
ねぇかなぁ。今でも現役で使えるし。
>初心者が一番はじめに手を出すとしたらどの
仕事?趣味?学校? どこでどーするのかオシエレ
>>158 PC上でC言語などでのプログラミング経験があるが、組み込みの経験が
ない人を対象として、コンピュータの仕組みをよく理解するために、
それほど複雑でないマイコンを使って、アセンブリ言語やC言語などで
プログラミングして実際にポートの入出力などを体験しながら学習する、
といった用途です。
>>159 秋月電子にあるようなボードでするのがラクかもね
個人的にはH8やSHやったほうがいいかなって気はするけど、
PICも捨てがたい・・・
>>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になるようにして
データを送ったのですが機器が反応しません。
どこがまずいのでしょうか?
>>162 >どこがまずいのでしょうか?
この程度の情報で答が得られると思ってる162の頭
IR-LEDはどのように発光させてるの?
で、発光してる位は確認済み?
学習リモコンのハードも自作するのかな?
情報少なくてすいません。
電流制限抵抗なしでTxD-GND間にIR-LEDつけてます。
発行してるかどうかは赤LEDに付け替えて目視確認しました。
スタンドアロンのリモコンとしてではなくPCから制御するつもりです。
//これまでにしたこと。
LIRC,WinLIRCのサイトを見てDCD受信、DTR送信なトランスミッターを作成。
winLIRCにて、外部機器が無事動作するのを確認。
つぎに上述のTxD-IR-LED送信機(っていうほどでもないですが)を作成して
WinLIRCで取得した生データ(High us,low us...)を元に
>>162に至った次第です。
なるほど。そこそこはやってるのね。
>電流制限抵抗なしでTxD-GND間にIR-LEDつけてます。
大丈夫か? そんなことして。って気がしないでもないが、
WinLIRCとやらはテストの足しにはならないのでしょうか?
LEDは大丈夫なようです。(WinLIRCからだと無事動く)
念のためCRDいれときます。
WinLIRCは生データを覚えてそれをそのまま吐き出す用にできていて、
入力はDCD,RxD 出力はDTR,TxDが選べるようになっているので
とりあえず丸覚えさせたデータをTxDで出してみて動作確認はしました。
やはりduty比が悪いんでしょうか?(1/3か2/3しか選べないのが…)
>>148 ダメってわけじゃないが
T-engineばっかりで嫌になった
>>167 >とりあえず丸覚えさせたデータをTxDで出してみて動作確認はしました。
ってのは、本来のリモコンの送信を学習できるのを確認したってことだよね?
WinLIRCが記憶するデータの仕様が分かるなら、自作の送信機を学習させて
比べてみたらどうだろ。
キャリアのdutyは50%が良いんだろうけど、実は中心周波数が安定していれば
大丈夫な気がする。
それより、普通にTxDをキャリアとして使おうとしたらStart|Stop bitをうまく
処理しなくちゃと思うのだが、それは大丈夫なんだろか。
171 :
デフォルトの名無しさん:04/07/10 03:14
>>159 AlteraのNiosとかどうよ?
トレーニングキットで、ついでにデジタル回路の学習もできるっていうおまけつき。
あんまり情報がないからダメか?
>>170 >シリアル通信仕様をいまいちわかってないのですが、
>start,stop bit(1bitに設定)というのは1byteごとの最初と最後に1がつくってことなんでしょうか?
その通り
調歩同期やUARTで調べてみろ
>>172さんありがとうございます。
非同期通信=調歩同期 start,stopビットありなんですね。
で、ふつうにラッパーとかが想定してる送信方法はこれと。
TxDピンの出力を直接制御するのはかなり難しそうですね…
うーん…
同期送信ってあんまりメジャーじゃないみたいで。
>>171 その通りじゃないでしょ。 startビットは0 stopビットは1
だからstopサイズが1 でデータサイズが8なら 10bit周期しか作れない。
だから 0<10101010>1 これはOKだけど、これ以外は難しいよ。 これで送信してみては?
周期がバラバラずれると、受信機には、振幅変調がかかるようになるからダメ。
>>174さん ご丁寧にありがとうございます。
>> 0<10101010>1
の場合“だけ”ですよね?
start/stop,1bitで周期がずれずに送信可能なのって。
Highを出力するのはこの手でいけそうですが、
Lowが続くとき、 0x00 を送信したとしても 受信する側からみたら
b' 00000 00001 になっちゃうから結局リモコンとしては使えなさそうですね…
PICみたいな感覚でいたのでもっとDTRにしろTxDに任意のピンをいじれるかなって
思ってたので、考えが甘かったみたいです。
PICみたいな感覚でいたのでもっとDTRにしろTxDに任意のピンをいじれるかなって
↓訂正
PICみたいな感覚でいたので、DTRにしろTxDにしろ任意のピンの状態をいじれるかなって
すいません。
>>174 アヒャ!
Low/Highみてなかった
>>175 正直、そういう用途でピンを弄るなら
プリンタ出力でやれ
>>175周波数が違えば振幅変調になるから 0 0000 0000 1 でも距離を離せばいけるかもしれないよ。
他に、例えば DTRとの間で送信するようにして、TXには常時送信してるようにしてDTRでON/OFFするとか
あるいは、PIC使えるなら PICにシリアル送信でコマンド送って PICで赤外送信したらどう?
みなさんお付き合い頂きありがとうございます。
>>177さん
LPTですか。 盲点でした。 LPTの扱いについてもこれを機にちょっと調べてみます。
>>178さん
2ピン使ってANDとるのもありですね。
TxDにbyte[]送るときに、 byte[] = 0x00なら DTR = LOW
それ以外で、Highにして。
早速やってみます!
>>179 and 取るというか、単純に2電間でLEDを点けるだけだよ。
TxD-GND間にLED入れてるんでしょ? GNDの代わりにつなぎ変えるだけ。
RS232Cでは、ショートした時の電流規格があった筈で、火災が起きないような電流に制限されてたから
リモコン用の赤外LEDなら壊れないとは思うけど・・・まあ抵抗入れた方がいいと思うけどね。
|3・)・・・
|3・)アルェーゴバクシッチャッタyo
しょうがねえなぁ…
COMポートを速度 115200bps、データ長 7bits、ノンパリティ、ストップビット長 1bit
で設定して、データとして 0x12 か 0x5B を連続して送出してみな。
TxDからきれいな38.4kHzの信号が出るはずだから。
>>183 ありがとうございます。
ちょうど
>>174さんの方法だと57.6khzになるので困ってました。
0x12 は 0 0100100 1 で100,100,100でバッチリなるのでこれで行ってみます。
おっ!飲みこみが早いねぇ
その調子ならきっとうまく行くよ。
ちょっと気になるのは、TxDから直接取れる電流じゃ多分弱々なんじゃってこと。
昔の記憶を辿るとLEDには数100mA(ピーク時)を流した覚えがある。
そうしないと数メートルと離れられない。
もしかしたら今のLEDは高輝度だから大丈夫なのかもしれないが…
>>185 正直、PCからの出力でTr制御して
別電源で駆動したいところだ
アキバでLEDと抵抗買ってこい
今時のLEDは10mA流せば十分
なんか面白そうな事やってるなぁ。
夏休みの自由研究にでも出来そうなネタだ。
ああ、ただLED光らせるんじゃないのか・・・
IR-LEDでリモコン制御か、ログ全然読んでなかった
スマソ
(´-`).。oO(X68000+ジョイスティックポートで学習リモコン作ったなぁ…)
昔は楽しそうだなあ
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の時だけ発光してるのですが、
機器が動作しない=コードが認識されてない 状態です。
>>162 発振はRとCとインバータでマルチバイブレータ作ったほうが簡単だと思うが。。。
あとIR-LEDが光ってるかどうかはビデオカメラ等でも確認できる。(CCDでは緑っぽく光って見える)
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作れるなんて…
>>193 COMポートから 0x00 を送信する局面ってあるか?
赤外線リモコンってキャリアのON/OFFだけで変調かけるわけだから、
TxDでキャリアを送出するならタイマ割り込み契機でトランスミッタを
Enable/Disableすれば良いんじゃないかなぁ。
書かれたコードじゃどうに変調かけてるのかサッパリ分からんです。
>>195 そのカウンタってのにTxDを直接入れたのか?
TxD(というかCOMポートの出力)はTTLレベルじゃないのはOK?
PICがあるなら PICにデータ出力して送出してもらえば?
つうか そんな問題じゃないか。。
>>163さん 長らくお付き合い頂きありがとうございます。
トランスミッタってのはどの部分をさしてるんでしょうか?
後、タイマ割り込みはμsecオーダーで機能するんでしょうか?
カウンタにはフォトカプラ経由で入れました。
で、さらに調べて、WinLIRCでTxDにIR-LEDをつないで送信して機器が動作するのを確認して、
LEDはずしてカウンタにたたき込んでも全然カウンタが拾えてないみたいです。
PICカウンタ自体は、555なんかで発振したのをたたき込むと16bit/100mSecまで確実にカウントできるので、
何が原因か調査中です。
フォトカプラ使うのやめて
TxD抵抗-Red_LED-ベース
Vcc-コレクタ
エミッタ-10kΩ-GND(232C,PIC共通)
でエミッタ電圧をカウントするようにしたら無事カウントできました。
で、たぶん機器が赤外線受け手も動かない原因は
>>193で書いた0x00にstop bit 1がつくのと、
示したコードだと38kHzがでてないっぽいです
とりあえずコードの問題のようなので、いろいろがんばってみます。
>>198 トランスミッタってのはCOM?のデータ送信部のことだよ、この場合。
PCのタイマ割り込みでもH/Wとしてはμsec単位程度の精度は出る。
Windowsの上でどうかと云われると分かんない。調べてみてくれ。
尤も赤外線リモコンじゃμsecの精度は全然要らないと思うが…
WinLIRCとやらでも充分な精度の計時をやってるはずだから何等かの方法は
あるってわけだ。
>>199 >193のコードだと 1byte送出しておしまい、なんてことはない?よな…
まあがんばってくれ。
201 :
デフォルトの名無しさん:04/07/12 07:52
実機デバッグのまったくできない環境は、制御系の場合、けっこうあると思うのですが、
こういう場合、どうやって、実戦投入一発で決めたり、実機のない状態で、バグをつぶしたりするのですか?
>>201 人生色々。 環境も色々。
実機デバッグ出来ないような環境だと、仕様さえまともに決まってない場合が多いしね。
自分が良くやるのは制御系なら簡単な中間言語スクリプトを作って
そいつのエミュレータをWindows上で作って、そいつで主な動作は仕上げるようにして、対応力を上げておき
先に元客にそいつを触って貰って実機来る前に大方を固めるパターンかな。
205 :
デフォルトの名無しさん:04/07/13 06:24
>>204 中間言語スクリプトと言うとPerlか何かですか?
>>205 そんな賢いもんじゃなくて、四則演算と内部関数呼び出しが出来る程度のものね。
言語仕様としては昔のbasicより貧弱な程度、中間言語はスタックマシンで十分実用になるよ。
ちょっと間が空きましたが、進展なしです…
winLIRCの出力パルスを見てみたんですが、405と変な数で
もう何がなんだか分けわかんなくなってPICなぞ買ってみましたorz
まぁPICは別に使う予定なんですが、こっちも最悪PICかなとも思ったり…
>>208 > winLIRCの出力パルスを見てみたんですが、405と変な数で
ってのは、もしかして100ms間のパルスを数えたんじゃないの?
事象が100ms以下の場合のことは考慮してる?
赤外線リモコンって1シーケンスはせいぜい数10msだと思うんだよな。
赤外線リモコンは 変調 40KHz付近 (38〜42K)で 16周期程度が1単位になってる事が多い
1:1/1:3 とか 1:1/ 1:2 が1ビット つまり0,1で長さが異なる 固定長レートではない事が多い。
ぇーっと大事な発見をしました。
http://elm-chan.org/docs/rs232c.html をみてたんですが、
100100100 を 送ると ピンの出力電圧としては -10V,+10V,+10V,-10V,+10V,+10V,-10V,+10V,+10V
になるんですね。
>>163さん
100msで数えてます。出力は合計39msくらいです。うち発光部が20msなので
20msで405だとキャリアが38kHzにならないんですよ…
winLIRCみるかぎり38kHz Duty1/2で出してるみたいなんですが。
>>193 >としてるのですが、LEDはちゃんとpulse=trueの時だけ発光してるのですが、
ほんとにこうなってるなら ±10Vで反転してるのは問題ないと思うが
>>193 が間違えていたようです。
常に38kの変調かけてるつもりだったので、
duty1/3じゃなく2/3で光ってたみたいです。
ぁぅぁぅ
笑ってください…ヘタレです…
555つかって38kHzのキャリア作って無事動作しました…
今の僕には100us単位でしか制御できないみたいです…
while(true)
{
this.serialPort1.DtrEnable=true;
this.serialPort1.DtrEnable=false;
}
ってコード書いてDTRを抵抗通してPICのカウンターに入れても
10.3kHz程度しかでないの…C#+シリアル通信ラッパーだと38kのキャリア生成できなさそうで…
調歩同期で0x6Dおくれば38kHz duty1/3でますが、こちらもいまいち
動いてくれないので…
可能性としてはまだ調歩同期ならいけそうな気もするのでがんばってみます…
>>214 いいやん。取り敢えず別法ってのはアリだよ。全部ソフトで
やらなあかんって事はないし、全部ハードでやらなあかんっ
て事もないしね。
ソフトで38kHzのキャリア作るのは宿題と言う事で今後も
研究してみるといいと思う。
>>214 なんか基本的なところで間違ってる気がするんだよな〜
まとめ
・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さん
ヒントください…
できたーーーーーーーーーーーーー
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);
}
}
}
でいけました!
あ、ソースの
QueryPerformanceCounter(ref lasttime);
↓
QueryPerformanceCounter(ref last);
です。板汚しスマソ
一応プログラム全体としては,high,lowを一行ごとにusec単位で書いた
テキストファイル読み込んで動作します。
6行目が味噌でした。 現在の時間を取るのに
送信終わった跡で、
QueryPerformanceCounter(ref time);
をかけずに自分で指定しないとだめだったみたいです。
長らくありがとうございました。
ASPと組み合わせて携帯からアクセスしてエアコンの効いた部屋に帰れそうです。
まずは良かったね。
ん? 0x6D なんてどっから出てきたんだよ!
ふ〜ん、そんなんでも動いちゃうんだヽ(^o^;ノ
勉強になりました。ありがとう
0x6D=1101101
にstart stopがついて 0 110 1101 1
出力はこれを反転させて1 001 0010 0
のつもりだったんですが。
で…0x12,0xED,0x7Dとか0x11(これは適当) でも動いちゃいました…
結構アバウトというか何というか…
極めつけに0x00でも動きましたよ…
一応0x6Dが38kHz duty 1/3には一番近いと思うのでこれで行くつもりです。
>携帯からアクセスしてエアコンの効いた部屋に帰れそうです。
志低いなぁ、おい。w
まぁ、サボるために定時連絡電文発呼装置作ったエジソンよりはましか。
>>222 まぁ必要は発明の母だからな。
あれだ、目的意識がある分、所謂「言語やろうと思いますが、何作ったらいいでしょうか?」
って頭悪い奴よりは遥かにマトモかと。この経験はきっと何処かで生きると思うしね。
基本的にモノと言うものは人間が楽をする為に作る訳だしね。
>>223 >まぁ必要は発明の母だからな。
それを言ったのはエジソンだってことだね。
ついでに言えば、>221は「発明は1%のひらめきと、99%の努力」をも地で行ったわけだね。
>>224 んだな。まぁエジソンは若い頃は列車でボヤを出したり、
>>222のように
手段に溺れて目的を逸脱したモノも作っちゃうんだけどね。それでクビ
になるのは当然なんだが。それもまた経験なのかも知れず。
いろいろとご意見ありがとうございます。
99%の努力のうちまだ30%くらいしかできてない気がします。
残りの69%は受信部分…
これまではwinLircって別のソフトで受信したのを送ってたんですが、
DSRピンをIR受光モジュールの出力につないで、
100usecごとに読めばいけるかと思いきや全然そんなこと無いみたいで。
まだまだ長い道のりがまってそうです。
>>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
多数の入力が非同期に入力され、
それに応じて、出力や内部状態を変化させる、
そういう場合にエレガントにコーディングする方法はないのでしょうか?
状態遷移を関数テーブルなどで組んだとしても、
入力が多数で、その入力の組み合わせで、次の状態が決まるようなケースだと、
状態遷移関数が複雑で長くなると思うのですが。
>>229 いっそラダーチャートの方がシンプルかつエレガントだったりして。
象かよ
233 :
デフォルトの名無しさん:04/07/24 20:46
234 :
デフォルトの名無しさん:04/07/25 00:09
>>231 ラダーはシンプルかつエレガントでしょ
グラフィカルで直感的に把握しやすい
>>229のような用途に使うために開発された言語なんだから
>>229もラダーを使ってみたら?
>>229 分割っつーか、個々の状態の組み合わせには出来んのか?
236 :
デフォルトの名無しさん:04/07/25 06:47
>>236 ラダーか。自分がやったなかでは、最も嫌いなものだな。20世紀に置いて
くるべきだって思うくらい嫌いだったな。
昔のBASICの悪夢を極端に増幅させてたな。ちょっと前なので、改善
されてるかもしれないが、自分が仕事中に感じたのは
(1) 基本的に機能拡張がないので、際限なく増えた命令
(2) 遅い、制御には問題ないが、処理には向かない。
(2) サブルーチンやライブラリもないので、カット アンド ペースト命
(3) 変数、I/Oはコイル番号。記憶力が良くないときつい。
(4) ソースをパソコンに読み出して編集とかできなかった。不便だった。
(5) 機種ごとの互換性がない。
(6) 人の書いたラダーなんか読めたもんじゃない。
オブジェクト指向どころか、構造化プログラミングも糞食らえの、
超プリミティブ環境。簡単な制御ならOKだと思うけど、結構複雑な制御も
しているみたいで、信じられなかった。
かなり偏見が入っている気がするが、自分はもう二度とやりたくない。
>>239 >そういう場合にエレガントにコーディングする方法はないのでしょうか?
もっと具体的な例を出してもらわないことには何ともいえないな・・・
239 :
デフォルトの名無しさん:04/07/25 12:31
>>236 かなり偏見が入っている気がするが
偏見ではない。
ラダーは、電気が流れると磁石が働き、スイッチが閉じることを知っているだ
けで設計できるもの。本来は機械屋さんが電気屋を介さずに、自分で機械系を
制御するときに使うもの。
でも、工場のラインの制御で使われることが多く、ラインの保守担当が理解で
きて、変更できるものとして使われている。
まともな頭を持っていたら、ラダーの設計なんてアホくさくてできない。
OOP を理解しているやつに、ラダー回路を設計させたら辞めてしまう。
だって、「エレガントに」なんておっしゃるんですもの〜(くすくす
夏を感じるぜ
まぁ
>>239が偏見に満ちているのは間違いない事実だが。
単なるOOPバカだろ。
ラダーはクズだ
244 :
デフォルトの名無しさん:04/07/26 01:08
>236
今のラダーは、構造化プログラミングの影響を受けて、多少マシになっている
> (1) 基本的に機能拡張がないので、際限なく増えた命令
メーカーごとに、命令を増やしている。
しかし、ユーザー定義の命令を使えるものもある。
(だが、ラダーに無理矢理、シーケンシャルな処理を追加したような形となっているので、使い勝手はよくない。)
> (2) 遅い、制御には問題ないが、処理には向かない。
組込向けCPUよりも、大幅に汎用性を持たせているために、CPU規模の割りにはるかに遅いのは事実。
しかし、最近は、CPUパワーにものを言わせ、1msecスキャンのものも出ている。
> (2) サブルーチンやライブラリもないので、カット アンド ペースト命
最近は、サブルーチン、モジュール構成を使えるものが多い。
> (3) 変数、I/Oはコイル番号。記憶力が良くないときつい。
I/Oコンフィギュレーションのようなもので割付を行う。コイル、リレーは実アドレスではなく、変数で管理できる。
> (4) ソースをパソコンに読み出して編集とかできなかった。不便だった。
ソース、コメントもPLCに保存できる。
> (5) 機種ごとの互換性がない。
これは、進歩なし。
> (6) 人の書いたラダーなんか読めたもんじゃない。
これも進歩なし。ただ、どのプログラミング言語でも、同じことでは?
> かなり偏見が入っている気がするが、自分はもう二度とやりたくない。
・・・いろいろ、PLCを擁護しつつ、同意。
最近のトレンドを採り入れて、あまり凝ると、生産現場から、理解できない、メンテナンスできないとクレームが来るから。
漏れもラダー図を使う人種の発想は理解できないが、それで良いんじゃないかい。
「ソフト屋の言うことは信用するな」ってのが、メカ屋の鉄則らしいし、
同じ物を違う観点から見たほうがシステム全体の信頼性は上がるんでないの。
オブジェクト指向で設計しました、とか言うメカ屋がいたら逆に怖いと思う。
俺は職業ラダー使いだが・・・。JAVAもやってる。
確かに馬鹿みたいな言語は同意だが、ラダープログラムって超安定してるんだよねー。24時間365日絶対止まらない。
生産現場では抜群の信頼性を持つので重宝されている。
俺はラダーやってて、「こんな馬鹿みたいな言語やってたら将来ホームレスだよ」なんて心配したから、JAVAも勉強してる。
でも、最近思ったのは、JAVAよりもラダーの方が飯が食えそうだ(金になる)な。と思った。
だって中途半端なJAVA技術者→デジドカでしょ?
話によると、業界の方向性としては、どうやら組み込み系JAVAとラダーが融合していく方向性のようだ。どんな形になるか分からんが。。
俺は
>>237さんに同意かな。
>>246 ちゅうか
ラダー = 論理演算のかたまり
なんだよね
で、組み込みマイコン制御で多数の非同期入力を扱うにはどうしたらよいのでしょうか?
251 :
デフォルトの名無しさん:04/07/26 23:09
これがほんとのメッセージループ
>>249 だから階層化して分割出来んのか? と言ってるだろう
最終的に導き出す状態が1つだからってなんでもかんでも
一つの状態遷移表にまとめる必要はないだろ
ロータリーエンコーダの発注の時、パルス数指定するの忘れて
100P/Rのが来てしまった。500P/Rのが必要だったのに…
素人過ぎだ俺。
254 :
デフォルトの名無しさん:04/07/28 03:46
バ ル ス
小は大を兼ねない
>>253 パルス数指定なしで、なんの疑いも無く100P/R
よこしてくる方も、なんかあれな感じだな
ロリータエンコーダ禁止
制服系?
援交だ
260 :
デフォルトの名無しさん:04/07/28 13:33
261 :
デフォルトの名無しさん:04/07/28 20:33
ロリータ援交だの発注のとき、年齢指定するのを忘れたら、10歳のが来た
14歳がよかったのに
263 :
デフォルトの名無しさん:04/07/28 21:55
知り合いの言葉を借りるとロリータの定義は、「初潮を迎える前の美少女」らしい。
となると14歳も10歳もロリータには当てはまりそうにないな。
>>263 ぐぐってみたら、平均年齢は12歳くらいらしいぞ
265 :
デフォルトの名無しさん:04/07/28 22:26
>>264 乙。今でもそんなものなのか。最近じゃ平均が10歳だと
思ってた。正直12歳ってのは20年位前の統計じゃない
かと疑ってしまった。スマソ
まぁ14歳がロリータだと思ってる
>>261は、俺の知り合いに
失笑を買うだろうな。
だからなんだ? って言われると困るけどな。
流れからすると、
>>261はパルスの話じゃないのか?
まあ、そっちの方はよく分からんけど。
267 :
デフォルトの名無しさん:04/07/28 22:44
14歳のパルスを1.4分周すると10歳になりますか?
269 :
デフォルトの名無しさん:04/07/28 22:57
ラピュタが滅びます
>>269 そりゃパルスじゃなくてバルスだと突っ込んでみるテスト
272 :
デフォルトの名無しさん:04/08/04 23:38
2種類以上の割り込み要因による割り込みがあるとき、
その割り込みが重なったときに、どうやって対処する?
プライオリティを考える?
多重割り込みを許可する?
ケースバイケースだろうけど
あーここ制御系スレだったね。
>>272 プライオリティ順に処理する。
もしどちらもプライオリティが高いなら、
割り込み処理を分割して最低限のことだけやって
続きは別の機会に片付ける。
>>272 多重割り込みを許可するのと複数の割り込みが
Pendingされてる時は、別の問題だと思うが?
どっちのことを言ってるんだ?
その質問だとよくわからんぞ
ようするに反応時間を満足するように作るしかないわけで、
満足出来なければクロックを上げるてなんとかするとか、
外部ハードで反応時間の余裕を上げるとか
多重割り込みで解決出来るケースはそれほど無いだろう。
まあ多重割り込みで解決出来るくらい割込処理に負荷かけてるなら別だが
276 :
デフォルトの名無しさん:04/08/09 07:36
クロック上げてくれと言ったら却下された
俺が選定したわけじゃないのに
277 :
デフォルトの名無しさん:04/08/10 01:53
>>276 そんなタイトなクロックを決める方がアホかと
原子力発電所のプログラム書いたことある人いる?
います
あんまり多くは語れないか。
281 :
デフォルトの名無しさん:04/08/10 17:40
>>279 原子力発電所/飛行機/車などの制御プログラムを、どうやってテストしているか教えていただけ
ますでしょうか。
私がもし飛行機制御のプログラムを作ったら、その飛行機には乗りたくありません。ましてや他人が作った
プログラムが制御している飛行機なんて絶対に乗りません。
飛行機って、製作元の異なる3つくらいプログラムが、
互いに結果を照合しあって合致してるかどうか
確認してるんじゃなかったっけ?
283 :
デフォルトの名無しさん:04/08/10 18:31
>>281 男なら覚悟を決めて、実機デバッグ
もちろんテストパイロットはプログラマーなw
飛行機なら、ハードのバグよりも操縦士のバグの方が問題視されてるよな。
>>285 パイロットが予想外な警告に対応できなかったりとか。
にしてもさ、未だに事故があるたびに、ボイスレコーダーが
どうとか言ってるんだけど、本当はコックピットの全ての
オペレーションに大してログ取ってるんでしょ?取ってないの?
>>286 パイロットだって人間だぞ?ミスはあるし混乱もする
おまえだって人間だろ?ミスしないのか?混乱しないのか?
>>286 フライトレコーダーはあるが、こまかい操作まで取っているものではない
あー、もちろん空の世界はアナログ、デジタル混在、
新旧よりどりみどりの、いろんなシステムが飛んでるわけだから、
たまたま原始的な方法を用いた、旧来の飛行機が事故にあった
という話は分ります。
あんなただの鉄のかたまりが飛んでいるのに、空港も空路も満杯なのに
事故は多くないんだよ。
292 :
デフォルトの名無しさん:04/08/10 19:43
まあ、ヒューマンエラーを引き起こすようなソフトは仕様の不備というのもあるわな
それよりエアバスみたいにホントにバグで落ちる方がこわい
あと、最近流行の自動車のリコール
ソフトのバグでリコールとかないの?
>>292 航空機産業はエアバスの1人勝ちらしいですな。
ボーイングもうダメポらしい。
っていうか、マ板に制御ネタのスレあったっけ。
あればそっちでやるべきか。
でも、最近のマ板のあまりラウンジ化で、ひとが
いないからなあ。
296 :
デフォルトの名無しさん:04/08/11 19:24
ながーい割り込み処理のトンネルの中に
遅くてもOKな処理がポツポツと浮かんでいる上越新幹線みたいなプログラムを組んでみた
これって変?
上越新幹線の辺りを説明してくれ
>>298 トンネルを抜けるとまたトンネル
割り込み処理が終わるとまた割り込み処理
ということでは?
普通に割り込みだけのプログラムを作っているが何か?
いや、別に・・・・w
302 :
デフォルトの名無しさん:04/08/13 01:07
今日ビックカメラ行ってきたんだが、マッサージチェアって
凄いな。もはやマッサージロボットと呼んでもいいだろ。
金と置き場があれば一台欲しいとオモタヨ
Z80とかって割り込みベクタとハンドラ作ってHALTして終わり
っていうプログラムの書き方しなかった?
304 :
デフォルトの名無しさん:04/08/13 16:35
HALTしたら、リセットしか受付なくないか?
>>305 じゃあ、割り込みハンドラから帰ってきたら、どこへ行く?
HALTの次の命令???
308 :
デフォルトの名無しさん:04/08/13 23:36
昔のCPUはそんなシンプルなつくりしかできなかったんだよな
凝ったもの作ろうとしても
OSなんか載らないし
>>306 0000H
0008H
0010H
0018H
0020H
0028H
0030H
0038H
0066H
の中から選べる。
>>308 Z80系にはCP/Mという立派なOSが載っていた
>>309 それは戻り先じゃないっしょや。
0-0x38がRST0-RST7の割り込みベクタ。
0x66がNMIの割り込みベクタ。
割り込みモードによっては0x00-0xffをバスから与える。
>>306 処理が終わったらHALTしておく。
つまり、割り込みハンドラから戻らない。
312 :
デフォルトの名無しさん:04/08/14 15:57
むかーし、取引先が新規に自社CPUをつくった。
NMIがマスクできる仕様だった・・・・・・(;´Д`)??????
でも、そのMPU関連の仕事くれたから(・∀・)イイ!!
それはNMIと呼ばないのではw
314 :
デフォルトの名無しさん:04/08/14 19:49
打ち合わせの時、「そのNMIはマスク出きるか、否か」の確認は取ったが、
その点以外は誰も突っ込まなかった。
カラスは白い場合もあるんだな、って思ったよ。
書込み可能なROMみたいなもんだな。
そのたとえはいかがなものかと
リセット入力をマスク出来るCPUみたいなもんだな
美子っていう名のブスみたいなもんだな。
誰も突っ込まないところも同じ。
>>317 設定EPROMレジスタでリセット入力端子を汎用入出力に出来る一チップマイコンは普通にあるけどね
バグっててリセットできないとむかつく。ノートPC使ってるが、ハングッたら
電源OFFさえできないのでバッテリーはずして電源ケーブルを
抜かなきゃならん。ヽ(`Д´)ノ
何を考えて設計しているのかと小一時間・・・
>320
今時、電源スイッチ長押しでだめなノートPCあるの?
それとも自分の無知を棚上げ...
>>231>>232 え?電源スイッチ長押し・・・・・・?あ、ああ。そうだよ。そうとも
>>それとも自分の無知を棚上げ...
((((;゚Д゚)))y-~~ガクガクブルブル
・・・嫌だな。釣りだよ。釣り。
今時 知らない香具師いるわけないじゃん。w
次にハングしたら、慌てず騒がず、いつもの様に電源長押しで対処さっ ♪
∩
( ⌒) ∩_ _グッジョブ !!
/,. ノ i .,,E)
./ /" / /"
_n グッジョブ!! ./ /_、_ / ノ'
( l _、 _ / / ,_ノ` )/ / _、 _ グッジョブ!!
\ \ ( <_,` )( /( ,_ノ` ) n
ヽ___ ̄ ̄ ノ ヽ |  ̄ \ ( E)
/ / \ ヽフ / ヽ ヽ_//
漏れのノートPCの電源スイッチは落下のショックで押せなくなったのだが。
>>320 餅搗け。レス番間違ってるぞ。
>>325 大丈夫、ゼムクリップを使えばなんとか端子を接触させられる。
一度起動したら後はサスペンドかリセットしかしないし。
#サスペンド/サスペンドからの復帰は蓋の開け閉め。
327 :
デフォルトの名無しさん:04/08/18 11:44
割り込みで書き込み、普通のルーチンで読み込みするとデータが化けるんだけど、何で?
色んな原因が考えられる。一概には言えないので、
なにをどうしてるか、環境とかをUPしてください。
多いのが 8bitマイコンで割り込みで 16bitのINC をさせたりしてるのを
メインで比較しようとしたらとかのミスだね
332 :
デフォルトの名無しさん:04/08/18 19:02
メイン側の比較の最中に割り込みが起きるとアボーンというわけか・・・
333 :
デフォルトの名無しさん:04/08/18 21:23
int幅より大きい変数を扱う場合は化ける可能性がある
あと、構造体やデータブロックを扱うときは
メインでアクセスしている最中に割込が入れば、
割込前と割込後でデータに整合性がなくなることがある
334 :
デフォルトの名無しさん:04/08/19 07:47
単純に割り込み禁止・許可をすればいいんじゃない?
質問したひともういない?
336 :
デフォルトの名無しさん:04/08/19 16:39
セグメンテーション・フォールト って
叫んでみたんだけど、まるで何かの必殺技みたいだよな
帰郷してました(^^;
職場の先輩に聞いてみたら、やっぱり
>>331>>333のような話でした。
でも、割込禁止を使うと割込できるところが少なくなってしまうという問題があって。
割込って難しいですね。
>>338 複数命令にまたがって読むほんの数バイトのコードのとこだけ割り込み禁止にすればいいんだよ
340 :
デフォルトの名無しさん:04/08/20 23:08
>>338 割り込みは不必要に多用される傾向があります。
割り込みを使うと、今回のようなボラタイルなデータの発生があります。どの
データがボラタイルか明確ならば良いのですが、注意していても見逃しやすい
ものです。通常は、割り込みルーチンを先に作りあげ、後からはできるだけ
いじらないようにします。
割り込みの多用は、プログラムを難しくすること以外に CPU の時間不可を
消費することです。急いでもいないものに割り込み処理をさせることで、
本当に高速に処理しなければならない処理が遅らされてしまいます。
残念ですが、最初から、時間不可を適切に配分した制御プログラムの設計は
めったに見られません。
>>340 今回の件はvolatile関係無いんじゃ?
volatileつけてても、下位の計算と上位の計算の間に、割り込みルーチンにより変数が
変化したら壊れた値を読んでしまう。
どうしても割り込み使いたくないなら、排他制御でぐぐれば
何かよさげな方法が見付かるのではないかと。
atomic性を保証する手段はいくつかあるし。
まあ割り込み禁止してしまうのが簡単・確実だと思うが。
>>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値で呼び出し元へ復帰*/
}
というふうにしてヤレとなってますな。
>>338 割り込みで16bitのカウンタを実装しないというのもシンプルで有効な戦法だよ。
割り込みでは8bitのカウンタを inc だけして
メインではそのカウンタがゼロでなければ、ひとつdecして16bitカウンタを1つ動かす。
メインで実際のカウンタを実装するわけ
345 :
デフォルトの名無しさん:04/08/21 11:55
341>今回の件はvolatile関係無いんじゃ?
C 言語の volatile じゃなく、英語での volatile の意味と解釈してください
346 :
デフォルトの名無しさん:04/08/23 07:45
データブロックの場合はバッファを持たせて、ポインタを使えば、
バッファを指すポインタをつけ換えるところだけ割り込み禁止にするだけでよいので、
割り込み禁止の影響は最小にできる
>>346 その方法ならReadポインタ Writeポインタを別にすれば、割り込禁止も無くせるね
348 :
デフォルトの名無しさん:04/08/23 09:38
>>347 ReadポインタとWriteポインタが重なったときはどうする?
>>348 buff1
buff2
・・・
buffN
とバッファがあるとしよう
PointerR PointerW が 最初 buff1を示しているとする。
PointerW は割り込みでその位置に書いて 次のバッファを示すように更新される
PointerR はメインで、PointerWと値が違うときに、その位置を読んだ後に次の位置に更新される
たとえば、割り込み周期内でメイン内で1回以上呼ばれるなら、バッファのサイズは2でよい。
さて問題。
PointerWが2バイトで表現されたとして、メインの比較途中に割り込みが起きたとして、
それが誤動作の原因になるか?
>>340 デバイスドライバのトップハーフとボトムハーフみたいに、
「本当に必要な箇所のみ割り込みで動作」させるというのが解?
>>349 PointerW と PointerR の不一致検出なら
PointerRは割り込み側で更新されないから誤動作しないと思う
差などの演算結果を利用してたりするとダメダメ
>>352 もっとも比較のしかたによっては一周期検出が遅れる場合はあるでしょうから
それでタイミングが間に合わなくなるようだと誤動作するということになるですね
ほんなとこに神経使わなくていいように素直に割り込み禁止かけるのが吉
デバッグや機能追加でハマル原因
>>340 >残念ですが、最初から、時間不可を適切に配分した制御プログラムの設計は
>めったに見られません。
わたしゃ8ビットCPUのしょぼいコードしか書いたことないから偉そうなことはいえないけど、
「時間負荷の配分」がそんなに難しい問題とは思えない。
要はイベントaに対応する必須の処理を処理Aとすると、処理Aをブロックする処理(処理A自身を
含む)の合計時間がイベントaの最短の発生間隔を超えないようなコードを書くだけ。
あとはゲームや動画の分野では初歩の初歩である「忙しいときは
やってもやらなくてもいい処理は諦める」ようにするだけ。
これは時分割ルーチンのフラグをメインの中でポーリングするようにすれば
自然とそうなる。
355 :
デフォルトの名無しさん:04/08/24 00:29
>>349 ポインタをインクリメントするところだけは割り込み禁止にしないと危なくないか?
厳密には安全な場合だってあると思うが
356 :
デフォルトの名無しさん:04/08/24 11:34
HEW/C++では関数ポインタをvoid *で使えないみたいです。
何を定義したら良いですか?
>356
void (*pfunc)();
キャストするときはこんな感じ
pfunc=(void(*)())func;
>>355 良く考えれば、それぞれのポインタのインクリメントは割り込みとメインでされて
それぞれの不一致比較だけなので、問題無いと判ります。
危険そうだから保護というのは一見正しそうにみえて深く考えてなく
危険なのに保護されない原因になるので注意。
360 :
デフォルトの名無しさん:04/08/27 02:51
SH3を扱っている方で、
マニュアルに、多重割り込み時のレジスタの保存はユーザがやれみたいな記述があったと思いますが
gccで開発するとき、このあたりを意識していますか?
ちゃんとコンパイラが吐き出したコードを見ればいいのでしょうけど
アセンブラが苦手なもので。。。
ご教授ください。
>>360 そんな人はこの業界から去ってください。
海外に発注したほうがマシだ。
>>360 意識以前にそんな濃いとこはアセンブラで書けよ
364 :
デフォルトの名無しさん:04/08/28 06:13
割り込みはアセンブラで書くよな
365 :
デフォルトの名無しさん:04/08/28 07:44
>>360 マニュアルにそう書かれているなら、
少なくともルネサスね開発ツールではサポートしてなさそう
やはりgccでもないと考えるのが妥当では?
>>365 ありがとうございます。
やはりCとアセンブラではCの方が圧倒的に可読性が高いし楽に感じますので
単純に関数に入るときに現在のレジスタを退避するだけでいいなら
なにも考えなくてもいけるかなとか思ってました。
どなたか経験者がいればお話を聞きたいと思いました。
>>363,
>>364 アセンブラで通常のジャンプとはどういうところを変えるか気にして書いたらいいですか?
うーん。
Cで書いて間に合うような処理なら、割り込みではフラグだけ建ててメインで処理すればいいんじゃないの?
と思っちゃうんだよね。 割り込みは最低限にするべきじゃないの?
割り込み負荷が大きいと、電池の消耗も大きいしさ、
色んなタイミング合わせが厳しくなって、その時楽に思えても、後で効いてくるんだよね。
通信 FIFOに書くまで
タイマ カウンタやフラグを建てるまで
>>368 フラグだけ立てる処理をCで書いても、レジスタ保存しなくてよい可能性高くないの?
結局、Cの吐き出すソース見なくちゃ無駄なレジスタ保存するだけなわけで、
可搬性を考えるとそこだけ#if で区分けするしかないんじゃないの?
だったらそこだけアセンブラで書いたっていいんじゃないの?
言語に関して言えば、
Cだと、割り込みをつかっても周辺機能のドライバは
H8->SH1->SH3 まで、ほとんどソースの変更なしに使えるし
初めてのチップでも
FDCのドライバで16bitFATを実装して4日
NE2000互換チップで、UDPまでなら6日
くらいで書けますよね。
これがアセンブラじゃそうはいきません
、、、すくなくとも私は、
>>361 だから仕事が回ってこないのかなぁ〜
やっぱアセンブラでグリグリ書ける位でないとだめかな
>>368 もちろん処理系依存でしょうが
interrupt修飾子のついて関数は適切にレジスタ保存してくれていると思ってます。
ちゃんと吐き出されたアセンブラみないといけないですよね。
SH-2Aは割り込み専用のレジスタバンクを15個搭載してるらしい。
俺のペニスを制御するにはどうすればいんだ?
座禅でも組め
板違いかと思うんですけどちょっと質問させてください
当方、某地底大の理学部生なんですが
最近自分のやりたいことが純粋物理よりも制御系に近いことに気づいてしまいますた。
今までただの物理野郎だったので制御系に関することは自力で勉強しないといけないかな・・・と思ってまつ
将来的にはメーカー就職で制御系SEになりたいのですが、
こういう理論を勉強しておくとよいってのはありますか?
それとみなさんはこの道何年くらいやってるんですか?
>>377 私は、
>>361で言われている程度なのであまり大きなことは言えませんが
私の場合、元が高周波、アナログ系なんですが、多少なりとも電子回路をやっておいて助かったことが多いです。
ソフト屋は大抵工期の終盤ですし、トラブルがハードのせいなのかソフトのせいなのかの判断に迫られることが
毎度です。
ちゃんとハード屋が対応してくれればいいですが、「検査したし動くはず」としらんぷりするところも多く
ハードがわかっているとこういうトラブったときに、主導権を握りやすいです。
>>377 そういうのはなろうとするもんじゃなくて、私みたいになってしまうもんだと思ってたw
と冗談はさておき、制御系といってもやることはいろいろあるので問題を切り分ける能力が必要。
ハードウェアを渡されて、動かしてくれって仕事もあれば、
EWSのライブラリとCUI版の動作確認ツールを渡されて、GUIを作ってくれって仕事もあるだろう。
前者であれば>378の言うような電子回路系の知識やCPU周りのロジック回路の知識が必要かもしれないし、
後者であれば他人の書いたライブラリのバグを発見する能力が必要かもしれない。
また、(プログラミングもするSEでなく)上流工程を扱うなら、顧客の要求を聞き出す能力や
プログラマを管理統括する能力も必要になるだろう。
だがしかし、(大手)メーカー就職でそれだけの能力を身に付けてそういう立場に立つことができるかと聞かれると……
>>379 >そういうのはなろうとするもんじゃなくて、私みたいになってしまうもんだと思ってたw
ワラタ
あと、メーカったってどこに就職するかってのは難しい問題かもしれないね。
どこも分社化、アウトソーシングが進んでいるしね。
メーカに就職しても制御系の仕事(実務)が出来るかというと・・・さあ?
>>377 採用する側の設計管理職だが、物理のセンスは役にたつ。でも、留年してでも、
電子工学などでマスターを取ったほうが良い。工学屋の勉強もしておくことが
重要だよ。
>そういうのはなろうとするもんじゃなくて、私みたいになってしまうもんだと思ってたw
ムカツク
hmhm
とりあえず、工学部の院を目指してみることにします。
理学学士でも工学院の受験って可能ですよね、多分。
3年だからちょっと必死ですけどorz
↑377です
>>384 可能だよ。
でも、入りたいところの分野の基礎は知っていないとダメ。
制御系ソフト屋になるって学生時代から考えてる香具師もいるのか・・・
昔は電子工学卒でじゃんけんに負けた人がなる、と思われていたもんだが・・・
>そういうのはなろうとするもんじゃなくて、私みたいになってしまうもんだと思ってたw
まったく同じく(w
なろうとしてなった俺は変わり者ですか?
>>384 4年目の研究室を工学系を選ぶの手だね。今の大学物理教育のレベルは
おちているそうだけど、統計・量子力学くらいまではきちんと学んだほうが
いい。いまでは工学系の授業は取れないの?
ま、厳しい実験系の研究室に行くことだよ。その1年間の苦労は将来に
必ず報われるからね。
>>387 一昔前はそんなもんだろ
回路屋ばかりの中でババひかされた奴が、
CPU廻りからソフトまで全部やってるうちに
何時の間にか組み込み専門になってるパターン
スイマセン専門しか出てない品管あがりのオサーンが
回路引たりVHDL書いたりI/Oなんかの下回りを
コーディングしたりしてから大卒院卒の子たちに上辺の
処理書いてもらってます。
だーれも半田ごて握ろうとしないでやんの
394 :
デフォルトの名無しさん:04/08/31 06:56
ハードリアルタイム処理は
難しい
難しい
難しい
だんだんマターリと良い雰囲気になってきたなあ
愚痴はよそでやれ、なんて無粋なことをいわんでくれよ
396 :
デフォルトの名無しさん:04/08/31 23:40
300mm対応の半導体製造装置。
semi規格準拠。
このような装置、シーケンサーで制御可能ですか?
シーケンサーで適切ですか?
情報量が少ないので、シーケンサーで十分という事にしましょう
ただし、MITUBISHI製な
398 :
デフォルトの名無しさん:04/08/31 23:58
最近まで制御系っていうとハードに近い部分かと
思ってたけど、なんかメッセージでやり取りする
サーバ側のプログラムも制御系っていうの?
400 :
デフォルトの名無しさん:04/09/01 00:15
最近まで制御系っていうとOSのことかと思っていた。
401 :
デフォルトの名無しさん:04/09/01 07:06
>>346>>349 亀レスだけど
データブロックとかReadPointer、WritePointerだと
割込禁止を減らせるというのがいまいちわかりません。
詳しくおしえてください。
>>396 むしろ、PLC(シーケンサ)の方が安全でよいんじゃないでしょうか?
>>397 なぜにMITUBISHI?
MITUBISHIのPLCって、シリアルモジュールで
連続でMAX点数まで読み込み要求すると、ぶち切りで全点返さないことがありません?
つまり、500点要求したのに200点しか返さない
もちろんパケットは正常に正規のパケット形式で。
>>396 制御はできるだろうけど、装置の分野によるんじゃないのかなあ。
PLCでR2Rとかできるのかなぁ。(よくわからん)
>>396 製造装置の一部ですが、
上位との通信にPCを、本体はPLCでやってますけど。
SECSをセクスと読んで怒られます(w
>>401 割り込みと、メインで別の領域に読み書きしている限り割り込み禁止する必要は無い
というのは判るよね?
割り込みで次々にデータが発生する場合、書き込む場所をその都度変えて
メインで読む場所とかちあわないようにしようというテクニックの話をしているわけ
408 :
デフォルトの名無しさん:04/09/01 22:15
シーケンサー扱っている皆様へ
三菱派 or オムロン派
タッチパネルは
三菱派 or オムロン派
私はオムロンかな・・・
特にタッチパネルのNSシリーズはいろいろ出来て好きです。
(というか、GOTはあまり使ったこと無い)
>>408 ラダーは書きませんが、コミュニケーションユニットでPCとの通信はよくやります。
MITUBISHIは、
>>403みたいなことがあるし、フレームの形式などをみると
オムロンの方がだんぜんシンプルで好きです。
410 :
デフォルトの名無しさん:04/09/02 00:04
組み込み系は解るんですが、制御系はどんなお仕事なんでしょうか?
マジレス希望。です
411 :
デフォルトの名無しさん:04/09/02 00:05
>>410 PCプログラマの漏れの想像では、
・ボタンAが押されて、センサBがOFFなら、モータMを回すスイッチMをONにする。
・センサCがONになったら、モータMを逆転させるスイッチRをオンにする。
・センサDがONになったら、スイッチM、スイッチRをOFFにする。
・センサCがONになったら、アームを動かすモータのスイッチHをONにする。
とかこういうのを数百くらい定義して、機械を動かす仕事なんじゃないだろうか・・・
>>412 想像で言わないように。邪魔なだけです。
414 :
デフォルトの名無しさん:04/09/02 17:06
413=410
>>412 そのようなことはPLCにまかせるのが常識。
PLCとの通信も今やほとんどOPCを使う。
設定値を書いたりデータ収集もSCADAがやるので
たまに上位通信のコードを書くくらいか。
なるほど。
PLCのプログラム(ラダーとか)を組む=制御系、かと思ってました。
そんな事だけの仕事なんてねえよ…ナメとんのか
>>411 レスどうもです。はい、読んでみます。
>>412 レスdクスです。私も似た感じの想像をもってますよ。
419 :
デフォルトの名無しさん:04/09/03 00:25
ヤフオクのパソコンでテレビ・ラジオが見放題の方法わかる人いる?
気になってるのだが。
>>419 そんなもん、制御系やってる人間なら常識だろ
>>410 機械制御に纏わる諸々を含めて制御系と言う。
例えばカーエレクトロニクスで言えばエンジン制御もカーナビも制御系と言えば制御系。
#対義語は業務系。
>>419 が何を言っているのかわかる人いる?
スレ違いな気がするのだが。
>>421 レス、どもです。わかりやすい説明、ありがとうございました。
過去スレも読んでみました。
理系色が強い分野という印象受けました、です。
>>421 住人には機械屋さんが多いみたいだけど
スレの歴史的には組み込み全般も含めて
広義の制御系じゃないか?
ちなみに俺は通信機屋、見た目だけなら全く動かない(w
制御系もハードよりとソフトよりがある。
ハード系の仕事にソフトしか知らない自称「制御系」が入ってくると悲惨。
ナニコイツ.....(;´Д`)????って感じ。
FAの世界では制御するのはあたりまえなのであまり制御系とか言わない。
昔ROMに焼いてプログラム動かすのが組み込み系と思ってた
429 :
デフォルトの名無しさん:04/09/04 13:26
430 :
デフォルトの名無しさん:04/09/04 14:01
>>426 いま組み込みLinuxがうるさくいわれてるのはそんな人が多くなったからでしょ?
Linuxベースにすれば莫大な数のソフトを流用しやすくなるしね。
PCアプリ系の方が強いコーデックとかの数学関係のミドルウエアは魅力。
CPUのFLASHに直焼
435 :
デフォルトの名無しさん:04/09/07 04:14
>>426 >ソフトしか知らない自称「制御系」
ああ、これは困るんだよ
将来食えないんだよ
どうしよう
ソフトで食べれなきゃハードで食べればいいじゃないの
(マリー)
>>426 ソフトの都合を考えてくれないハード屋さんも困りもの
そりゃ論外か(w
ソフトもハードも逝ける両刀使いなのが制御系の利点なんじゃないか
ウッフーン
PLCのメンテ関係も便利になってきたよね。
ROMライター使わなくてもコンパクトフラッシュでプログラム保持したり
USBケーブルでメンテ出来たり・・・
441 :
デフォルトの名無しさん:04/09/11 00:59:15
保守
442 :
デフォルトの名無しさん:04/09/13 01:12:18
ドライバやファームウェアは制御系で合ってる?
>>442 組み込みってことですよね。
対するは業務系なので制御系のつもりでいます。
で、なにか話題がありますか?
445 :
デフォルトの名無しさん:04/09/13 01:50:50
446 :
デフォルトの名無しさん:04/09/13 02:26:54
あるデバイスのインターフェイス関数をまとめるとき、
引数と戻り値を構造体へのポインタで受け渡しするのはいいとして、
呼び出される側の関数が内部で保持する変数群を、
呼び出す側から指定するのは、どうやったらすっきりまとめられる?
447 :
デフォルトの名無しさん:04/09/13 03:25:50
>>446 > 呼び出される側の関数が内部で保持する変数群を、
> 呼び出す側から指定するのは、どうやったらすっきりまとめられる?
ここがいまいち不明なので詳しく
449 :
デフォルトの名無しさん:04/09/13 07:03:50
>>447 失礼
要するに、同じ関数を何度も呼び出して、それぞれに状態を保持させる場合という意味
その状態は、外部には関係ない変数というとき、どうしたらよいのか
450 :
デフォルトの名無しさん:04/09/13 07:22:37
複数のオブジェクトということかな?
お前らXMODEMとか好きか?
452 :
デフォルトの名無しさん:04/09/13 12:42:29
>>449 普通に戻り値で状態値を返して呼び出し側で管理する
じゃダメなんですか?
やたらなんでも隠すよりも、
関数1つ1つをなるべく汎用的なパーツにして
使うほうがいろいろ理するほうが、後で見てわかりやすいとおもうけど
そういうこととはちがう?
それともポリモリたいってこと?
↑
×いろいろ理するほうが
○いろいろするほうが
C の fopen だって、いってみれば FILE クラスの
インスタンスへのポインタを戻す関数だ。
だから、内部バッファに何バイトデータが入ってるとか
そういう細かいことを気にせず使えるわけで。
457 :
デフォルトの名無しさん:04/09/13 18:59:12
>>454 そうですね。
やたらとこれは公開する、これは隠ぺいするとこだわると、
かえって複雑になるだけのような気がします。
この場合は、無理にstatic属性にするよりも、
インターフェイス用の構造体に含めてしまった方が自然に思えます。
どのみち、Cでは完全なオブジェクト指向はできないですし。
未だにC++も使えないのかこの業界は(w
460 :
デフォルトの名無しさん:04/09/13 19:03:09
USBのメモリスティックの接続を切るAPIってありますか?
調べたけど全然見付からない。。。 OTL
OSはITRONです
また512k発言出ないかなー
463 :
デフォルトの名無しさん:04/09/13 20:48:36
>>458 mallocも使ったことないけど何か?
組み込み業界じゃC++は普及率国内15%ぐらい、英・米で40%ぐらいだったと思う。
その内組み込みの世界でも流行するのかね?
C++にするメリットがイマイチよくわからん。
クラスなんて概念だけにとどめておけばよいものを、言語仕様にするから
下手に設計→プロジェクト頓挫、なんてことになるのでは?可読性もいいとは思えん。
ま、おっさんで現役引退してるからな・・・・
>>464 確かに一部の機能は欲しくはなりますね。
466 :
デフォルトの名無しさん:04/09/13 21:58:43
動的インスタンス生成なんて、メモリの使用状況が読めないので、こわくて使えない。
だいたい必要なインスタンスの数は静的に決まってしまうので、配列で充分なことが多い。
オブジェクト指向は興味あっても、使い道がない。
そのうちメモリ1GB積んだ炊飯器とか出るんだよ。
そのときC++が役に立つ。
>>466 > だいたい必要なインスタンスの数は静的に決まってしまうので、配列で充分なことが多い。
だね
ヒープが虫食いだらけになって、ガベージコレクションが始まったら・・・((;゚Д゚)ガクガクブルブル
>>467 そのころのPCではどんなプログラミング形態になっているんだろうね〜
>>469 そのころはWinCEで制御なので(ry
蓋を明けたら真っ青なお米が炊き上がってるんだな
炊いてる途中なのに凍るんじゃない?
473 :
デフォルトの名無しさん:04/09/13 23:57:49
>>468 ガベージコレクション?
ヒープマネージャすらいないですよ
どうせグローバル変数ばかりですよ
悩まなくていいから気楽ですよ
474 :
デフォルトの名無しさん:04/09/14 00:31:51
>>460 ミドルウェアとして販売されているんじゃないの?
フリーで手に入れたいとか?
>>464 ポリモーフィズムとかテンプレートとかいいと思うけど。
>>466 placement newがあるよ。
前にMSP430C413上で組んだときRAM足りなくなって困ったことがあったなぁ
>>462 512K発言も去年のいまごろだっけ
477 :
ビル・ジョブス:04/09/14 04:36:06
>457
遅レスで申し訳ないが、公開と隠蔽は設計時に考慮しておけば問題にならない、
というか、そこにコストを費やすのがプロでしょ?
>476
TX49(32BITモード動作)でSDRAM256MBもあって困ってるよ。
どんな蛸が書いてもキビキビ動作しちゃうからバグの巣窟になりそうで。
478 :
デフォルトの名無しさん:04/09/14 05:21:35
256MBしかないの。
>>477 C++でなくて、Cで公開、隠蔽にこだわるのも限度があると思うが。
メモリも安くなったよな
C++にこだわる理由もないし、Cで書かなきゃいけないわけでもないので
開発者の好きなようにさせればいいと思う。っていう事で桶ですか?
>>481 ハードウェアのコストとソフトウェアのコストとサポートのコストの合計
を抑えられるならね。
言語の指定は開発者じゃないよなぁ
まあ趣味でやってる開発者ならそうなのかもしれないか
487 :
デフォルトの名無しさん:04/09/14 20:22:28
474>>
自分で実装しないといけないんですよ。
OSはWindowsなのにWindowsを見せないとかいう訳のわからんコンセプトなので。
だったらメモリスティック使うなと(ry
>>487 OS は ITRON じゃなかったの?
はい。TRON上のWindowsCEです。
>>481 今の仕事の環境では、Cかアセンブラしか選択肢がありませんが何か?
>>487 DeviceIoControl() IOCTL_STORAGE_EJECT_MEDIA
そんな実機無いから試してないので動くかどうかわからんがな
>>490 そこまでしてTRON使うほど時間に厳しいのか?
今度の案件はメモリ16KBですが何か?
>>493 おめでとう。
俺は今まで6KBだったよ
8KB ROM, 256B RAM
こいつはPICマイコンかと思た<MSP430
スタートアップ以外全部Cで書いた、よく収まった、自分を誉めてあげたい
コンパイラ作者もほめてあげてw
スタートアップもCの文法範囲内でむりやり書いたことがあるよ。
興味本位でやってみたけどつまらなかった。
興味本位でするなよ・・・・
500 :
デフォルトの名無しさん:04/09/15 23:18:02
256のRAMでCって、チャレンジするだけですごい
どんなアプリを走らすの?
俺なら、チャレンジする前に、そんなのできるか!って言いそう
>>468 ガベージコレクション?MMUで対応できますよ。例えば・・・・・
焼肉屋で、カルビセット頼んだ。
↓
「ナルム」が付いてきた。単体ではまず頼まない品です。だって、いらないもん
でも食べました。だって価格に含まれてるもん。
↓
会社で次機種ではARM946EJ-Sを採用しますって言われた。
MMUが搭載されています。
↓
ざわざわ・・・ナルムか・・・ざわざわ・・・・・・ナルムだろ・・・・
あ・・・926EJ-Sだ・・・orz
504 :
デフォルトの名無しさん:04/09/16 02:15:16
>500
ある懸賞の賞品、11000作って10000は撒いたらしい
>497
IARは偉かった
507 :
デフォルトの名無しさん:04/09/16 18:13:34
興味でプログラム書いている奴はヲタクでしょ?
508 :
デフォルトの名無しさん:04/09/17 07:46:14
おまえら
C++でもCでも、どっちを使ってもいい環境のとき
どっちを使う?
そして開発陣の力量と、
仕様書と開発言語のマニュアルとetc…
512 :
デフォルトの名無しさん:04/09/17 09:27:02
でも、実際C++をC++らしく有意義に使いこなせる香具師って
めったにいない。
叩かれているが、エピスくらい使える香具師はめずらしい
使えるならC++使う。
だがうちに来るファーム関係の仕事ではC++が使えるような規模のはまず無い。
515 :
デフォルトの名無しさん:04/09/17 12:37:40
C++だと、そんなにメモリを食うのですか?
マジレスしておくと、言語使用的には特にメモリの必要量が増えるわけではない。
寧ろ、効率よいコードを書くことによって減る可能性もある。
問題は、C++だからと安易にSTLを使って肥大化させてしまったり、
ターゲット機上ではコンパイラが動かなかったりすることかな。
STLだって実装によってはコンパクトなのもあんじゃないの?
確かにSTLPortとかはでかいけど。
リアルタイムしかやらない俺にはC++なんて無関係
520 :
デフォルトの名無しさん:04/09/17 22:51:37
Cでオブジェクト指向っぽく書く方法ってないの?
あるけどそんな事する位ならC++を使った方がいい
523 :
デフォルトの名無しさん:04/09/17 23:41:47
524 :
デフォルトの名無しさん:04/09/17 23:52:36
>>522 趣味の世界だな。仕事でやられたら・・・・
読みにくいんじゃ━━ヽ(`Д´)ノ━━ ゴルア!!
パーン _, ,_ パーン
パーン_, ,_ ( ・д・) _, ,_パーン
( ・д・) U☆ミ (・д・ )
⊂彡☆))Д´(☆ミ⊃ パーン
, ,∩彡☆ ☆ミ∩, ,
( ) パーン ( )
パーン パーン
>>525 私はやってるよ。
C++よりは早いからね。
初期のC++は、Cソースへ変換してからコンパイルしていたという話もあるな
>>522 のリンク先、近い事はウチもやってるなあ。
Solaris や HP-UX の仕事で。
いや C++ コンパイラが買えないからしょうがなく。
>>525 一度、Xt Intrinsics でカスタム Widget を作る事をオススメする。
C++や、なんちゃってC++は、出来る人のコードならいいんでしょうけど
プロジェクトにやっとこさついて来てる程度の人だと
後で見て、とても追えないものになっていそうで怖いですね
クライアントもまだついて来れませんし、ひとりよがりって見られそうです
うちでは、まだフルに使える状況じゃないですね
C++を使うなら使うで、部門内での意思統一は必要ですね。
なんちゃってC++の時点でコンセンサスが得られていないかと・・・
本来なら楽な意思統一のためにフレームワーク使うんだけど
組み込みじゃ無理だろうな…
533 :
デフォルトの名無しさん:04/09/19 01:14:04
インスタンスの動的生成という時点で、使ってみる気が失せる。
アメリカではC++の方がCよりも使われてるようだが、
どうやって使いこなしているのだろうか?
>>533 C++は動的生成が必須なわけではありません。
std::stringとかコンテナは動的生成してない実装を見た事がありません
>>533 それはもちろんアメリカ人が優等人種だからですよ
ユダヤ人ね
そりゃま、全部静的にできるけどさ、
それってC++である意味がほとんど無い。
better C的なものでしかないね。
ま、俺も組み込み系でC++を使えたときにはほとんどそうなっちゃうんだけど。
Winアプリとか作るときにはそんなことはしないが。
>>538 無くネーヨ
継承しなければクラスも普通に書けるんだし。
540 :
デフォルトの名無しさん:04/09/19 10:24:18
静的生成だと、グローバル変数でもいいじゃんって希ガス
541 :
デフォルトの名無しさん:04/09/19 10:27:40
>>540が何言いたいのか分らないのは俺のレベルが低いせいだろうか..?
542 :
デフォルトの名無しさん:04/09/19 10:39:12
543 :
デフォルトの名無しさん:04/09/19 11:32:25
>>540 飛躍し過ぎ
動的生成→malloc
静的生成→配列
で、配列のオフセットくらい渡せるだろ
つーかうまくpoolするようにアロケータ書けば動的生成も問題無いと思うんだけど。
やっぱ制御系は頭腐ってるオッサンばっかなの?
まぁ確かにポインタ変数に整数値を持たせる戯けはいるし
1024*20*32768なんて3次元配列静的に確保する阿呆はいるし
グローバル変数があればメンバ変数なんて要らないなんて頓珍漢もいるがな。
ioctlの引数はマジで柔軟すぎ
あるときはポインタ、あるときは整数、またあるときは
Interface誌でもC++やってんのにまだ否定的なひと多いのな。
549 :
デフォルトの名無しさん:04/09/19 22:19:54
過去レスにもあったけど、炊飯器が1Gのメモリでも積むようになれば、
C++を考えてやってもいい
否定的っていうか、C++使うほどでもない物にC++使わないし、
使いたいなら使うし。
静的メンバだけで閉じる規模のシステムだと、
動的生成なんか実装するだけ無駄だろ。
制御とか組み込みとかになると、全部が全部そんな贅沢な環境じゃないってこと。
つーか怖がりすぎ。
BetterCだとしても使えるものは使うのが技術者ではないのかね。
コンパイラが用意されれば少なくともbetter Cとして使うよ。
バッファ以外に数十kbyteくらいメモリがあって、
クラスを使うメリットがあるなら普通に使うし。
単に環境に合わせているだけだよ。
C++使える開発環境なんだが、既存ソース至上主義の職場だから
手を入れられねぇ
それ以前にまずは、構造化をちゃんとやれと・・・・
つーか16KBもあれば十分C++で動くだろ。
iostream使うとか余程アフォな事しない限りは。
OSもライブラリも無い状況では、まずメモリ管理を実装するのが面倒なんだよね。
だからメモリがある程度あっても静的変数ばっかりのほうが楽で速い事が多い。
そもそも入出力からファイルシステムからみんな自分で作らないといけないなんてざら。
入力がボタンだったり出力が新規開発のデバイスだったりとかね。よくあるよ。
C++でもnew封印すりゃ組み込み便利だぜ
>558 それいいけど代替品作るの面倒だよな。
C++が恐いのは動的生成によるメモリ分断化なんだけど、防ぐ方法ないよな?
MMU使ったOSとか、そういう豪勢な環境ならまだしも
560 :
デフォルトの名無しさん:04/09/20 19:43:54
ガベコレってOSがやってくれるの?
少なくとも低レベルメモリ管理はOSのお仕事の範疇でしょう。
562 :
デフォルトの名無しさん:04/09/20 20:49:49
>>560 OSがやらなければ、誰がやるんだ?
少なくとも俺はやだ
>>559 覚悟を決めてallocator<T>をつくるしかない。
もしくはboost::poolとか使えるかも。
>>562 キミはいったい誰なんだ?
OSではないとすると、アプリなのかw
動的生成を封じられたC++の存在価値って何?
567 :
デフォルトの名無しさん:04/09/21 00:15:27
リアルタイム制御で、C++をはじめとしたオブジェクト指向が使われないのは
やはりメモリマネジメントの問題と考えてよいのでしょうか?
>>566 カプセル化(制御系に多いバカ封じ)
そもそもバカはC++を使えないと言う話もあるが
>>567 メモリマネジメントの問題というより、そもそもC++ってメモリ使いまくるし
遅いから・・・
571 :
デフォルトの名無しさん:04/09/21 07:39:08
ヒープ使いすぎ
>>567 最適化の問題が絡んでるって事は?
組込みだとコンパイル前後でのコードの実行順序が代わるのを
嫌って最適化を弱くする事が多い(volatileをきちんと使えば
よいだけな気がするけど)。その結果、本来ならinline展開
されるようなコードでも、展開されず遅くなるとか。
>>571 >ヒープ使いすぎ
別にC++は"stringやらlistをメモリオーバーヘッド無しで
利用できますよ"なんて規格でうたっているわけではない。
組込み向けなヒープにやさしいライブラリを作ればいいだけでは?
組み込みだとそもそもヒープ自体存在しない環境も多いのでは?
Cでいいじゃん。
>>573 ヒープが使えなくてもコンテナライブラリは作れると思うけど。
まあ、そういう規模の小さなものまで何が何でもC++でとは言わんけど。
ただ、余りに本質とかけ離れた言い訳でCでいいじゃんとか言ってるのは
ソフト屋としては余りに痛いかと。
単純に文法として便利な面が多いから
new封印C++を使ってるが、異端なのか?
>>576 classも封印、structの中にメンバ関数書くのも封印
//も封印
>>576 templateなんかは本来組み込みにもってこいなんだけどねぇ。
templateのコード展開量を簡単に確認 and 展開量を強制
出来りゃ問題無いんだろうけど。
>>577 だーかーらー、仮想関数じゃないメンバ関数の呼び出しと
普通の関数呼び出しのコストは代わんないって。仮想関数
じゃなくてもカプセル化の観点からすれば十分意味あるし。
>>578 組込CPU用コード生成するコンパイラでまともにテンプレートに対応してるのなんて聞いた事無いよ。
他にネタは無いのか!ネタは!
enum型で関数オーバーロード、演算子多重定義。
これなら組込みでもオーバーヘッド無しに使えるだろ。
Embedded C++は無視ですか?
まああれは糞だけど
>>566 動的生成なしでも使えるのがC++のいいとこだとおもうけど。
Javaにはできない。
>>567 リソースが少ない環境がおおいから、嫌ってるだけかと。
AdaもOOやってんだから、組み込みnotOOってわけではない。
俺がC++で苦痛なのは例外処理。
組み込みで使ってる人いるんだろうか。
584 :
デフォルトの名無しさん:04/09/22 06:38:58
>>581 オーバーロードは便利そう。
型の違う引数のとき、いちいち関数を作り替えたり、関数でなくてマクロにしてみたり、
Cだとめんどくさい。
毎回同じ環境ならいいのですが
CPUが変わったり、処理系が変わったり
一人だったり、複数でやったりだと
開発者のレベルもまちまちってこともありますし
処理系のためのライブラリをわざわざ作るのも
単にトラブルの元になるだけって感じだし
そういうのを意識したくないので
C++にはまだ行く気がしないですね
ちなみに、パソコンやワークステーションの方は、C++かDelphiです。
>>584 581は「enum型で」オーバーロード、演算子多重定義なわけだが。
enum A;
enum B;
int operator+(A a, B b);
とか
int f(A a);
int f(B b);
int f(int d);
とか。
enum→整数型が自動変換なので型チェックが甘い。
ただしclassほどのオーバーヘッドがない。
GCCだと要素ひとつのclassのインスタンスもレジスタにうまく載らない
が、enumのインスタンスは載る。
587 :
デフォルトの名無しさん:04/09/24 13:00:27
gccでC++が普通に使えるって、こないだ知ったわ
状態遷移表を使ってる人っている?
あとそれをサポートするCASEツールを使っている人とか。
>>588 有限状態機械のことですか?
違ってたら逝きます。。。orz
>>589 ステートダイアグラムの事じゃない?
有限状態オートマトンって…
Oat Mutton
>>590 そうです。
状態遷移表って、そのことかなって
有限状態機械は、2次元でやると穴が出来ないから
すっ飛びにくくはなりますね
昔、1次元で、猛烈にひどいコードを見た事がありますw
>>592 使ってるけど、CASEは使ってない
以前ZIPCはよさげだなと思った
594 :
デフォルトの名無しさん:04/09/25 00:23:52
>>588 通信系では使います。
マンマシンインタフェィスで、必要になる場合は、
操作性が悪いということだと解釈してます。
C++でいいと言う人。Cでいいと言う人。いろいろいると思いますが。
”住めば都”って言うように、実際その言語でやっていけば
本当にいいと感じるかもしれません。
ただ、Cから強制的にC++に引っ越すには。それをさせる動機があまりにも弱く
ある結果(アプリの作成)を出すにはどちらでもいいように感じます。
実際のところ今までやってきたCを捨ててまで、
C++に移行しなきゃならないように追い込まれるほどではなく、
ソフトの作成はCでほとんどできちゃいます。極端な話、これは何十年たってもそうだろうと思う。
#個人的に思うにオブジェクト指向というのも、
#今までの構造化プログラミングに変わるソフトウェア作成の概念というだけであり、
#両方の考え方とやり方は違うが、同じ結果を出せるはずだと思います。
#もっと、深読みすると「ソフトウェア産業の活性化」だけの為にできたようにも個人的に感じる。
あと、思ったのはオブジェクト指向がアルゴリズムの実装方法に関して
学習するのを妨げやしないか、と個人的に思ったりしてます。
というのも、今までにある使い尽くされたモジュールは大抵は実装されて
それがどういう処理になっているか知らずに簡単に使用できます。
初心者等が簡単に実装できる半面、それ自体の処理の流れは知らなくてもいいのです。
まぁ、もちろんそんなもの勉強すればいいじゃんと言われればそうですけど、
そういう風になる可能性もあるということが言いたかったのです。
極端なことを言うと、実際の処理を知らずにアプリを作成する、ということも可能なのです。
これは、良いことじゃねーかと言われる方もいますが、自分にとっては何か不安が残るところです。
むしろ、先にCを覚えずにC++を覚えた方がスムーズに
学習できるかもしれません。
Cを先行してマスタしてC++に移行した方に質問したいのですが、
C++をスムーズに学習できましたでしょうか?
御託並べるからC++の肝が理解できなくなる。
それはさておき、先ずはK&R時代のCの書き方を捨ててansiで書くようにすべし。
そうすればコンパイラがどちらであっても通るコードになるはず。
#細かい差はあるにせよ。
然る後、拡張部をC++流で書くなり必要なところを置き換えるなりすればよい。
C++だからといってなにも畏まる必要もないし、それはCでも同じこと。
学習の妨げ云々に関してはオブジェクト嗜好のみの問題でなく、
構造化プログラミングでも同じことが言えると思う。
部品のモジュール化、カプセル化、詳細の隠蔽はCのみでもそれなりにわけだし。
以前、Cで書いたあった処理をC++に書き直したとき
きちんと構造化してあったおかげで、ほとんど苦労なく書き直せました。
たしかにC++の方が綺麗に作れますが、ヘボが書くととんでもない事になりますね
まあ、この辺の話はスレ違いで、組み込みなどのプアな環境でのC++という話だったかと。。
あっちのスレで見たんだが、二進数を0b11010010って書けるCの処理系があるんだそうだ、
って今やってみたら、うちの処理系でも出来たわ。今までの苦労はいったい、、、、
苦労?工エエェ(´д`)ェエエ工
何かちょっとしたものを書くとき、
すぐにCで考えてしまうのが割り切れてないのかなぁ、と思う今日このごろ。
603 :
デフォルトの名無しさん:04/09/25 10:38:56
>>600 2進で書くのも16進で書くのも大差ない気がするが。
もしかして
>>599は10進で書いてたとかw
>>603 パラレルの入出力考えてたり、SPIなんぞで
妙な位置に割り付けられてると偉く面倒なわけで
出来ないわけじゃないが、面倒くさい
605 :
デフォルトの名無しさん:04/09/25 12:35:24
>>603 実際にハードじか叩きするコード書いたことない人間の発想だな。
>>605 >>603じゃないけれど、
2進数を16進数に一瞬で脳内変換できるくらいでないとダメだと思うよ。
実際、16進数で書いても2進数で書いてもほとんど変わらない。
でも、確かにポートのビットをOn/Offするのには2進表記の方が見た目に
直感的だとは思うけれど。
607 :
デフォルトの名無しさん:04/09/25 12:43:40
2進で書くと、何番目がたってるか目で追うのが逆に大変だったりとかない?
608 :
デフォルトの名無しさん:04/09/25 12:52:18
>>565 なんか単に感傷にしか聞こえないんですが。
じゃあお聞きしますが、仮想化・ブラックボックス化が不安というなら、
あなた自分の書いたコードの動作を固体物理学レベルで(w理解してないと不安に
なるんですか?
だってそうでしょ?
c処理系・機械語・ALUやメモリ・トランジスタ……
色即是空じゃないが、これ全部仮想化の産物ですよね。
609 :
608:04/09/25 12:56:06
>>実際にハードじか叩きするコード書いたことない人間の発想だな
||
|| × 0x3f284b74
|| ◎ 0011111100101000101101110100
||
||
||
|| Λ_Λ 605
|| \ (゜ー゜*) ハードじか叩きのキホンです。
||________________ ⊂⊂ |
∧ ∧ ∧ ∧ ∧ ∧ | ̄ ̄ ̄ ̄|
( ∧ ∧ ( ∧ ∧ ( ∧ ∧ | |
〜(_( ∧ ∧ __( ∧ ∧__( ∧ ∧ ̄ ̄ ̄
〜(_( ∧ ∧_( ∧ ∧_( ∧ ∧ ・・・・・ホントっすか、先生・・・・
〜(_( ,,)〜(_( ,,)〜(_( ,,)
〜(___ノ 〜(___ノ 〜(___ノ
漏れも16進の方が判りやすいや。>611見てそう思ったよ。
2進で書くならせめて、
0011 1111 0010 1000 1011 0111 0100
って書いてくれ。
00100000とするのと、20とするのとだと、後者の方が間違い難いと思う。
右にある5個の0を数え間違えたりするかもしれない。
614 :
デフォルトの名無しさん:04/09/25 14:01:15
605が窮地に追い込まれました
8bitの型までしかない処理系なんだろ。
autoconfで作ったconfigure走らせたらこんな感じのが出てくるのか?
char -> 1
short -> 1
int -> 1
long -> 1
float -> 1
doble -> 1
doble->double
0x7B
0b01111011
619 :
605:04/09/25 14:19:40
>>611 ワロタ
しかし、そのAAに描かれている発想そのものが、
はからずも600が「ハードを直叩きするコード」を書いたことが無いことを表していますな。
もっともコレ、実際にコード書いたことが無くてもちょっと想像力があれば
理解可能なことだとも思うけど。
>>608の話ともつながるんだが、(608も私だ)600の中ではメモリ上の「数値」
が仮想化の産物だって意識がないのだろう。
だから<数値>を「あえて」バイナリで表現することが馬鹿げたことに思える。
「あえて」2進数で表現したい時ってのはメモリ空間上にマップされた
ペリフェラルのレジスタビットとか、
>>606も書いているポートを操作したいときなんかだね。
こういうものは数字に「写像」してしまうとかえって仮想化の有り難味が消えてしまう。
ロングワード長のビット操作対象のレジスタってのは普通はありえん。
仮にあっても、
>>611のAA見たいにバイナリ32桁をずらずら書くなんてせず、
プリプロセッサつかって1バイトごと書く。
>>612 アセンブラなんかでは、
B1010$0101
みたいに区切り文字を任意に入れられることが多いと思う。
gcc3.2だけど、ケンシロウ進数を使えるようにするパッチを書いたよ
ポイントは全角ひらがなと全角カタカナに対応したところ
ないよりあった方が便利じゃん。そこまで必死に否定するのはなぜ?
この手の議論では極端に走りがちだが、適材適所でしょ。
まあ実際には無いから使わないわけだが。処理系の拡張であっても使
わないと思う。でもHDLなら使う。32Bitでも。
ケンシロウ進数をHDLにも対応してください。
8bitより長い数値を二進数で書く気にはなれない。
分かち書きできるんなら16bit位までなら使ってみたいな。
マニュアル見ながらbit位置を直書きするときなんかに便利だと思う。
01ずらずら書いて後で16進に変換するのが面倒。
だってさ、マイコンの仕様書には、タイマーのイネーブルとかオーバーフローとかのビット説明が
7 6 5 4 3 2 1 0
TMR0 TMR1 T0OV T1OV T0EN T1EN X X
とかかいてあるわけじゃん。だったら例えばTMR1とT1ENをマスクしたい!と思ったときに
ボクは10111011 と一度メモに書いてから0xBBって改めてコーディングしていたわけだが、
このスレの皆様は上の様な場合に、『2進より先』に16進の0xBBっていうのが閃くわけですか。そりゃすごいや。
あ。失礼
あたあああたああ って書かないとわからない人もいるんでしたっけか?
こう書くとまた「ぷっ。ランレングス圧縮ケンシロウ記法を知らないのかっ!」っていうわけわからんヒトが出てくるからツーチャンネルはいやなんdせうよえs。
>>625 普通、defineして、~(TMR1|T1EN)とかしないか?
>>627 結局TMR1をdefineするのに
#define TMR1 0b01000000
って書いたほうがいいか
#define TMR1 0x40
って書いたほうがいいか
って事になりませんか?
無論、0bの使えない処理系でも
#define B0100_0000 0x40
って書くのは、ここ西九条でも大流行中の兆しです。
>>628 #define 0b01000000 0x40
って書いちゃったほうがよくない?できるかしらんけど。
#define あたたたたたた 0x40
でもいいけど
俺なんかは
#define HOGE 0x20 /* 0010 0000 */
とか書くよ。
回路図の配線と見比べるときとかはこっちのほうがわかりやすい。
配線の関係でビット位置変更とか良くあるから
2進表記があると便利だろうなとよく思う。
0b0001001000110100 と書かれるより 0x1234 と書かれた方が
読み間違いが少ないな。
2進数と16進数の脳内変換が瞬時にできれば
どちらか一方を書かれても他方を連想できるので
どちらか一方だけでもいいんだけど
長い2進数表記は読み書きで数え間違いが起きやすいので
慎重に読み書きしなきゃならなくなってその無駄が嫌。
>>630 > #define HOGE 0x20 /* 0010 0000 */
0x20 を見た瞬間すぐに 0010 0000 を連想できるはずだから
そういうコメントは無駄だし邪魔。
コメントとコードの差違があるとバグが発見されにくいし
コメントがデバグの邪魔をするのは昔からよく起きてること。
連想できない人は鍛えるべきであって
過剰な甘やかしでそのチャンスを奪うので良くない。
自動車のブレーキペダルに「ブレーキ」ってラベル貼ってるようなもので
そりゃブレーキがどこか知らない人にとっては便利なラベルかもしれないが
そもそもそんな説明書きがないと分からない人がブレーキペダルを
操作しようとしてること自体おかしい。
#define ほ ((((((((0
#define あ <<1)+1
#define た <<1)
int main(){int i=ほ た あ あ あ た た あ た;/*0x072*/printf("%x\n",i);return 0;}
#define ほ ((((((((0L
#define あ <<1)+1
#define た <<1)
#define ー +
#define たーー! /**/
int main() {
unsigned long i = ほ ー ほ ー ほ ー ほ あ
あ た あ あ あ あ た あ た あ た あ あ た
あ あ た あ あ あ あ あ た あ た あ た あ
あ あ あ たーー!; /*0xdeadbeaf*/
printf("%lx\n",i); /* 牛はもうすでに死んでいる */
return 0; /* あた! */
}
#define げ ((((((((0L
#define あ <<1)+1
#define う <<1)+1
#define ー <<1)
#define ぼ +
#define ぬるぽ /**/
#define もうだめだ! /**/
int main() {
unsigned long i = げ ぼ げ ぼ げ ぼ げ
う あ ー う あ う あ ー あ ー あ ー あ う ー
あ う ー あ う あ う う ー あ ー う ー ぬるぽ
う あ う あ もうだめだ!; /*0xdeadbeaf*/
printf("%lx\n",i); /* 牛と一緒に俺も */
return 0; /* ぎゃー! やっぱ16進数の方が分かりやすい! */
}
635 :
デフォルトの名無しさん:04/09/25 19:49:01
ケンシロウ進数が一番分かりやすいですな
636 :
デフォルトの名無しさん:04/09/25 22:42:36
結局0bっていうのが通る処理系はマイナーなんですね?
GCCは通るみたいですが、あと通るのはナニ?
> > #define HOGE 0x20 /* 0010 0000 */
> 0x20 を見た瞬間すぐに 0010 0000 を連想できるはずだから
> そういうコメントは無駄だし邪魔。
そういう人がうらやましい。
おれは線を数えながら16進<->2進変換するのは骨が折れる。
> コメントとコードの差違があるとバグが発見されにくいし
> コメントがデバグの邪魔をするのは昔からよく起きてること。
だから処理系に2進表現が欲しい
>>638 結局は経験数なんだよね…
長い間組込みとか制御とかやっていると、同じようなシーンに遭遇するから
自然と覚えてしまう。。
>>638 16パターンくらい覚えろ
今日は
0x7 0111
0xA 1010
この2つ覚えろ。覚えるまで寝るな。
>>638 昔は、同じように思ったけど
いまは、16進が自然に出てくる
車のナンバー見て、なんの苦もなく2進が浮かぶよ
まだ10進−16進はでないけどね
>>640 そんなん二十年前に覚えてるってば。
テスターを線に当てながら、
「0はH、1はL、2はL、3はH…」とかやりながらソース見たときぱっとわかるかってこと。
そりゃもう頭が退化してるな
うん、そうかも。
恥ずかしながら、よくBとDで0の場所間違うし…
けど、一度0と1を頭の中で並べないと16進変換できないから面倒なんだよな。
>>640 おまえ、全然わかってないな。
タイマーの制御レジスタみたいに、元がビット列で表されているモノは、そのまま2進数で表せるなら、2進数のままの方が自然だという話だ。
それをいかに早く脳内変換できるか、なんて威張っているのは「変換」という言葉を使った時点で負けなんだよ、負け負け。
なぜなら変換する必要がないからだ。16進数に直す必然性なんか全然無い。
それならお前は、1から100までのループをするときに
for (int i=1;i<=0x64;i++){
って書くのかよ(ぷげあ)
100回回したかったら
for (int i=1;i<=10;i++){
って書くだろうが。
元が2進なら2進。10進なら10進。16進なら16進で書けるなら書けということだ。
つっか、2進表記が出来ないアセンブラなんて無いだろ?必要だからあるんだ。
組み込みに使うCで2進表記の出来ないCなんて無いだろ? 必要だからあるんだ。
組み込み言語だったら、BASICだって2進数使える炉
>>645 いちお、コードを脳内変換して読みました。
648 :
デフォルトの名無しさん:04/09/26 03:33:15
>>588 > 状態遷移表を使ってる人っている?
> あとそれをサポートするCASEツールを使っている人とか。
状態遷移表で表現できるのって、入力と内部状態の点数がそれほど多くない場合だけでしょ?
何点くらいまでの入力と内部状態を扱ってる?
649 :
デフォルトの名無しさん:04/09/26 04:02:02
>>648 >状態遷移表を使ってる人
サブルーチンみたいに
理解しやすいレベルまで入力と状態をまとめるのだよ
650 :
デフォルトの名無しさん:04/09/26 04:24:15
about:blank
これがエクスフローラ開くとどうしても最初に立ち上がってしまう
これって治せるのかな?
こんなとこにまでマルチポストすんじゃねえ!ハゲ
>100回回したかったら
>for (int i=1;i<=10;i++){
>
>って書くだろうが。
あ、出た・・・・・・ ロン
>>650 blazefind にいって、blazefindツールバーをインストロロールすれば解決するよ。
>>637 そのgccは改造されている。
gccの拡張仕様で0b対応という動きは昔からあるようだが、
何故かいまだに採用されないらしい。
>>655 そか。GCCだったら0bが使えるってわけじゃないんですね。
組み込み用のGCC-H8とかだけなんかな?
どうでもいいよ、そんな事。
>>656 (OДO)ψ <そのgccは改造済みだったんだよ!
gccか・・・展開効率悪くないですか?
純正メーカー製 買ってくらさいよう・・・・
_, ,_
(`Д´ ∩ < ヤダヤダ、gccなんてヤダー!
⊂ (
ヽ∩ つ ジタバタ
>>659 高卒の製造課上がりのゴマスリ野郎が技術部長をやっている、うちの会社ではタダより有難いものはございません。アリガタヤアリガタヤ。
どうせデバッグはgdbですよ
gdbこそ、真のデバッガー。
何故、雑誌「Interface」にはCDROMが付かないのだろうか>49出版社よ。
ソースが載ってた場合、手打で入力ですか。そうですか。
>>659 gccの展開効率が悪いって言ってる奴は、
Optionの指定が足りてない。
俺は
>>660が何を言わんとしてるのかよくわからん。
>>663 なんでInterfaceのサイトからダウンロードしないの?
>>666 あ、サイトですか。
っていうか、いつも全てのソースを載せているんだっけ?
40ページにも及ぶダンプを手入力していた昔を振り返れば
たかが数ページのソースなどたやすいものよ
>>664 どんなOption指定してますか?
これ制御系でgcc使ってるみなさんに聞いてみたいな。
面倒だから-O2で終了
人間が最適化した方が気が楽
エレベータがあるのに階段で行った方が気が楽だ、と言っているようなもの。
そしてその人はエレベータのボタンの押しかたが解からないんだって。
>>671 何階上がるかにもよると思うけど
それよりもたまには歩いて登った方が健康にいいYo
>>638 16進が簡単にマスター出来ると思ってるのが間違いだ。
お前は小学校の時何を習った?九九だろ?九九をやり、四則演算を浴びるほどやったはずだ。
だからお前は10進数をすんなり使いこなせてるんだ。
16進を極めたいのならまずFFをやれ。ファイナルファンタジーじゃないぞ。
1 2 3 4 5 6 7 8 9 A B C D E F
1 1 2 3
2 2 4 6
3 3 6 9
4 4 8 C
5 5 A F
6 6 C 12
7 7 E 15
8 8 10 18
9 9 12 1B
A A 14 1E
B B 16 21
C C 18 24
D D 1A 27
E E 1C 2A
F F 1E 2D
4の位からはお前が作れ。そして暗唱しろ。毎日だ。1ヶ月かけてもいい。ゆっくりでいい。
あとは・・・分かるな?
>>673 >16進を極めたいのならまずFFをやれ。ファイナルファンタジーじゃないぞ。
不覚にもワロテしまった。
私はファイナルファンタジーかと思って突っ込もうかと思ったけれど
先手を打たれた
インド人は22X20の九九を覚えているというから
FFも余裕なんだろう。
いーいーがしーじゅうよん
いーえふがでぃーじゅうに
>>678 いーいーがしーじゅうろくよん
いーえふがでぃーじゅうろくに
じゃ?
おまえらここをネタスレにするつもりかw
FFに慣れたら、次はVV(32進数)がいい。
そして最終的にはxx(60進数、1〜9、A〜Z、a〜x)を目指して欲しい。
60進数のメリットは時計だ。
何と分の単位が必要なくなるんだ。いきなり1時7u秒とかが使える。
これは便利すぎる。
ネタにマジレスかっこいいわけですが、例えば、0xceに、1のビットがいくつあるか、また、bit6とbit3がが立ってるか寝てるかを即座に答えられるヤツはエライと思います。
だから二進でかけるならかけたほうがいいです。っていうか、アセンブラだったら書けるんだからCで書けないほうが元々不自然。
論理演算するときは2進表記のほうがらくだな〜おれは
>>682 ビット数くらい即答だろ?
0-0 8-1
1-1 9-2
2-1 a-2
3-2 b-3
4-1 c-2
5-2 d-3
6-2 e-3
7-3 f-4
これ覚えるだけじゃん。規則性はあるし、使っていれば嫌でも覚える。
いつまでつまらない話題でレスするつもりだ
16進は割と直感で分かるが、8進は悩まんか?
8進数は使用頻度が低い
>>687 そりゃ、自分じゃ書かんが
LAPBの古いコードをメンテしてるとき
テーブルが8進で書かれてて泣きたくなった
>>688 エディターにコピペしてちょちょいと書き直すべし
16進数に対する数値的感覚が養われてないからだよ。
7*Eを即答出来る奴いないだろ?
それどころか8*7を16進数で"数秒で"即答出来る奴もいないだろ。
まじでFFやっとけ。これ結構便利だぞ。
2*8=10とかの場合は、"にはちいちぜろ"と読むようにすれば、九九とも被らないしな。
2進数変換はまた違う話になるが。
> それどころか8*7を16進数で"数秒で"即答出来る奴もいないだろ。
数秒かけて答えられるのか、それとも即答できるのかの違いがありそうだが、
それを数秒で答えられないのはまずい。7を左3シフトするだけだから。
> 7*Eを即答出来る奴いないだろ?
これも類似問題。
0x0e*(8-1)だから
0x0e=0b1110を左3シフトして
0b1110000。
そこから0x0e=0x1110を引いて
0b1100010=0x62。
こういう16進数2進数ソロバンが脳内で動いて数秒以内に答えを出すのが普通。
できないならこの業界に向いてない。
> まじでFFやっとけ。これ結構便利だぞ。
これ正解。数秒かけて脳内ソロバン動かすより速くて正確。
DQよりFFの方が勉強になる。
692 :
デフォルトの名無しさん:04/09/29 01:14:35
いーびーがきゅーえー
いーしーがえーはち
いーでぃーがびーろく
いーてぃーがかむほーむ
えふしーがびーよん
えふでぃーがしーさん
えふいーがでぃーに
えふえふがはつばい
おまいらちゃんとしごとしろ
>>691 意味無いことにアタマ使うな。
意味無いことがスキなら、おまえらCもアセンブラも使わず、機械語(死語)で直接書け。
FFはマジで便利だな
ケンシロウ進数の次に便利だ
>>628 #define TMR1 (1<<6)
俺はこんな調子だなー。
でもワード幅が増えたとき (1<<18) とか (1L<<31) なんて書いて失敗したり。
(1L<<18) (1UL<<31) じゃないとシフトアウトして…
>>694 人間は全員が知能指数同じではないので。
算盤の名人なんか数桁の掛算を悩まず即答するし。
694にとって難しいことでも
他の人にとって簡単なことも世の中にはある
>>697 そんなに0b記述が必要ない って言い張るのなら、
googleで
0b01 + 0b1101 =
が計算できるのを、どう言い訳するんだ?
nibbleマクロとかそれを使ったnibble2,nibble4マクロなんかを使っています。
必要ないなんて主張している奴はいなくて、
今までなしでやってきたしなくてもなんとかなるんだから
余計な仕様増やすなと思ってるだけかも。
#つーか私はそうだが。
ビットに意味付けが欲しいなら、ビットフィールドでやればいいし
そうでなければ、16進で事は足りてる。
ま、あればあったで別にかまわないけど。
あった方が便利だから付け加えて欲しい。
その前に、どうしようもないコンパイラをまともにしてくれるほうが先だが>そのへん
実は、コンパイラにさえ、さほど不満がないオレって..........orz
昔の日立のには確かに不具合があったけど。。
ご迷惑をおかけします。
でもバグのないコンパイラを作るのは本当に難しい…。
2進サポートくらいなら、そんなにバグはでないと思いますが。
他スレから誘導されたのでこちらで質問させて下さい。
Linuxでシリアル通信を行うプログラムを作成しているのですが、どうしても
データの取りこぼしが起こってしまいます。いろいろ調べた結果データ欠損
の対策として
・low_latencyフラグを立てる
・受信トリガレベルを1バイトに設定し1バイト受信毎に割込みを発生させる
という方法がある事が分かったのですが、肝心のプログラムへの実装方法が
全く分からず困っています。どのように実装すればいいのでしょうか?
ちなみに通信チップは16550Aです。よろしく御願いします。
>>704 2進をサポートしたら、0xb0が0になっちまってごめん。テヘ。 ってな記述が苺リナックスに描いてなかったっけ?
>>706 当社マイコンボードに付属しているgccの2進数パッチにバグがありました。
gcc-3.4.0+2進パッチが含まれているCDが対象で、以前のgcc-2.95.xは今回の対象ではありません。
gccのバージョンはh8300-hms-gcc -vで確認できます。2進パッチの問題で、0xb0,0xb1を記述すると0になってしまうという単純なミスでした。
申し訳ありませんが、こちらをお使いくださいますようお願いいたします。
>0xb0,0xb1を記述すると0になってしまうという
これは、さすがに困るが、、、
いままでほとんどコンパイラのバグにあったことがない。
それ以前に自分のプログラムに問題がある(w
というか、初めて使った日立のコンパイラがあまりおりこうでなかったので
計算式を1行でやらせないとか、なるべく複雑なことをしないようにしている
最適化もしてないし、速度を要求するところはASMで書くし
(それで済むような仕事であったりして)
ハードから、なるべく余裕のあるようにしてごまかしてる
バグなのか仕様なのかわかんないけど
SH系のコンパイラで以下のような現象があった。
sub(123, 456.789);
//関数subを整数123、実数456.789を引数にして呼び出す
//パターン1
sub(int a, float b){
printf("a=%d,b=%f\n", a, b);
}
実行結果「a=123,b=0.0」
//パターン2
sub(a, b)
int a;
float b;
{
printf("a=%d,b=%f\n", a, b);
}
実行結果「a=123,b=456.789」
>>709 それはANSIの仕様だね。
sub()の呼び出しの前にプロトタイプ宣言すれば、逆にパターン1が正しい結果となるはず。
二重ループにif文くらいのソースで最適化とデバッグオプションつけると
デバッグ情報が無効になるコンパイラには難儀した。
最適化オプション抜いたやつが吐き出したコードをアセンブラレベルで手直ししたら
実行時間が1/7になったのには脱力。
Cは便利なんだけど、(BYTE)dat とか、のデータ長拡張の時のアレとか
割り込みのフラグが最適化ではじかれないようにvolatileつけるとか、
余計な事も覚えなきゃならんのよな。
>>705,
>>713 >受信トリガレベルを1バイトに設定し1バイト受信毎に割込みを発生させる
ioctl使えばいいじゃん。
>>705 たかが(失礼)シリアル通信ぐらいで、そんなにシビアなタイミングが
必要になるのかなあ? 普通に/dev/ttyS?経由じゃダメ?
>>705 だからioctlで全て解決するだろーが。
まず、初期化ルーチン内でioctlを使用して初期化して、
main loopでselectでcheckして、データ来たら1byte単位でreadすると。
お仕事がんばれよ。
>>705
ハードウェアフローには出来んのか?
>>713 情報有難うございます。これでlow_latencyフラグを立てる事が出来そうです。
>>715 LinuxシリアルHowTOなどを参考にして普通に/dev/tty経由で送受信してるのですが
数回に一度ぐらいの割合でデータの欠落が起こってしまいます。
>>717 ハードウェアフロー制御を行わせるためにtermios構造体のc_cflagにCRTSCTSを
指定しています。後はハードウェアが勝手にフロー制御を行ってくれると解釈して
いるのですがプログラム中で明示的にRTS信号のON・OFFを行う必要があるのでしょうか?
FIFOの割り込みトリガレベルの調整方法は制御レジスタをいじる方法をネット上で見つけたので
試してみる事にします。
>>718 ハードウェアは自動的にフロー制御はしないけど、
ドライバが制御してくれるはず。
相手が何か知らんがCTS/RTSを見てないとかは?
CTS-RTSはとにかくつなぐ
なにかあったらとにかくつなぐ
先生! メーカー純正ケーブルがCTS-RTS繋がってません。
クロス仕様で専用コネクタなんで手も出せません。
#いや、マジであったんですよ_/ ̄|○
↑ 自分でつなげばいーじゃん?
>>722 モールドしてあるからつなげないんじゃないのかな
というか、それ以前に、
メーカー純正ケーブルなのに、そうなっているのが信じられんし、
専用コネクタなんで手も出せない。
って、そのままの意味なんじゃないでしょうか?
テスター当てて結線図を書いたら
ケーブルを真ん中で切断ですよ
>721の実際に私が遭遇したケースでは、客先(ソフト部隊)経由でハード部隊に報告、
ケーブルの仕様変更ということになって作り直しに半月かかった。
#実はその間に慌ててプログラムの割り込み周りのバグを直したのは内緒。
>>705 相手もPCなのか?
PCじゃなかったら相手が半二重だったりすることがあるぞ
>>726 客にバレなきゃいいんだよ。どうせ客なんてセッティング中は見に来ないだろ?
>>729 原発とか、そういう作り方でもいいですか?許してくれますか?
>>730 まず切ることを報告し、切った後問題を修復し、修復後チェックし、問題ないことをまた報告
原発だろうとなんだろうと同じだろ
>>732 「報告」と「チェック」がどの程度のことかわかりませんが
原発じゃないにしても、私のクライアントだと
通常の基準で言えば、不合格になる可能性大です。
734 :
デフォルトの名無しさん:04/10/03 21:10:34
うちの顧客は自動車メーカー。
めちゃくちゃ細かい。
そんなところまでチェックするなら、自分で書けよと言いたい。
735 :
デフォルトの名無しさん:04/10/03 21:17:11
最近多品種少量生産だから、品種替えなんかが多くてソフトが面倒くさい。
737 :
デフォルトの名無しさん:04/10/04 00:21:19
>>732 もしかして関電系だったりして(笑
通常、その工事手順をふむよりきちんとしたものを製作したほうが早いです。
>>705 シリアル通信関係のテストで問題が起きた時は、通信モニタがあれば9割方解決出来る。
ってことで通信モニタ買って来い。
>>739 技術評論社のCCT-98IIでよろしいでしょうか?
>>740 モニタっていったら「みえちゃん」でしょ(w
>>741 ○ッツの回し者キターッ!
その節はお世話になりました orz
>>742 回し者じゃないけど。ほんと、元をとりました。これがないと始まらない
電池がダメになったので、一度はメーカで交換、
2度目は、自分で単三のNi−MH電池に交換しました。
古いので19200までしか見れません、デバッグ中と実稼動でbpsを変えてごまかしてきました
そろそろ新しいのにしないと。。。
セキスイのも悪くないけど、みえちゃんは"惜しげない"感じがイイ
744 :
デフォルトの名無しさん:04/10/06 07:30:25
開発環境のeclipseってどうよ
745 :
デフォルトの名無しさん:04/10/06 12:44:05
>>744 javaの環境のこと?
あまり組み込みと関係ないような希ガス
eclipseはいいね。
ただ起動が糞長いのをなんとかしてくれ。
つっても学生の頃の卒業研究以来使ってないけど。
>>745 別にeclipseはjavaに限った環境じゃないだろ。
747 :
デフォルトの名無しさん:04/10/06 23:18:48
>>746 しかしJAVAのイメージが強いのも事実。
748 :
デフォルトの名無しさん:04/10/07 09:15:40
そんなことない、君の視野が狭いだけ。
749 :
デフォルトの名無しさん:04/10/07 09:32:07
広い視野で見ると、やっぱり世間的にはJavaのイメージが強いと思う。
750 :
デフォルトの名無しさん:04/10/07 12:53:00
本屋に行けば、Javaばかりだよ
もっとも組み込みの本自体少ないけど
eclipseのCDTは超ショボいので結局Java目的にしか使えない。
徐々に良くなってはいるよ >CDT
C++でecripseつかうくらいならVS使うよ
でもemacs一つで十分だったりもする
755 :
デフォルトの名無しさん:04/10/07 19:44:45
でも、UNIX環境じゃなかったりする
756 :
質問ちゃん:04/10/07 20:40:56
タブプラウザってありますよね。
あれを起動してから複数のhtmlファイルを窓上に
ドラッグすれば一気に読み込めますよね。
その複数のhtmlファイルがCD-R内のパスの定まった
フォルダ内においてあるとして
CDいれるとオートランで自動的に
タブプラウザでそのフォルダ内のhtmlファイルを全て読み込んで
立ち上がるにはどうすればよいのでしょうか?
757 :
質問ちゃん:04/10/07 20:43:56
タブプラウザは自分ではつくれないので
できるだけ既存のものがいいです。
機能としてはIEコンポーネント本体とタブと最大化機能さえあれば十分なのですが・・
759 :
質問ちゃん:04/10/07 20:46:26
スレ違いだったら誘導していただけるとありがたいです
断る
何故このスレで質問しようと思ったのかを聞きたいな
制御系なら俺に聞いてもいいぜ
~~~~~~~~~~~~~~~~~~~~ここしか見てなかった?
762 :
デフォルトの名無しさん:04/10/07 23:14:54
組み込みJAVAはこれからどうなりますかね。
メーカーは変則的ガベージコレクションでリアルタイム性を確保しようとがんばっていますが。
携帯&JavaでFFやドラクエできる時代だからなー
GUI必要な場所ならtronのみやCEよりはラクそうだな
見やすい状態遷移図の書き方教えてくれ……
>>763 x 携帯&JavaでFFやドラクエできる時代だからなー
○「すごいな。携帯でFFやドラクエが出来る時代なのか。 さすが21世紀はすげえや。透明チューブの中をエアカーが疾走するのはまだか?」
768 :
デフォルトの名無しさん:04/10/09 12:57:45
>>767 コピペなら常に馬鹿に該当しないと思い込んでる馬鹿
必死な人がいる
ひねくれた人がいる
真偽値 ってTRUEとFALSEだよね
トライステートつーかいわゆるZ状態を扱うときは
boolではなく 何で表現すればいいのかな
n>0, n==0, n<0 あたりでいいかな?
みんなはどうしてる?
773 :
デフォルトの名無しさん:04/10/11 15:03:32
いちおう
n>0 真(TRUE)
n==0 不明(z)
n<0 偽(FALSE)
みたいな感じ。これなら if(n)で不明かそうじゃないかわかるし。
あと、TRUE,FALSEに相当する定義はなにがいいの?
Zとtrue/false かな つまり1bitZかそうでないかを追加してそっち優先にすると
Zってハイインピーダンスのことじゃなかったの?
Zはハイインピーダンスだよ。普通は。
不明はXかUだろ。
>>772 わたしだったら
TRUE/FALSEを使うと BOOLと混同するから
英語として正しいかどうかはわからないけど
VAL_HIGHER / VAL_EVEN / VAL_LOWER とか定義して
少なくとも TRUE/FALSE は使わない
プルアップかプルダウンしてれば不明にはならないから何も問題はない。と
>>774 2ビット使って
00 多分 偽
01 多分 真
10 間違いなく 偽
11 間違いなく 真
こんな感じ?
781 :
デフォルトの名無しさん:04/10/11 22:17:53
ミツトヨのリニアゲージからのデータを取り込みたいのですがデジマチック出力しかありません
出力信号はDATA(測定データ出力端子)とCK(同期クロック)とRD(データレディ)があるのですが
どのようにやり取りしていいのかさっぱり・・・
参考になりそうな書籍やサイトがありましたら教えて下さい
これってシリアル通信関係を勉強すればどうにかなりますか?
スレ違いなら申し訳ありません
782 :
デフォルトの名無しさん:04/10/11 22:28:59
>>781 ミツトヨには聞いてみたの?
ミッちゃんの俺様フォーマットだから少なくとも本はないと思う。
たぶんデータ吐き出すタイミングでRDがアクティブになるんで
それに答えてREQをアクティブにしてやるとデータ送信が開始されるって
感じだと思う。
>>782 どうもです
一応聞いたんですが資料を1枚くれただけでした・・・
詳しい人ならそれだけでもわかるのかも知れませんが。
もうちょっと聞いてみます
>>783 どうもです
この手のでお茶を濁そうとも思ったんですが、アクチュエータ付きのリニアゲージを使ってて、ボタンなどを押さずに任意の位置で測定しないといけないのでダメっぽいのです・・・
785 :
デフォルトの名無しさん:04/10/12 08:30:30
VHDLには弱いHighとかもあって、
信号状態は9種類用意されていたと思う
でも、きちんとプルアップ/ダウンされていれば、使い道ない気がする
私H/L/出力オフでしか考えてなかった
787 :
デフォルトの名無しさん:04/10/13 00:46:29
ローアクティブとハイアクティブとあるからにゃ
気をつけないとにゃ
788 :
375:04/10/15 11:16:35
制御系と組み込み系は、一般に給与はどうなんですか?
組み込みは薄給だと聴いたことがあるんですが
薄給す
790 :
デフォルトの名無しさん:04/10/15 11:23:19
お金の話しですいません。お金を儲けたいと思ったので。
もし場違いな質問になってしまってたら、どうぞスルーして下さい
791 :
デフォルトの名無しさん:04/10/15 11:25:36
>>789さん ほんとすか。。正直ちょっと残念です。レスありがとうございます
>>791 我が社では業務系と制御系で給与体系に差はありません。
#尤も、業務系のほうが金になるので有利になるのは事実。
>>792 *できる*制御系の奴であれば、替えが効かないので差があってもいいと思うのだが。
どちらかと言うと業務系の方が、替えの効く奴が多いと思う。
*できる*人材不足はどこもいっしょと思うなぁ
こんだけやってもギャラおんなじどころか、わりにあわな、、、ここはム板だっけ
制御系な奴の価値が低いのが問題なんだよ。
開発サイクルから言うと業務系の方が短いからかな。
やってる内容は濃い場合が多いんだけど>制御系
>781
リニアゲージの入力端子と、リニアゲージからの入力端子の種類が書いてないけど?
797 :
デフォルトの名無しさん:04/10/15 15:34:13
>>792氏 そうですか。レスありがとうございます。とりあえず僕は、今週末の基情受けてきます。またきます
金に関しては、医療関係の業務系は特にいいですね、
ヒマだし、金はいいし、納品先は白衣だし(w
制御系は、好きじゃないとやってられない。
白 衣 が で す かw
中身は黒だ
白衣系は、好きじゃないとやってられない。
ホールピペットが恐い。
化学よくしらないけれど。
804 :
デフォルトの名無しさん:04/10/17 01:56:41
m16使ってるんですが、16bitCPUは初めてでよくわからないことだらけです。
RAM領域がFFFF超えたらどうなるんでしょう・・・?
アドレッシングは出来るみたいですけど
宣言とかがFFFFまたがっても大丈夫なんでしょうか?
アセンブラの命令だとストリング転送は
32ビットアドレッシングがサポートされてなくて
領域の初期化ができねぇ・・・・。
>>804 今マニュアルをダウンロードして見たら、データバスが16/8bitで、アドレスバスは24bitのようですけど
>806
M16は、16ビット超のアドレスをアクセスするのは、別のアドレッシングモードを
使う必要がある。 C言語だと、宣言に far を使う必要があるんですよ。
使い方は、よく知らないんで申し訳ない。OAKSの16-MINIっていうM16CTinyを
使ったキットで遊びはじめたばかりなんでまだ良く分かっていない。
Tinyの場合、16ビット超にはRAMはないんで、初期化データの宣言とか、そのデータを
使う変数とかが、宣言の対象になると思う。
マイナーなキットだけど使いやすい。5000円くらいでシリアルケーブル以外、電源も
付いている。開発環境も、最適化ができないだけで、ソースデバッギングもできる。
H8みたいに色々開発環境があるよりは、使えるのが1つあるほうが分かりやすい。
おいおい、開発環境は純正を買ってくれないとわが社の利益(ry
809 :
デフォルトの名無しさん:04/10/17 19:11:03
>>807 farとか86みたいだな
セグメントになってるの?
なんだか使いにくそう
アドレッシングモードだって言ってるじゃん。。
しかしM16ってウルトラマンの巣かスタローンが脇に抱えて乱射しそうな名前だねえ。
M16C
M16Cは素直なイイ子だよ。
813 :
デフォルトの名無しさん:04/10/18 23:07:10
M16について質問したものです。
farに関して勘違いしてました。
386みたいにセグメントからのオフセットでアドレッシングしているのでは
なくてfarかnearかでマッピング位置が決まるみたいですね・・・・。
しかしストリング転送命令はnearしかサポートしていないようで
far宣言の初期化に使うこと自体が間違いのようでした。
>813
farかnearかでマッピング位置が決まるんじゃないよ。関数はfar とか
ディフォールトの設定がある。
そもそも、C言語を使うのなら スタートアップのncrt0.a30 の中でfar領域も初期化
されているはず。手元の NC30 V.5.10のマニュアルだと、
2.2 スタートアッププログラムの準備のJKがその処理のはず。
自分は M16CTinyだったんで、far領域にはRAMがないんでやったことはないけど。
M16CTinyの場合、そこはコメントにするからね。
815 :
デフォルトの名無しさん:04/10/19 08:48:59
スタートアップはアセンブラで自作するものなのですか?
アドレスなんかを設定すると、
コンパイラが自動的に作ってくれるのしか使ったことないです。
817 :
デフォルトの名無しさん:04/10/19 14:25:08
>>815 不要な設定や初期化を省きたいときは、汗しかないね
でも、一度経験する分には構わないけど、
プロセッサが変わったりするたびに作り直すのは
正直めんどい
818 :
デフォルトの名無しさん:04/10/19 17:47:29
スタートアップを作れるかどうかが一流と二流の境目
819 :
デフォルトの名無しさん:04/10/19 21:51:26
マイコンチップ使う程度の規模のハードの初期化処理なんて
そんなたいしたもんでもないと思うが。
自分で言うのもなんだけど、俺は二流だけどそんなの普通に書けるよ。
ていうか、「スタートアップ」って言葉の使い方変じゃないか?
820 :
デフォルトの名無しさん:04/10/19 22:08:59
OSがないと生きていけない私は二流ですか
vector.s
por_vector:
jmp _startup
main.c
int main()
{
asm("_startup:");
// initiazize...
822 :
デフォルトの名無しさん:04/10/19 22:40:33
ワンチップマイコンのスタートアップなんて、大概、リセット直後のプログラムメモリ0番地スタート、これだけだろ。
ROM、RAMがペリフェラルで分かれてる時、ROM上のプログラムで、不揮発メモリ・フラッシュメモリ・各種媒体から読み込んでRAM上に展開させる必要が出てくる。
更に、その前に、デバイスがあるかないかの判別も居る。
823 :
デフォルトの名無しさん:04/10/19 22:51:24
というか、面倒なのは、可変のプログラムを載せる為のプログラム(モニタ・デバッガ)を最初に載せることだろう、
JTAG使うのもあるし、PSEN(ProgramStoreENable)とかいう書き込みピンをアクティブにして書き込む場合もあるけど、
例えば、モニタには、最低限、シリアル経由等で、プログラムを吸い込んで、基板上の不揮発メモリ等に載せてやり、シリアル経由でコマンド(他に同じ2進コードが無い一意のコード)を送って実行させる機能が無ければいけない。
(この辺は、フラッシュや各種ストレージなんかから読むなら、それから読んでRAMに展開させるモニタになるけど)
スタートアップのソースにブートローダーのコードは書いてないやオレ
つーかワンチップじゃねーかこれ外バスねーよ
825 :
デフォルトの名無しさん:04/10/20 01:14:08
モニタープログラムお手上げ
ブートローダー挫折
これでも組み込みやってます
世の中は
まぐれで動いている
いままで、やってきて思った事
「やらなかったことは、かならずツケとして帰ってくる」
ソフトもハードについても、
すべてに目が通せるわけではないのだけど
とにかく自分の関連はすべて目を通しておかないと
大抵の場合、最後の最後に、問題は目を通してなかったところから始まります
試験に関しても
大手メーカの現場担当の人は、このあたり徹底していて、すごいです。
ホントあたりまえなのだけど
通電する前に盤の接点のひとつひとつ最後まで丁寧に徹底的にチェックしますね
朝から晩まで、線番に頼らずにテスターなどでチェックしてるのをみるとホントに頭が下がります。
その昔、ボードの入力信号の取り込みのチェックに手を抜いて
32点の入力を31点まで値のチェックをして、まいいやあとOKなんて。。。
その最後の1点が不具合でパニクったことがあります(恥
そういう人がどうやって給料もらえる仕事できているのか理解できない_| ̄|○
Windowsのデバドラについての質問はここにしてもよいですか?
M1号に見られている気がします
833 :
デフォルトの名無しさん:04/10/20 22:31:54
>>822 ROMからの読み出しはアセンブラですよね?
Cで書けたらいいけど、Cで書いたらブート用のメモリに入らないです
>>830 Chipの設定なんかの思いっきりデバイス依存の話なら
相談に乗れる人間はいるだろうけど
大抵の組み込み屋はWinのAPIとしてどう見せなきゃいかんか?
なんてのは素人だぞ
自主開発したボードの叩き方でも
相談したいんでもなきゃお勧めしない
835 :
デフォルトの名無しさん:04/10/21 07:50:01
>>825 モニターなんか自作するくらいなら、ICE買え
WDTに引っ掛かったらモニターに落としてますが何か。
837 :
デフォルトの名無しさん:04/10/21 13:14:56
>>835 デバックモニターが貧乏臭いってことだよね
オレもそう思う
メーカー製の統合環境とICEしか使って無いし
モニタープログラム=プログラムを制御するプログラム。コンテキストスイッチングが
必要なので、ライトなOSみたいなもんだ。デバックモニターとはイコールじゃない
839 :
デフォルトの名無しさん:04/10/22 13:15:35
でもアイスって高くない?
うちみたいな貧乏な職場だと買えないな
一度きりの仕事ならレンタルだな
>>839 ICE使ったのは最初の1回だけだった。
nonOSだとまったくICE無しでやってます。
レンタルでも 20マソ/月だしね。
岩技が京都マイクロとコンピューテックスになって最後がソフィアの人
岩技・・・・・懐かしい
まぁ、モニタプログラムは、色々機能をつけなきゃならないから、
PCからシリアルでコード送って色々動かす機能とか、実行を途中で止めて、その時のレジスタ値見たりとか、
こういう機能があるから、同じ類で、プログラムを走らせる為のプログラムとしては、実製品のブートローダの方が簡単。
ブートローダは、デバイスがどれがついているか判別して、デバイスから、オペコード・オペランドともにただのデータとして読み込んでRAMに展開して、RAMに展開されたプログラムを読んでいってやればいい。
或いは、RAMをただのワークエリアとして使うなら、ブートローダの役目は、ただ単に、プログラムが入っている不揮発RAMの先頭から読み込ますだけ。
すなはち、プログラムメモリへの先頭番地へのGOTO命令ただ一つ、これだけよ、これだけ、奥さん。
845 :
デフォルトの名無しさん:04/10/22 22:20:34
>>844 ブート元がフラッシュだったり、ディスクだったり、ファイルシステムもどきだったりしたら、
けっこう凝ってこない?
そういうのも汗るわけ?
>845
それはすでにブートが走っている。
例えば、PCで起動ドライブの選択は拡張バイオスを認識し、これを動かす。
拡張BIOSを認識、起動させるのはBIOS。
従って、>845の意味するブートとは、ほとんどOSのカーネル。
で、>844はなにがいいたいんだ?
また分けわかんないのが沸いてるな
>843
岩崎技研のPROASM使ってる (C)1985古っ!
8.3ファイル名規則に目をつぶればwin2kのコンソールで動く
さすがに8インチ搭載ポータブルwは埃被ってるが
京都マイコンさんとソフィアさんしか知らないや
マイテックのNICE-Z80
ユニダックス DICE-6502
もう使ってません
ASCII入力を実数変換するのに、cの実数変換が重くて使えないので、小数点の上下を整数で
表現しようと思います。strtol()で整数部を変換した後区切りが'.'ならその後ろをatoi()とか。
有効桁数はそれぞれ16bitで十分な程度です。そこで相談は、小数部の表現なのですが、
何桁まである、と決まっていればいいのですが、.001だと整数変換すると1になって1/1000に
ならないし、.100となってたら100になって1/10にならないし・・・ 小数部をどういう表現で持てば
小数点付きの数をうまく扱えるでしょうか?
1.000 = 1000 / 1000
0.100 = 100 / 1000
0.001 = 1/1000
>>852 単に、小数点3桁なら1000倍した値としておけば?
3.027 = 3027 で扱うだけ
早朝からありがとうございます。 853,855のアイデアは「少数以下何桁と固定で」の考え方ですよね。
できるといいなあと思っているのは、xx.1でもxx.523でも扱える手法なんです。この2例を整数変換
すると1と523で、例えば1/1000単位と決めたらこれを100と523にする規則が考えつかないです。
857 :
デフォルトの名無しさん:04/10/23 07:16:03
( ´D`)<アイスは8段アイスがうまいのれす
>>856 その例なら、整数変換後10の(2-桁数)乗すればよろしい。
といっても、高々3桁しか入らないと言うのであれば、
static const int ratios[] = {0, 100, 10, 1};
int i = atoi(s) * ratios[strlen(s)];
とでもすればいい。
>>856 少数点以下何桁あったか見ればいいじゃないか。
あるいは、少数点以下に0を埋めてから処理すればいいじゃないか
ただ、俺たちは、普通は 自前で変換=頭から x*10+n を繰り返して処理するけどね
>>859 いや、「俺達」っていうけどあんたみたいな馬鹿他にはそうそういないから。
>>860 そうか。スマン。
Cでさえ滅多に使わん奴らのスレかと思ってたよ。
>>856 ちょっと意味がわかりません。。。鬱
小数点の取り扱いって、どうなっているかじゃなくて、どう取り扱うかって考えるものと思っていましたので
0.1 = 0.10 = 0.100 = 0.1000 じゃないのかな
>>856 要求される精度って最初から決まってはいないんですかね?
最初からその精度で取り扱えばいいように思うのですが
なんか変?
>360
>>852は自分のやりたいことが頭の中で整理できてないんんだろう。
少なくともそれを人に説明できる程度には。
まあ、本来は恐らく次のようなことを聞きたいのだろう。
-----------------------------------------------------------------------
小数点付の数値を表す文字列を「数値」(もっと扱いやすいデータ型)に
変換したいんだが
(1)「数値」はどのようなフォーマットが簡便か?
(2)文字列からその「数値」への変換はどのように行ったらいいか?
-----------------------------------------------------------------------
それでいま困っているのは、小数点で区切って小数点以下をatoiすると0.1(1)も.01(01)も.001(001)も
1になってしまう、どうしたもんか?って話なんだと思うよ。
>>852 こんな風にすると簡単じゃない?
まず、「数値」のフォーマットとしては実際の数値の10^n倍の値をLongで持つようにする。
たとえばn = 4なら、"123.4"は内部形式としてはLongで1234000、"12.34"なら
123400、"1.234"なら12340で表現するようにする。
で、この「数値」( = X)への変換方法としては、(1)元の文字列から小数点を取り除いた
文字列をLongに変換する。( = L) (2)元の文字列の小数点以下の文字数dを求める。
(2) X *= pow(10, 4-d)
番号付け間違えた、(3) X *= pow(10, 4-d) でした
そのやりかたが合理的だとは思えないがどうしてもそれでやりたければ
頭に1をつけてから atoi しろ、元へ戻すときはあたまの一文字を消せば桶
>>866 もうちょっとスマートにやりたければ補数にしとけ
>>864 うまく表現してくれてありがとう。そんなふうに言いたかったのです。
866は864の(3)のstepについてのうまいやり方ですよね?小数点以下が4桁までならatoi
5桁以上ならatolでいいですね。(3Mの8085でのアプリだから後者はまずありえません)
実際には表現桁数は決まっているのですが、後で有効桁数増やされたりしたときの為に
内部に保存する表現はなるべく桁数保っておきたいと思ったので相談させてもらいました。
勉強になりました。
8085でCって…
どこのやつかは知らないが標準ライブラリ使ってる限り
速度の向上は見込めない気がする
話が噛み合ってないと思われ。
8085なら、俺なら100進使うところだな。 余計な話だが。
確かに80系ならCでのサポートがない点を覗けば、BCD使うほうが楽だね。
80系で速度要求するならアセンブラつかえよ(w
たとえば、ペンチアムは80系って言っていいのか?
そういえば、例えば、CPUとっかえた時、手元に残ったP3とかP4でLEDを点滅させるのは出来るんか?とか。
>>875 そのへんのCPUなら、アドレスバスかデータバスあたりにぶら下げておけば点滅するん
じゃないかなあ。電圧が足らんかもしれないから適切につなぐように。
点滅は見えないでしょ・・・・・薄暗く光ってみえるかも
>>870 数学的には同じこと、って気がします。cで扱いやすい表現がどうか、って話かと。
>>874 ASM使っても乗算・除算の回数は変わらないとおもいます。cのlibはいちおう効率を考慮
して書かれているでしょうから。cを注意深く書けばASMとの違いは「callオーバーヘッドだけ」
にできます。
>>878 汎用にかかれたものと特定の用途に絞って書かれたものとではずいぶん違ってきますふつう
8085には掛算は無でしょ?だから、x=x*10+n を実行するには
10 = (2*2+1)*2
と分解するとか、そういう所からやるんが普通では?
なんで掛け算の話になってんだ?
>>897 8085のアーキテクチャ知らないと正確なことはいえないし、だから断定はできないけど
今話題になってる処理(Ascii => BCD, BCD => Binary)なら、確かに違いは
ないとはいえないがまあ無視できるレベルと予想するのが妥当でしょ。
オーバーヘッドなんてせいぜい引数をスタックで渡すことぐらいしかないと思う。
しかし8085って70年代の石でしょ確か。
こんなの使うシステムがまだ存在するの?8051と勘違いしてません?
>>882 甘いな。甘すぎだな。
引き数をレジスタ渡しするコンパイラもあれば、動けばいいというレベルで実装されたライブラリもある。
従って、一概には言えない。
おまけに、80系(8080、8085、Z80からの派生)のCPUは今世紀に入っても作られている。
>>882 元ネタは ”cの実数変換が重くて使えない” これです
まず、その添附ライブラリがどうやって変換してるのか調べた方が無駄が少ないんじゃね?
>>883 >動けばいいというレベルで実装されたライブラリもある。
なんか非現実的な想定って気がするけど。。
昔「プロのプログラマは人が作ったライブラリを信用しない」って小話(?)が
あったけど、これはもちろん他人に必要以上に懐疑的な奴に限って自信がない
三流の奴だってネタなんだけど、君もその類なんじゃないの?
>>884 だから
>>882で書いた「今話題になっている処理」の話になっているわけでしょ。
インデックスレジスタ少ないしレジスタ修飾貧弱なのにCで吐き出すコードが効率いいとは思えない
と昔に教え込まれた
>>886 元ネタへのcじゃ重いへの返事としてASMでやりなってこと
どんなにがんばってもプログラマーの技量が同じならcでASMより速いルーチンはかけないだろう?
へたれCプログラマがまともにASM書けると思うのか?
っていうかねえ、実数扱う処理なんてド素人に、曲がりなりにもプロが書いている
コードより効率がいいものがホイチョイト書けますかねえ。。
掛けるとしても、まずコンパイラの実数のフォーマット調べる必要があるわけで
これは案外大変な場合があると思うんだが。
Cだけで書いて早い処理がやりたいのか、そうじゃないのかハッキリしる
>>892 ハッキリしてるって。読解力ないなあ本当に。。
>886
配列・ポインタで使われるベースインデックスアドレス指定の話とか分かってるか?
具体的にアセンブラで言うとeb〜の話だ。
その使い方によっても速度は思いっきり変わる。
ポインタ使えば、速度は速くなるってことぐらい知ってるのであろう。
>883の甘いってのは、こういう基本的なアドレッシングモードの話が分かってるのかどうかということであろう。
追加だ。
アドレッシングモード・・・、やさしく言うと、
アドレス指定方式の話だ。
基本情報の試験にも出るぞ。
そこを分かっているかと問われているのだ。
はずかしいと思うべし。
>>891 ホチョイと書かなくてもいいんじゃねえの、一ヶ月くらいかかって書いてみればいいのよ
で、だめだったらあきらめて整数型のところへ降りてくればいい、そしたら一ヶ月の苦労が実って
整数型のルーチンがホイチョイとかけるようになっていると思われる
>>894 あのー、Ascii => BCD, BCD => Binってアセンブラで書いた経験あります?
こんな処理にディスプレースメント付のインダイレクトアクセスなんて
普通は使うまでもないんですが。
しかし、HNに顔文字使う人ってたいていヘタレなのはどうしてだろう。
本人は余裕かましてるつもりなのかもしれんが、
「余裕かましているふり」をしないではいられないことが傍目には
脆弱にみえることがどうしてわからないのかだろう。
8085と思ってない模様 <ε=( ̄。 ̄)yー~~
>897
>オーバーヘッドなんてせいぜい引数をスタックで渡すことぐらいしかないと思う。
こう書かれていたからだよ。
アドレッシングにスタック使うなんてx86はスタックマシンじゃあるまいし、無いはずだが。
この一行は、割込みでのスタック処理でのオーバーヘッドと読んだのだが?
>普通は使うまでもないんですが。
オーバーヘッドの話題だそうだからだ。
別に使う必要が無ければ、普通にCで書けば良いのではないのか。
>898
ん?8085・・・
>>900 8085なんだろ、8086ですらない
そんなもんでSoftwareFloatingPointなんて使えば
ライブラリの出来以前の問題で遅いだろうな
>>886 作った張本人が言ってるんだから間違いない。
実際、atoi()は空白を読み飛ばせない代物だった。
#どこのなんてコンパイラかは内緒。
あーそうだ、MS-DOS用時代のCコンパイラの(製品版の)バグもいろいろあったねぇ。
必要以上に懐疑的になる必要もないが、充分な検証もしないで過信もしない。
>>902 当時はバグをいかによけて使うかというのがプログラマーの腕に含まれていたからねえ
古きよき時代じゃッたよ・・・・え゛
今もだよ(泣
昔語りが出てくるとスレ止まるのなw
ずいぶん引っぱってくれてありがとう。CはLSIC80('85頃のVer)。LIBは逆ASMして調べました。
整数変換機能の中では*10はシフトと足し算でやってます。callは通常reg渡し<--引数3個を
越えると以降はスタック渡しだから3個までで済むように気をつけてます。sscanf/sprintfみたい
な「可変引数関数」は全部スタック渡しです。この調査の結果変換機能などの「下層」はASM化
する必要はないと判断しました。printf系では整数除算が使われるはずで、そこをASMで書いても
除算が減るわけではないと思います。アプリ部分をASMで書いてもリーダビリティが悪いだけで
速度改善には(工数かけた割には)貢献しないと思います。
割込は外付け8251が4本と8253を8259で整理させる方式ですが、割込処理も「先代」のASMより
速い奴をcで書いて実装しました。
>>906=878
で、後は何が問題だ?
#大体片付いたのかな?
OSを使い始めるのはだいたいどのくらいの規模から?
いや、この話もループになることはわかってるんだけど
定期的に議論しとくといいことあるかなって
片づきました。906は純粋に御礼です。
>>909 アプリがOSの10倍くらいかなあ、行数で。何度も開発するならいいけど、一発モノなら裸でいい。
まあでも8bitCPUなら、自分ならCでも
1234.56 は char [3] で確保して100進法で処理するな。
足し算も掛け算も100進法なら作るのも確認も簡単だしBCDの相互変換もテーブル引くだけだし
トータルの処理コストも低いしな
なんだよ「100進法」って ヽ(´・`)ノ
10進数でいうところの0〜99までを1桁とするんだろ?
2進数が北斗なら、100進数は南斗だな。
100進法なんて半端なことするなら256進法の方が効率良いだろ?
あぁ、もしかしたらBCD 2桁を1byteにパックしたのが「100進数」ってことなのか?
もしそうなら、それは一般的な呼び方なのか?
で、一般的なのだとしたら、いつの頃からそう云うようになったのだろうか…
かつてはファームウェアを専門にしてたのだがなぁ〜。歳取ったな〜
36進数って結構使うよね
漏れなら 8bit CPU (というか 8085) なら、100進法じゃなくて素直に BCD 使うなぁ。
どうせ掛け算は無いし、桁上がりの処理も 100 進法よりラクだし。
それだとDAA命令が要るでしょ。それがcで書けない。
そういうのは自分でライブラリ書け
桁上がり処理って100以上なら上に足すだけだからさ。
asmでDAA命令使って書くのと同じ程度のコストだよ。
それに、100進ならCで手軽に書けるだろ?
ポータブルに書いて、それで速度足りないなら自前で処理してもいいでしょ。
パックBCDのメリットはそのままHEXダンプで読める程度だな。
>>914 多倍長だと、最終的に10-16変換があって、バイナリ多倍長だとこのコストが大きい。
加減算のコストを1.5倍くらい払っても、最悪を減らるからいいじゃない。
それに100進数だと、0.05の掛け算とかがとても楽だよ。バイトずらして 2*2+1するだけだし
>最悪を減らるからいいじゃない。
へらる
>>921 >桁上がり処理って100以上なら上に足すだけだからさ。
>asmでDAA命令使って書くのと同じ程度のコストだよ。
このものすごい勘違いには誰も突っ込まないのか?
>>924 馬鹿構うのに疲れてきた恭子の頃。
#歳かな…
>>924 「上の桁に1足して(今の桁からは100引く)」ってことだと思う。
漏れにはこれが DAA と同じ程度のコストとは思えないけど、
人によっては「どちらも O(n) のアルゴリズム≒同じ程度」なんだろうな・・・
>>924 突っ込んでくれよ。 8085のアセンブラ忘れてしまったから、
アセンブラで書けば、こんなコードになる筈
CF=0
loop:
RAM からロード=>A
RAM からロード=>B
A=A+B+キャリー
DAA
AをRAM に格納
DEC COUNTER
JNZ loop
同じく100進数をアセンブラで書けば(たぶんCで書いても同じようになるだろ)
C=0; ;CはCF用のレジスタ
loop:
RAM からロード=>A
RAM からロード=>B
A=A+C ;
A=A+B ;ここで最大は99+99+1で199で8bitに収まる
ADD A,#(256-100) ; 100以上ならCFが立つ
C=0
JC SKIP
ADD A,#100 ; 桁上げが無いので元に戻す同時にCFが立つので
C=1
SKIP
AをRAM に格納
DEC COUNTER
JNZ loop
そんなに変わらんだろ?
>>927 「そんなに変わらん」=「同程度」かはともかくとして、
8085 で C レジスタまで使っちゃったら、カウンタ用のレジスタがなくなっちゃう罠
(HL, DE は RAM からロード/ストアする際のポインタとするとして)
もともとの速度の話に戻ると、C で100進法の加算をインプリメントしてDAA とホントに
同程度になるのかは疑問っぽいのでは。憶測なんで外れてるかも知れませんが。
929 :
デフォルトの名無しさん:04/10/28 18:40:06
CANを使おうとおもっているんですが、
参考になるソースやデバイスの使い方に詳しいサイトははないでしょうか?
RS232Cで通信して動く機械AとBがあり
それぞれを連動させて動かすプログラムを作りたいのですが、、、
まずAのみのプログラムはちゃんと動き、Bのみでも同様に動きました
そこで二つを連動させたら動かない、というかプログラムを実行したところでPCがフリーズ
なぜでしょうか?
素人質問ですみません
あいまいすぎて原因が絞りこめないんだが…
プログラムに問題があるか、仕様に問題があるかのどちらかだろう。
同じCOMポート使おうとした…そんなわけねぇな
両方受信待ちしてるとか言う、ベタな落ちに5000バーツ (・`ω´・)ノ
>まずAのみのプログラムはちゃんと動き、Bのみでも同様に動きました
それぞれどうやって「ちゃんと動いたかどうか」確認出来たんだろう・・・
ちゃんとした後輩Aと、ちゃんとした後輩Bを連動させたら大変に険悪なことになった
940 :
デフォルトの名無しさん:04/10/31 13:37:11
彼女Aとはちゃんと、、、彼女Bともちゃんと
そこで2人を合わせたら、、、(以下略
うむ、制御系はやはりノウハウが必要だね。
>>940 お前さあ、世の中には3Pとかやってる香具師いるんだよ?
HIGH/LOWだけじゃなくて、もっと世の中を(ry
量子コンピューティング=乱交パーティー
>>943 3Pに関しては、男2女1あるいは女2男1ともに経験ありますが、こういうこともあります。
再現性は高いです。場合によっては資源を喪失することもあります。
いわゆる、深刻なダメージを受けるといったらよいでしょうか。
資源の共有には十分な注意が必要ですね。
調停者を置くか、ルールの規定が必要ですね。
基本的には、 need to know と言ったらよいでしょうか
知る必要の無い事は知らなくてよい。
もういいって?しつれいしますた。
>>945 違うね、オナニーだ。しかも、両刀使い。
収拾つかなくなってきたな。で、
>>930、原因は何だったんだ。
このスレは参考になったかい?ん?
ネタ振りしてる間に 出て行ってくれ
360=0x168=イロハ
>>952 ケーズルがクロスだけの事はあって、苦労ス
957 :
デフォルトの名無しさん:04/11/02 16:43:01
新スレ建てないと、このまま落ちますよ。 950超えてるので自動的に落とされます
958 :
デフォルトの名無しさん:04/11/02 22:25:09
959 :
デフォルトの名無しさん:04/11/02 22:31:51
buffer って何ですか?どこにあるのですか?
bukkerなら結構身近にあると思うよ
>959
〈衝撃などを〉やわらげる,緩和する
擬音語 ‘buff' から、つまり
叩くとバフッて音がする
チミのお腹の脂肪のことだ
スレが落ちてからでも問題は無かったりする
落ちてからじゃ遅いんだよ
制御系ならフェイルセーフをきちんとしる
そのためのウオッチドックだ
だけど ”誰” が ”ウオッチ” するんだよ!?
・・・
>>966、よろしく頼(よろ)んだぜ!? (ビキッ
魚っ値
970 がスレ立て担当
北チョンのニュース番組はだいたいこう聞こえる
踏んだら孕んだ!
孕んだ振る降る般若だ!
童貞擦る無駄、フン出る春巻きはむ無理!
チン毛ちぎり、看板塗る飛騨!
安眠煮る焼酎!
安打!?半田ゴテ適時打!!
原チャリ盗んだ!
よくちょん切れるハサミだ!
∧__∧ ________
<丶`Д´>/ ̄/ ̄/
( 二二二つ / と)
| / / /
|  ̄| ̄
ぎゃああああ。アクセス規制中でしたああああっ?(;・`д・´)
だずげでええええっ
----------
新このホストでは、しばらくスレッドが立てられません。
またの機会にどうぞ。。。
デフォルトの名無しさん ( , 1)
ホスト121.net218219044.t-com.ne.jp
制御系なら俺に聞いてもいいぜ(6)
名前: デフォルトの名無しさん
E-mail:
内容:
俺は俺であり、それはお前の事だ。
ハード寄りの話も大歓迎だ。
道具話も楽しくやれるならやってくれ。
>>972,973
ありがとゴジャマス m(。。;)m あんなのはじめて見たんであせった。
もうしません、もうしませんからあっ、って言ってからトライしても同じエラーだった。
sage
未だ生きてたのか。