そーいや、過去ログの新タイプミラーって死んでる?
ふりむかないことさ
4 :
デフォルトの名無しさん:2006/09/20(水) 09:44:03
>>1 お疲れ様
スレたてして暫くレスないと落ちる事があるみたいだから上げるね
5 :
デフォルトの名無しさん:2006/09/20(水) 09:52:54
制御系の貴殿らにperlスクリプト検定試験をプレゼントだ。
【ether⇔com1変換装置がある。この変換装置にtelnetしてconnect com1を
実行すれば、あたかもモデムなどのシリアル接続機器が自分のPCに
ローカルで接続しているかのような状態になる。ぜひとも"ATZ"などの
コマンドをモデムに送り込みたい。
以下のスクリプトをどう修正すればいいだろうか答えなさい。】
変換機のIPを192.168.1.1
変換機にログイン後、モデムに接続するコマンドをconnect com1とする
use strict;
use warnings;
use Net::Telnet ();
my($t,$pass,$host,$user);
$host = '192.168.1.1';
$user = 'admin';
$pass = 'admin';
$t = new Net::Telnet (-host => "$host");
$t->open("$host");
$t->waitfor('/login:/');
$t->print("$user");
$t->waitfor('/Password:/');
$t->print("$pass");
$t->waitfor('/#/');
$t->print("connect com1");
$t->waitfor('/com1 connected!/');
$t->print("ATZ");
6 :
デフォルトの名無しさん:2006/09/20(水) 10:14:47
なんて素直じゃない質問なんだww
>$t->print("ATZ");
シリアルに繋いだモデムにテキストとしてATZを流し込んでもだめだと思う
ATコマンドなんて もう忘れたがな
たしか +++ 送って OK 確認してだったかな?
10 :
デフォルトの名無しさん:2006/09/20(水) 22:29:29
はじめまして。初心者ですが質問させてください。
最近この業界に転職して現在PLCの設計をしていますが、
勉強していくのに初心者にもわかりやすいサイトとかないでしょうか?
現在 PLC(MELSEC)←---RS232C--→PC←--GPIB---→LCR
のような構成で設計していますが??ばかりです。
サイトでなくても「これからやれ!」というのがありましたら教えて下さい。
転職前はソフト屋やってたのでVB,JAVAは大丈夫なのですがPLCへの
命令の仕組みがさっぱりです・・・
駄文失礼しました。
>転職前はソフト屋やってたのでVB,JAVAは大丈夫なのですがPLCへの命令の仕組みがさっぱりです・・・
頭が痛くなってきた┐(´ー`)┌
13 :
デフォルトの名無しさん:2006/09/23(土) 06:53:55
いつの間にか新スレに移ってたんだな
即死避け age
>>11 PLCのプログラムは1つの無限ループの中でコード走っているようなものだ
但し、I/Oは無限ループの最後尾または最前列でリフレッシュされるから気をつけろ
>>14 「PLC"へ"の命令」
PLC(MELSEC)←---RS232C--→PC←--GPIB---→LCR
PLCへの命令= ↑ここ
16 :
デフォルトの名無しさん:2006/09/23(土) 17:37:54
>>10 命令の仕組みがさっぱりです・
PLC なんて馬鹿向けの時代遅れの記述方法。機械設計者でも自分で設計できる
点で優れているだけ。
Java を使いこなすための 1/10 以下の勉強で PLC なぞ使いこなせる。難し
く考えすぎ。PLC の内部にはワンチップ・マイコンがあり、C で記述された
PLC インタープリタが動いているだけ。使うやつに技術力があれば、そのワ
ンチップ・マイコンを直接 C 言語でプログラムして制御したほうが効率的。
要は、コイルと接点があるだけ。コイルに電流を流すと、鉄でできた接点が
引っ張られてスイッチが閉じて、別の電線に電流が流れる。その電線の先に
コイルがあれば同じことが繰り返されるだけ。中学生レベルの知識で理解で
きる。昔は実際のコイルと接点でできてリレー素子を実際に電線で繋いでいた。
今の PLC は、昔の馬鹿でも解る回路をプログラムに使っているだけ。
PLC ぐらいで怖気ずくな。
17 :
11:2006/09/23(土) 17:47:17
>>10 の言うのは、
>>15 のことかと思ったよ
1)「PLCの設計」って、
@PLC自体の開発における設計
APLCを使ったシステムにおける、PLCのプログラム設計
どっち?
2)「PLCへの命令」
@PCからPLCに対しての命令について
APLCのプログラムにおける命令について
どっち?
18 :
デフォルトの名無しさん:2006/09/25(月) 17:31:00
現代制御やら古典制御勉強中の学生ですが、どのように勉強したらいいんですか?
良かったら教えてください。教科書読んでるんですが、それからのステップが全く分からなくて・・・
それは現場の俺達の方が教えて欲しいくらいだよ
20 :
デフォルトの名無しさん:2006/10/03(火) 03:22:42
3MHz動作の8085+8253+8259+8251*4本でuart4.8Kの交通整理やらす箱があるのですが、
8085はもう作られてないから製造の度にアキバで買い集めるらしい。
今の石で同等の基板起こせばいくらでも小さくできるが、ごつい機器の間に配線するので、
小さくしても無意味(配線部だけ相変わらずごつい)。っつか基板起こす手間と\が惜しいらしい。
CPUだけZ80かそれ相当のK80に取り替えたらそのまま動いてくれないでしょうか。
ソフト屋から見たらLSIC80使えるしちょっとした書き直しですむのに、と思えるので。
アドレス割付は、ROM=0-7FFF、RAM=8000-9FFF、8253=F000、8259=F200、
8251=E000,D000,C000,B000 ついでに8255=F400がついてます。この割付見ると、たぶん
アドレス信号の上位をデコードしてチップセレクト出すICが居るようです。
>>20 8085とZ80は周辺ICの制御の仕方が結構違う。
その辺を吸収するコードをZ80側に用意する気があるなら、
8085→Z80は難しくはないと思う。
後は、Z80の割り込みモードの違いに注意ってところで。
わを!こんな時間に早レス・・・
85がメモリマップドI/Oの所がZ8だとin/out命令になるのですよね、それは直せます。
割り込みモードについて調べてみました。モード2を使うとベクタが連続になりますね。
8259の設定はベクタが4番地おき、というのを使っていましたから、ここらの相性が問題に
なりそうです。
23 :
20:2006/10/03(火) 05:34:43
あれ?8085では8259に「4番地おきにcall命令を発生させる」設定をしておけばよかったのですが
Z80ではcall命令が来たら具合悪いですね。ここはどうするんだろ?
DW ルーチンアドレス、ではなくJP ルーチンを4番地おきに並べておいたら動くかな?
24 :
20:2006/10/04(水) 00:58:52
8259はCPUとINTA信号を2回(8086)ないし3回(8085)やりとりする、と8259のデータブックに
書かれています。Z80にはそういう信号は無いみたいですから、8259を使う基板にはZ80は
合わないみたいですね。
2年ぐらい前に安いROMライタのこと聞いたのですが、最近の事情はどうでしょうか?
自分でぐぐったらたくさん引っかかりすぎて結局探せませんでした。
Z80 の割り込みモードを 0 にすれば 8259A が使えるみたいだよ。
モード2 しか使ったことないから詳しい事は不明。
ってか、回路設計の本は無いのか?
26 :
20:2006/10/04(水) 03:13:52
私、2進回路の基礎訓練ゼロなんです。高校文系までだし。だからソフト側からだけの興味で(^^;
>モードを 0 にすれば <--ありがとうございます。モード0のときの動作を調べてみました。
>このモードは、割り込みサイクル中に読み込んだ命令をそのまま実行します。
とありました。これだと8259の出してくるcall XX04おきを実行できて,、
ベクタにもジャンプ命令を置いておけばよさそうですね。
RST命令ね、1バイト命令で3ビットのベクタを指定できて、
飛ぶ先は0000hから8バイト置きの8個。
28 :
20:2006/10/05(木) 04:52:58
RST命令なら知ってますが、それは「ソフトウェア割り込み」ですよね?
外付けuartの8251と外付けタイマの8253が出してくる外部割込みをどう処理するか?
の実装手法を聞いてるところです。
RSTは、「使用頻度の多いサブルーチンコールを1バイトで済ませる」時に有効な手法ですね。
>8259の出してくるcall XX
もしかしてAm9519?
あー処で、CPU載せ換えるってことは最低限CPU周りの基板だけは作るんだろうか。
それとも、ワンボードで配線だけで差を吸収するんだろうか。
8251/8253は、割り込み線をZ80PIOのデータに繋いで、1ビットずつ割り込みできるようにしてやれば
Z80流にモード2で割り込み制御できるんだが。
>>28 >それは「ソフトウェア割り込み」ですよね?
8259の割り込みでバスに乗っかるのはRST命令だよって話だ。
32 :
デフォルトの名無しさん:2006/10/05(木) 16:10:59
33 :
20:2006/10/05(木) 16:47:26
>>29 その石は知りません。データブックはμPD8259-A2 のです。
>>30 2行目のほうでできないか考えてます。
>8251/8253は、割り込み線をZ80PIOのデータに繋いで、1ビットずつ割り込みできるように
>してやればZ80流にモード2で割り込み制御できるんだが。
デバイス側が「ベクタ番号」をバスに出すようになってないとモード2は使えなくないですか?
>8259の割り込みでバスに乗っかるのはRST命令だよって話だ。
手元のデータブックでは「call命令のopコード(CDh)がデータバスに出力される」となってます。
貧乏もあるのですが、 CADで図面書いて検証して基板屋に出して、っていう一連が面倒
らしいのですよ。それでCPUだけ変えられないかと考えてみたのです。たぶん脚の数は同じ
でもピンの位置なんかの違いのほうが大きくてだめっぽいですね。
「近所の部署が作った基板をパクってuartだけ使う」ほうが現実的かも。
>データブックはμPD8259-A2 のです
>>8259の割り込みでバスに乗っかるのはRST命令だよって話だ。
>手元のデータブックでは「call命令のopコード(CDh)がデータバスに出力される」となってます。
NECの拡張だな、8259はcall命令は出さない。
RSTが1バイト命令なのは、2バイト目以降のフェッチが不要だからだ。
>CPUだけ変えられないかと考えてみたのです
さすがにそれは無理。あくまでバイナリ上位互換だからね。
フラットパッケージのZ80互換品をのせた8085ピン互換ボードでも作るしかないのでは?
>>33 8251がベクタ番号を出せないから、Z80PIOに中継させてベクタ番号を出させるんですよ。
今時のZ80互換チップはPIO内蔵しているんじゃないかと思ってね。
36 :
20:2006/10/06(金) 06:31:25
>>34 元々の8259はRSTを出すのですね。それは触ったことなかったです。
>>35 ナマのZ80じゃムリっぽいですね。KC80シリーズの、80A12なら、内蔵uart1本のほかに
外付け8本までつなげられます。CPUを選ぶとしたらこれが最適でしょう。タイマとuartだけしか
ついてない所がこの箱の目的にぴったし。内蔵RAMが512しかないので、RAMは必要ですが。
H8の8bitシリーズと性能的には互角に見えますが、お値段はどうなのでしょうね。
ボード起こさなきゃいけなくなったときに私の意見聞いてくれるといいな。
素直に基板起こし直せないってのがすごくカユイが
そゆ話が出るってことは8085ピン互換小亀基板なんて起こせないよな…
昨今のプロセッサの、I/Oポートに信号配線して、
フルエミュでもいけてしまいそうな気すらする。
F/Wのつくりは難解? 解析済み?
規模的には外部仕様おさえてつくりなおしでもいい感じ。
38 :
20:2006/10/07(土) 04:19:30
小亀基板か・・・まさにそんな存在があればいいですね。 F/Wってファームウェアのことですよね?
引き継いだときはASMで5K行のスパゲッティでしたけど、私がCで書き直した後はアプリ部400、
メインループ30、init40、タイマ処理50、uart処理4CH分で350、define集めたヘッダ50、ベクタ部50で、
1K行位です。 uartの交通整理だけ(合流・分流・選択・除外・変換など)なのでかーんたん。
石が変わってもベクタ部とinitをその石用に書き直せばいいようになってます。
CとASMの行数比率2.5ぐらいでしたから、元のASMも平均的な品質だったとは思います。
私が「小さく書く偏執狂」で、平均的なプログラマが書くものの半分になるのがふつうなので。
だんだん日記になってきてるな。
40 :
20:2006/10/07(土) 05:12:31
私のほかにも早起きさんがいますね。この業界、夜型が多いんですが。
元々が差し迫った問題じゃなくて、ちょっと暇になったとき考えてみよう程度でした。
最近止まってたから、景気づけにと思いまして。
古いシステムを無理に延命するより
今時のマイコンでスクラップ&ビルドした方が結局低コストかつ時間もかからん
気もするけど、どうなんだろう。
つーかその時間は早起きっていうより昼間寝てるヒキ(自主規制
M16/H8ならコンパイラも制限はあるけど無料だし作り直した方が簡単だわな
43 :
20:2006/10/07(土) 15:26:48
いや昼間はふつうに起きて働いたりジム行ったりしてます。寝るのは19:00前後ですが(^o^)
>>41さんのが正論ですよね。お客にもそう奨めます。H8のコンパイラも持ってるし、8〜16bit
ならどの石使われても即座に書き換えできます、とお客には言っておこう。
ところで三菱と日立の石ってキャリーの立ち方が反対だったと思うのですが、合体した時に
三菱のほうが折れたのでしょうか?
>>41 現場の人間に新しい環境を理解する意志も能力もないので
高コストかけて延命する以外に実現性がない、とか
うちが丁度そんな感じだorz
私にとっては実装のたびに\15ぐらいもらえるので美味しいんですけど、なんか可哀そうで。
三菱の50747とかいう小さな8bitチップを使ったことがあるのですが、ご丁寧にデータブックの
表紙にジャンボの写真が印刷されていました。(紙のデータブックがあたりまえのいい時代。)
このチップがキャリーの立ち方が反対でした。引き算してマイナスになったときキャリーが0。
デバック中に気づいて、データブック確認して目を疑いましたよ。キャリー判定の箇所を
総ざらいするはめになりました。
それってSUB命令のときはボローがないときC = 1ってこと?
なんか勘違いでしょ。そんなCPUありえんと思う。
それだとSUBBのときはCは反転してから引き算されるのか?
オーバーフローのフラグと部分的にごっちゃになってるんじゃないか。
PICもボローが無いときにC=1になるんで悪名が高いな。
はっきり言ってどちらでも構わないし、ゲートをけちったらそうなったん
じゃないの?
>>46になんでそのようなCPUがありえないのか聞いてみたい。
なんでって書いてあるじゃん
そんな仕様にしたらSUBBの動作が直感に反するでしょ。
直感に反するけど、そうだったんです。CPU全てでキャリーがどうだというルールはない
ようでした。 もう20年近く昔の話ですが。
その後ソニーの8bitでも似たような命令セット見たことがあります。
>>49 ンニーの8ビットって、すーはみのAPUに使われてた奴かな?
あれは6502のぱくりだ。
6502の設計はある意味究極なので、知識がないヤシはぜひつまみ食いしてくれたまい。
でも組み込みで6502系を採用したって話はなかなか聞かないなぁ。
50さんも早起き? 私が見たソニーの石はcが無くてASMしかなかった。あれじゃクミコは大変。
A-B 命令は (A + 全ビット反転(B) +1) として実現されるので
回路をケチるとボローは 桁借が無い時に1になります。
SUBBの時は(A + 全ビット反転(B) +CY) と実現するので、
これを理解すれば、ボローはキャリーの反転が自然だという事になりますね
6502がそういう設計ってことは、ARMなんかもそうだったりするのかな?
ARMは6502の子孫って聞いたけど
i8080は10進補正のために加算か減算かを保存する必要があった。
そのためのロジックがあればボローを反転させるのは簡単だ。
夕方に、駅前の電線にムクドリの大群がねぐらを求めに来ます。チュンチュン大騒ぎするのですが、
よく見ると連中のやってることはバブルソートですね。 個体間の順位(=ソートキー)があって
ある固体が電線にとまろうとするときに、自分より格下が居ると威嚇して追い払う。追い出された
固体はそのまた格下に対して同様の事を実行する。これが日が暮れるまで続きます。
ピュー太のソートと違うところは、翌朝大量の糞が道路に残って養鶏場の臭いになっている事。
情報処理にもエネルギーを使うのが実感できます。でも彼らの使うエネルギーは、糞は出すが
PCより効率良さそう・・・
スレ違いならご容赦願います。
「CDドライブっつうのは、こんな原理で動くんですよ」というデモをしたいなと考えています。(普通の人、子供向け)
スピンドルの回転、ピックアップの前後移動、レーザーのOn/Offあたりを、実際に見せられたらなと思ってます。
必要な物品と技術的なハードルについて、御教示頂けないでしょうか?
もし、自作プログラムでATAPIなんかのコマンドを送ることで自由にドライブが制御できれば、話は簡単なのでしょう。
ですが、そもそもこんな低レベルの動作を、インターフェース(SCSI/ATAPI/USB)から制御できるのでしょうか?
トレイの開閉やデータ読み込みくらいの実例はWebにもあるのですが、メディアも不要なこんな動作については見つかりませんでした。
学ぶべき事柄や書籍などありましたら、ヒントだけでも構いませんので教えて頂けないでしょうか?
最適制御のフィードバック量が
inv(R)B'Px
になるワケを教えて下さい。
お願いします。
えっと、光ピックアップのレーザーって直視しても大丈夫だっけ?
>>59 光量による、、、、、が
常識的に考えて、そんなわけ無いだろう
CDケースに "CAUTION" って黄色い注意書きが貼ってあるでしょ?
"恥ずかしいからじっと見つめないでね。 はぁと" って書いてあるよ。
だからそれをよい子のみんなに見せようって人がいるわけだけど。。
もちろん「見られる」角度に配慮すれば光線を直視することは回避できるだろうが、
レーザーって反射光でもまずい場合もあるよね確か。
トイレにドアがあるのに、わざわざ全開にしてウンコするようなもんか?
しかも便器を洋式から和式に替えて・・・
65 :
56:2006/10/22(日) 03:30:08
みなさまご返事どうもありがとうございます。
>>57 たしかにそうですね。ちょいと用意してみることにします。
>>59-64 直視(のぞきこみ)は避けねばなりませんが、紙に当てて
光ってるのを見る程度ならば問題ないと思います。
さらには、低出力でも見えやすいDVD用のレーザーを使う工夫も必要でしょう。
66 :
デフォルトの名無しさん:2006/10/22(日) 10:01:29
10倍ぐらいに拡大した模型作って、サーボコントローラ+シーケンサーでやればそう難しくないだろ。
本来の質問の回答は誰もないね。
まあこの業界(どもこそうかもしれんが)俺も含めて低レベルな奴が9割だからねえw
とりあえずこんなの見つけたけど。
いやまあググればすぐでてくるようだから、既に知ってるかもしれないが。。
http://itdesign.jp/cdromp/index.htm これでとりあえず実現可能か試して、それから自分でATAPIのプログラミングについて
勉強するって手順でどうかなあ。
ATAPIに関してはCQからムックが出てるようだけど、あのシリーズって内容あてにならんことが
多いからなあ。
>>58 その RとかB'とか inv() とかが、何なのか定義してみて
inv(R) はRの逆行列。
B' はBの転置行列。
Q, R は単なる重み。
xの微分値がAx+Buの形で表される線形システムで、評価関数∫(x'Qx + u'Ru)が小さくなる制御入力uは
u = -(Rの逆行列 * Bの転置行列 * P * x)
で与えられる。
ただしPは次のリカッチ方程式(省略)を満たす解とする
と本に書いてあるんですが、入門書のためかその式の証明がありません。
リカッチ式あたりをいじって変形してやれば出てくるんですか?
うわあああ!数式見るとジンマシンが・・・ それは、例えば何かを安定化させる制御とかそういうの
に使うの? アームの位置が目的のとこでぴたりと止まる、とか。
この業界だったら、使えるって判ってる式は証明のとこは飛ばして使っちゃうからなあ。
そうか、プログラミングのスレでしたか。
ググったら「聞いてもいいぜ」なんて出てきたんで、早速聞いてみたんですが、
その前に、どのカテゴリのスレから確認すべきでした。
どう考えても数学系ですね。。
ありがとうございました。
いや、本来「制御」ってカテゴリーは制御理論を使うような分野のことを
差すんだろうとは思うんだけどね。
リミットスイッチだのタリーだのポーリングしてチマチマやるようなのは
制御なんていうのはおこがましいよねw
大昔はクミコ系って言ってたよね。そっちのが実情には合ってるかも。
何で俺の妻の名前が久美子だって知ってるんだ。
76 :
デフォルトの名無しさん:2006/10/31(火) 00:34:01
収束していないステップ応答出力から
伝達関数を1次遅れ系に近似して導出する方法ってありますか?
1次遅れなら、1つ前の値との比率だけで求まりそうなものだが?
俺、なんか勘違いしてるのかな?
3MHzの8085のお仕事、まとめて6本キター------- 1,2週は楽しめそう・・・
続けてまた2本キター。まあ、大して\にはならないんだけど、チッチャイプログラムひねくる遊びとしては
面白いんだよね。大昔はbit誌のナノピコ教室とか好きだったし。
この石でsin/cos出してくれ、って言われたときはちょっとあせった。
私ゃテーブル作ったよ。
#お蔭で、sqrtよりsin/cosの方が速い罠。
81 :
79:2006/11/11(土) 13:00:20
>>80 私もそうです。1度単位で出ればいいので[360]のテーブルですんだ。
ルートはどうしたんですか?
どうせ実数のライブラリ使うなら素直にライブラリの関数使えばいいのに。。
ひょっとして俺様定義の実数をアセで使ってるとか?
それならそんなことよりごく普通に10進の文字列との相互変換とか、
そのあたりの方が余程難しい気がするんだが。
っていうか三角関数ってテーブルを素直に参照するだけのやり方でも
pi/2まであれば十分なはずだけど。
83 :
80:2006/11/11(土) 15:21:14
>>81 あー、テーブルのエントリー数は0-90度を100個にしてたかな。だから厳密には度じゃなくて0-100グラジアン。
奇数で順番に引く方法で計算してた。16ビット整数だと高々256回回るだけだから。
>>82 そんな贅沢なものを使えるほど余裕がないときもあったのよ。
んで、10進16進変換辺りは10進補正命令も駆使して作った記憶がある。
なんだやっぱり知ったかか。
unit やintじゃないんだから単純にBCDに変換なんてできるわけないじゃんw
それともint + decimal pointなんていう効率の悪いことしてるのかな。
85 :
80:2006/11/11(土) 15:39:34
おや、誰か浮動小数点数を扱っていると申し上げましたでしょうか。
ああ固定小数点って奴ね。
それなら確かに。
しかしそれじゃ利用範囲はかなり限定されそう。
8085使うようなシステムの三角関数に汎用性や精度を求める奇特な人が居るな
汎用性や精度は求めてもいいんじゃね?
速度とか実用性はしらね
89 :
デフォルトの名無しさん:2006/11/12(日) 03:01:56
私,現代制御理論を勉強してるんだけど,学校で指定されてる教科書は,
「システム制御理論入門」(実教出版)なんだけど,
わけわからなくなって,新たに奨められた参考書
「現代制御論」(吉川井村)(昭晃堂)
買ったんだけど余計わからなくなって,問題解ければいいやと思って,
「演習で学ぶ現代制御理論」(森)
を買って確かにかなりわかりやすかったけどうちの先生数学チック
(Lyapunov方程式でA^TP+PA=-CC^Tにおける唯一解Pの存在条件出せとか)
なのが好きなんだよね.こんなかんじの現代制御で数学チックでわかりやすい問題集無いかな><
どなたか迷える私にご教授ください(汗
91 :
89:2006/11/12(日) 03:30:17
もしや板を間違えましたか?すみません.違うところに行きます.
不機嫌にさせてしまい申し訳ございませんでした!
92 :
79:2006/11/12(日) 05:32:31
>>82の >pi/2まででいい、ってのは知ってます。ただ範囲によって符号をひっくり返したりする
のがめんどうなので、ROMが余裕あるかぎり1周分用意しちゃいます。
>>83 がsqrtの説明なんですか?頭悪いんでもうちょっとくだいてくれると嬉しい。
>>88 汎用性はゼロでいいです。精度は16〜32bit整数で計算できるように押さえます。
ex) 16bitのsin/cosなら±1.0の間だから、符号1bit 整数部1bit 小数部14bitで充分な精度。
速度と実用性こそまさに求められることです。なにせ3MHz(^o^) 今どき8bitの石でも20MHzなのに
制御系でも javaで組むことって可能なの?
もし組めたとしても、リアルタイム性は確保できるのだろうか?
WEPキーをしりたいんですけど、パソコンのどこを調べたらいいんですか?
制御系はC++ですらサブセットしかないのにJavaが乗るわけないだろ
PLCって制御系?
リレーの制御を書くような奴? ちょっとスレチかな。 いちおうマイコンのプログラムまでと
おもってる。
でも組み込み用のJavaってあるよな
>>93 リアルタイムなところははサブCPUに任せて
100 :
80:2006/11/12(日) 20:36:48
おっ、やっと荒らし規制明けた。
まぁ、私が扱ってたのは2バイト整数とその派生の固定小数点数だから。
>>92 今更ソースはないし、説明も面倒なんでCで書いてみた。
int main(int argc, char ** argv)
{
int x = atoi(argv[1]);
int xn;
int r;
for (r = 1, xn = x; xn > 0; r += 2) {
xn -= r;
}
r >>= 1;
if (xn < 0) {// 切り上げなら不要
if (r * r - r >= x) --r;// 切り捨てなら不要
}
printf("%d:%d\n", x, r);
return 0;
}
四捨五入しなくていいなら掛け算も使わないのが味噌屋根。
>>98 RTOSの上にJavaタスクが乗ってるって奴じゃ?
たとえばJBlendだとITRONの上にJavaタスクが乗ってる
リアルタイム処理はITRON、リッチな処理はJavaでやる
>>100 ありがとうございます。筆算で開くやり方と似たやり方に見えますね。メモメモ・・・と
ITRONを130MHzぐらいのSHで使ってみたけど、mSオーダーのリアル性はダメダメでした。
いいとこ10mSオーダーまでかな。MSECを1にしたら重くなるし。
103 :
102:2006/11/13(月) 05:10:55
以前、ringバッファの滞留数をwp,rpから計算する手法をここで聞いたし、石選択の相談もしたし、
2chで仕事の役に立つネタを拾う俺って・・・まあ、頭悪いんだからしょ〜がない\(^o^)/
>>100 奇数を加算した回数が n^2になるという方法だね。
簡単だけど、大きい数で時間がかかりすぎるかもね
16bitなら sqrtの結果は8bitに収まるんで
x^2のテーブル作ってバイナリ検索も簡単で、ソコソコ早いよ
テーブルに何入れとくんですか?
あ、0,1,4,9,・・・(255)^2を入れといて当たりの位置がルートですね?
これだと256個のテーブルの2分検索だから高々8回のループでよい、ということですか?
固定少数点で16bit求めようと思うともっと大変ですよね?
頭悪いんだからしょ〜がないっても、そんなことまで聞くほど馬鹿だとは思わなかった。
>>106 入力が32bitの場合の事?
掛け算が使えるならニュートン法が一番高速と思うけど
掛け算使えないなら、
(a+2^n)^2= a^2 + 2^(n+1)*a +2^2n
を使って処理するといいよ。
n=0の時はこの式は (a+1)^2= a^2 + 2*a +1 で
a^2に 2a+1を加算すれば(a+1)^2になる事を意味してる=奇数を加算すればいい
具体的には、 aとa2 の2つの変数を最初0から、n=15から スタートして
入力値Xと a2 とを比較しては
a2=a2 + 2^(n+1)*a +2^2n ; a=a+(2^n) ;
と更新してゆくわけ
109 :
106:2006/11/14(火) 09:04:06
16bitでS4.11(上5bitがsignと整数部、下11bitが小数部)みたいな約束で、同じ精度でsqrtを
求めたいときでも、そのアルゴリズムは使えますか?sin/cosなんか±1.0の間だからS4.11
みたいな16bitで持ってたので、そのオーダーの数値で少数点つきで扱うときに使えるといいなと。
アルゴリズム辞典みると、実数についてしか書かれてなくて、応用の仕方がわかりません。
それならニュートン法で。
>>109 nは負数でも式の形は同じなので使える事は使えるよ
ただシフト方向が逆になるのでメンドクサイが
掛け算が使えるなら、2ビット単位に見て初期値を決めてニュートン法が一番早い
掛け算が使えないならこの筆算法がまあ我慢出来る範囲だと思うよ
112 :
106:2006/11/15(水) 06:06:54
いろいろありがとうございます。四則演算しかできないヘタレなので、助かります。
a =0
a2=0
n =2
a2d=a2 + 2^(n+1)*a +2^2n = 16( 実際には16<<11) と最初は比較して
それ以上なら a2=a2d , a=a+2^n
次にn=1,n=0で同じ事を繰り返して nが-11になるまで繰り返す
途中 aのシフト方向が反対になる
だからループで処理するより ループを展開して
書いた方がいいと思うよ
いつもの3MHzの8085の人です。入力が数十秒切れ目無く続くとき、出力にring上書きのような
バグが出て困ってます。入力はヘッダ文字〜<CR>で切り出してstrcpyで保存、タイマで数秒
ごとにそこから出力するようにしてるので、処理が間に合わない的なことはないはずなのですが
正体が判ったらネタ書きますね。
>>114 単純に入力のバッファ溢れだったりしてな
116 :
114:2006/11/27(月) 04:20:15
ああ、それか(*o*) 入力ringで上書きが起きたら、そこから読み出すタスクは変なフレームは
捨てると思ってましたけど、ヘッダを検出後、蓄積状態になってから入力ringに上書きが
起きたらそうなりますね。頭ABC,123,・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・<CR><LF>
↑この辺に別の頭CDE・・・がかぶったりします。
入力taskでちょっと重い処理=整数変換のsscanfとsprintfをやってたとき出ました。
タイマ処理で減算するタイマの種類も増えたし。 以前出力ringで上書きが起きて、そのときは
ringが置かれるアドレスによって出たり出なかったりしたことがあり、そっちに頭が行ってました。
117 :
114:2006/11/27(月) 04:40:40
軽くする対策としては、こんなのが効き目がありそうです。
・入力処理では数値計算はやらない。→strcpy程度なら間に合うだろう。
・変換/編集は出力のときにやる=数秒に1回でいい。
・変換/編集の間に上書きがおきないよう、入力ringのサイズを増やす。
>>115さん、ありがとうございます。また2chが仕事に役立ってしまった\(^o^)/
>>117 人が助けてくれたんだよ
役に立つとは何事か?
119 :
114:2006/11/27(月) 05:42:59
ごめんなさい。言葉が悪かったですね。
>>115さん、ありがとうございます。また2chで助けてもらっちゃいました\(^o^)/
120 :
114:2006/11/27(月) 05:43:58
この業界って夜型が多いイメージがあるんですが、私以外にも早起きさんがいるんですね。
徹夜だったりして
でも、月曜の明け方・・・って、日曜から徹夜?ウヒャー
123 :
115:2006/11/29(水) 00:48:27
まぁ、そのぐらいの言葉遣いはどうでもいいが、、、、
ネタで初歩的なミス書いたのに、そのものズバリかよ。。。。。。。。
技術者同士だから当然だと思って説明に書かなかったような事でトラブルって良くあるよ
多重割り込がかかるとだけ書いたら、スタックが2度使われてると文句が出たり
帰還の入ったデジタルフィルターを低い周波数に設定したらノイズが出るって文句が出たり
125 :
114:2006/11/30(木) 05:38:26
確認してきました〜、そのものズバリでした。入力時に数十ミリ毎に乗除算をするともうダメ。
>>117の対処でバッチリでした。あらためて、
>>115さん、ありがとうございます。
この手のソフト、20回近く作ってるのに、ありとあらゆるミスをくり返してます。トホホ・・・
まるで漏れが面倒見る羽目になりそうなプロジェクトのようだな。
なんていうか、むしろ
>>114みたいな意味不明の文章を解読できる人間が
本人以外に存在するってことが驚きだよ
>>127 「CPUがおかしい」とか「ライブラリのバグ」とか「コンパイラのバグ」って
言う奴の報告なんて大抵あんなもんだろ
>>127 前スレあたりで、「3MHzの8085Aを使ってuartの入出力をやってます。ROMはxxxx、
RAMはこの位・・・」とかシステムの概要は説明されてるので、それ読んでる人にはそんなに
意味不明でもないな。同業だし。unix系とかcobol系の人には意味不明かも。
前スレ見てきたがもう1年経ってるんだな
1年やっててそのレベルか・・・
この程度の規模だと、大体そういうミスをやらかすんだよな
俺も最近、出力が止まるミスをやらかしたが、
割り込みで出力して出力中フラグを立てて、
次の割り込みで出すデータが無くなったらそれを倒す、って作ったら
割り込み内で処理が終了する場合があって、
そのときにフラグが永久にたったままに…
132 :
141:2006/12/01(金) 17:29:27
ナカーマ!・・・でも私なんかと仲良くしたくないよね。バカが伝染る(^o^)
確かに数字を間違えるようじゃ制御系では致命的だからな。
134 :
114:2006/12/02(土) 02:19:26
あちゃ〜(*o*) こないだも1と2見間違えて動かないのに3hはまった・・・ディスプレイのせいにしよ
だから即値を使うなとあれほど
即値とマジックナンバーは違うでしょw
いや、#defineの名前じゃなくて関数名にch1puts()とch2puts()ってつけて、引数も同じだし。
隣のCHに出してた・・・orz
>>137 だから、共通化して引数でCH指定しろと何度(ry
結局1と2の間違いはどこまでも付きまとう予感。
140 :
137:2006/12/03(日) 04:37:45
>>138 昔、G.J.マイヤーズの「複合設計」という本に感銘を受けて、「制御結合イクナイ」が
刷り込まれてるのですよ。この場合だと、呼ぶほう puts(1,"abc\r\n"); 呼ばれるほう
void puts(int ch, char* str) {
if( ch==1 ) ch1のringへ出力
elseif( ch==2 ) ch2のringへ出力
elseif( ch==3 ) ch3の・・・ なんて感じになりますよね。 この1つ目の引数は
マイヤーズの言う「制御パラメータ」で、オーバーヘッドです。呼ぶとこでは1/2のどちらに出すか
判っているのだから、それぞれの機能の入り口があればそこを呼べばいい、という考えです。
でも、Win系に慣れてる今の人はこういうののほうが違和感あるみたいです。会社で書かれる
コードの殆どはchを引数に持ちますね。「それムダじゃん」って突っついても「これが標準化
だから」で終わり。 まあ、今のPG環境には「不足」よりは「過剰」がトレンドですからねえ。
こういう人たちに3MHzの石使わせると「動かねエ・性能出ねエ・石ダメじゃん」は必至。
141 :
137:2006/12/03(日) 04:47:18
で、139さんの言うとおりなんです。今の画面は10年前のイイヤマの15吋なんですが、縁ばかり
デカくて、点々が荒い。客の会社であたりまえに使われてるDELLの17吋がキレイで夢みたい。
1と2の入口名をchONEputs()、chTWOputsとでもしないと、このディスプレイでは、またやりそう。
>>137 あんたも同僚さんも教条主義的に物事考えすぎなんじゃないの?
その方法がよいか悪いかを判断する基準を、あんたの現場を知りもしない
どこかの学者さんとかに任せるの?w
プログラムは問題解決の手段なんだから、判断基準は、どちらがその問題を解決するにあたって
適合的かどうかでしょう。
まあそうはいっても、「特別の理由がない限りは」引数でChannelを指定する方法を
採用すべきだろうね。理由は、
(0) コードの直観性に関しては、呼び出すその部分だけ見ればどちらも大差ない。
(1) 余程頻繁に呼び出されるのでもない限り、Chによる処理の分岐程度のオーバヘッドは
大昔のマイコンのような貧弱な環境でも問題にならないはず。
(2) 指定するチャンネルを動的に変化させる必要がある場合、
>>137式のコードの場合、
呼び出し元の数だけ呼び出し先を選択する余分なコードが必要になる上、
そのコードを読む者に「こんな冗長なことをあえてしているのには何か特別な理由があるのか?」
と余計な詮索を強いることになる。
そもそも数字を間違う時点でお察しなのはおいとくとして。
保守性を考えればどちらにすべきか一目瞭然ではないかと。
仮に性能が出ないというのであれば、それを実測した後に対処すればいいとおもうが。
だいたい>142-143のいうとおりなんだが、付け加えるなら
Ch1とか2とか抽象化している時点で>137の考えは破綻しているような。
145 :
137:2006/12/03(日) 16:14:35
ども。こんなアホの相手してくださって嬉しいです。そうですね、保守性の点では他の大多数の
PGが見ることを考えて標準的な書き方にしといたほうがいいですね。いつか誰かが読んだとき
(2)みたいなことで頭ひねらせたらすまないですもんね。割り込み処理がCH分あるのは
しょうがないとして、タスク側のインターフェースはスキーリしますね。
箇条書きの項番が(0)から、ってのが、さすがクミコ屋さん。
まあch1/ch2なんて名前じゃなくて Main/Subとかの方がいいだろな
1を使うか2を使うかは#define で切り替えればいいのだから
ch3は何と名付けようかね
Main/Sub/Sub2/Sub3・・・
primary
secondary
tertiary
150 :
137:2006/12/04(月) 16:01:27
CHは4つあって、お客はA-CH、B-CH、C-CH、D-CHと言ってます。
メイン/サブだと、なんか主に使うCHとついでに使うCHみたいに感じますね。
実際はどれも並列で、使うときにどの装置とつなげるか適当に決めます。
それならforループで回せるように 引数にch番号を入れるのは悪くないね
152 :
デフォルトの名無しさん:2006/12/05(火) 17:47:03
SH-2について教えて下さい。今、HEWを使いCソースを書いていたのですが、
PE.DR.BIT.B0 = 1;
のC言語ソースが
MOV.W L11,R6
MOV.B @(1,R6),R0
OR #1,R0
MOV.B R0,@(1,R6)
L11:
.DATA.W H'83A0
のようにコンパイルされます。
別の割り込みで、例えば「PE.DR.BIT.B3 = 1」の様な操作をしたいのですが、
これだと、OR #1,R0の辺りで割り込まれると、割り込み先での「PE.DR.BIT.B3 = 1」が無効になります。
(Read-Modify-Writeの途中で、割り込みが発生した場合)
タイミング悪く、PE.DR.BIT.B3 = 1を無効にしない為には、どのようにすれば良いでしょうか?
153 :
152:2006/12/05(火) 17:48:04
あと、マニュアル見ると
OR.B #imm,@(R0, GBR)
というのがあるんですが、これを使ってくれないのは何でなんでしょう?
その OR.B #imm,@(R0, GBR) を #pragma inline_asm で使うか
その前後で割り込み禁止許可したらいいんじゃないの?
今 SHの環境は削除してるから C言語でもっと巧く出来るのかもしれないが
155 :
152:2006/12/06(水) 00:26:52
ありがとうございました
H8/300では1命令で出来たので、苦労無かったのですが・・・
割り込みを禁止許可を前後に入れる方向でやってみます
300ならDI/EIでいいけど、SHだと割り込み許可レベルの変更になりますよね。
それだと全種類の割込みを止めてしまう。それよりはPEDRを使うことが判っているデバイス
(uartとかDMAとか)の制御レジスタの割込み許可bitを禁止する手法のほうが、
巻き添えを食う処理が少なくてベターだとおもいます。
STC GBR,@-R15 ;スタックにGBRを保存して
MOV.W L11,R0
add
OR #1,@(R0,GBR)
ゴメン 編集途中で書いた
#pragma inline_asm(setHoge)
static void setHoge(void)
{
STC GBR,@-R15 ;スタックにGBRを保存して
MOV.L L11,R0
LDC R0,GBR ;
MOV #1,R0
OR.B #1,@(R0,GBR)
LDC @R15+,GBR
}
こんな感じでいいんじゃないの?
関係ないけどH8のアセンブラって使いにくいよね。
どこの馬鹿が考えたのかと思う。
シンボルの再定義もできないんじゃ、ルーチン内でレジスタにシンボル割り当てて
高級言語のローカル変数みたいな使い方することができないじゃん。
H8はもうCで書くのが定着しちゃったから、インラインで書く程度では?
H8/M16 あたりから上はC言語でしょ?
H8は最初からコンパイラありきで開発されましたからねえ。アセンブラはPGに使わせるため
というよりは、cの最終フェーズのためにだけ作られたと考えたほうがいいでしょう。
ANSI にないbit代入の書式までcで書けるし。ベクタ部もcで書けるし。
でも sfr.1 = (判定式)? 1:0; みたいな書き方するとコンパイラがバグったな。
いつもの3MHzの8085の人です。プリンストンの19インチWというディスプレイに変えました。
文字くっきりでとても快適です。1と2見間違える対策にはこれがいちばんみたいです。
DOS窓でLSIC80走らせるだけにしてはえらくオーバースペックですけど。
フォトセンサーは何ボルトぐらいの振幅が出ますか?
1万ボルトくらい
一般論で言えば4Vか、11Vか、23Vか、47Vか、全くでないか、煙が出る
電気はな、触って骨が透けて見えるくらいが丁度いいんだ
167 :
困ったさん:2007/01/08(月) 23:16:00
やってもらいたい問題があるんですがお願いします!
連続系の制御と離散系の制御の本質的な違いって説明せよ。
連続系がアウトランだとすると、離散系はパワードリフト
169 :
困ったさん:2007/01/08(月) 23:42:18
回答ありがとうございます。
知識まったくないんでわかりやすく説明してもらえませんか?(>ω<)
知識無いなら単位は諦めて勉強し直せ
171 :
困ったさん:2007/01/09(火) 00:22:52
俺に聞いてもいいぜとか書いてあったから聞いたんですが。
聞くのは勝手だが、スレもロクに読まない教えて君に答えるのは馬鹿馬鹿しい。
173 :
困ったさん:2007/01/09(火) 00:37:41
はいはい
馬鹿が名乗ってるおかげでNG登録しやすいぜ
連続系がアフターバーナーUだとすると、離散系はG-LOC
x = √(12+√(12+√(12+√(12+√(12+・・・ ・・・)))
xの値は?
4
179 :
178:2007/01/09(火) 22:33:23
あ、-3は違うかw
いつもの3MHzの8085の人です。ディスプレイを替えてから4システムほど作りました。
edit間違いは目に見えて減りました。不具合は「タイムアウトはこの位で」の辺りで、
これはつながる相手次第で現場合わせ的なとこがあるのでしょうがないかな。
DOS窓でmake実行するとトコトコ流れずに一瞬で終わってしまうのがなんか虚しい・・・
181 :
デフォルトの名無しさん:2007/01/20(土) 13:14:53
【ネガティブ派遣根性チェック】
3つ以上、思い当たる点があればアナタの性格はひん曲がっており、ネガティブ負け組人生を歩んでいます。
□派遣先の人事権のある社員の意見はたとえ間違っていてもマンセーする
□派遣先から「いつまでもここで仕事してくださいね(安い金でw)」と言われている
□自社に仕事を持ち帰れるように言われるとムカつく
□自社で仕事なんてできるわけがない
□派遣労働の問題点の話題が出ると感情剥き出しにする
□派遣労働の問題を指摘する人は嫌いだ
□派遣先には仕事だけでなく自分のプライベートについても指示して欲しい
□自分の月額金額を知らない
□派遣先社員より自分の生涯収入が低いのは当然だ
□派遣先に尻尾を振り、いつまでも派遣を続けることが大切だ
俺、頭悪いけど派遣やったことないからこのチェックリストは当たらないな。チョトヨカッタ
183 :
デフォルトの名無しさん:2007/01/31(水) 03:12:43
LSIC80で、82h、'D'・・・をuartに出そうとして、"\x82Dxxx"という文字列を書いたら、\x82Dは
2Dhという文字になってしまうんですね。"\x82Txxx"という文字列では82hの次に'T'が出るのに。
Dが16進数だからというのは判るのですが、こういう場合どのような表記にすればいいのでしょう?
>>183 LSICは
"\x82""Dxxx"
の記法は通るのかな?
通らないなら、\x82とDxxxでリテラルを分けて順次出力するなり、
プログラム側でくっつけてから一気に出力するなり。
185 :
デフォルトの名無しさん:2007/01/31(水) 04:42:32
わを!早起きさんありがとう。対処は"\x82""Dxxx"の記法で、できました。
その後K&Rなんか見たのですが、\xhhで1文字になる、となってました。
コンパイラのバグか、仕様か、微妙なとこを踏んづけたなあと思いました。
仕様です。
\xのあと、16進数と見做せる文字が4文字までは数値化されるはずです。
>183の例では、0x82Dと解釈され、文字列中のために上位が捨てられて0x2dとなったのでしょう。
187 :
183:2007/01/31(水) 13:44:48
なるほど。その>4文字まで、ってとこが明記されてるのを見たことないなあ・・・K&Rにも。
その辺は各コンパイラの「実装にまかせる」になってるのではないでしょうか。
183の場合ですが、\x82D0・・・だったので、4文字までならD0になりそうなものですが、
2Dhの後'0'でしたから。
トライグラフって3文字だからトライじゃなくて
実装系によるのか?
\x082D0では?
189 :
183:2007/01/31(水) 16:10:01
K&R第2版に載っているトライグラフ系列とは、??の後の「=/'()!<>-」で「#\^[]|{}~」を表現させる
ことらしいです。¥xhhについては、何文字にしろとは書いてなかったです。
190 :
183:2007/02/01(木) 00:40:26
\x082D0・・・と書いたら82hと'D'、'0'・・・になりました。
\x0082D0・・・と書いたら08hと'2'、'D'・・・になりました。
やはり暗黙に3文字ということになっているようです。
8085+8251 4CH、8253,8259、ROM,RAMのシステムがあるのですが、CPU周りだけKC80A12に
配線して動かすことって可能でしょうか? ハード屋さんは再開発論外で、ROMを実行できる
のがいいとか言ってて、そりゃあんまりと思いましたが。
82514台の割り込みが8259に入ってたのをIR0〜7のうち4本に繋げれば、タイマと割り込みは
自前でできそうに思えます。KC80のリセット時デフォはZ80互換ですし。
前スレでH8でuartエミュレートする相談とかしましたが、KC80のほうが石は安いですよね
192 :
デフォルトの名無しさん:2007/02/01(木) 10:33:29
上げてなかった・・・
海を渡って来たコード体系だからトライグラフってな
KC80A12 ってシリアル1つ持ってるから 8251は3個でいいかもしれないし
割り込み端子もあるんで回路少し工夫すれば8259も不要だろうけど
互換取る為に全部付けるわけ?
でもさ、KC80A12 に8251を4個にとチップ集めて
組み立てるコストから考えるとH8なりM16なり 1個でやった方が簡単だと思うけどねえ
>>191 キミは前スレじゃなくて、2年前の・・・2つ前のスレの人だね
1年半、どっかから部品集めては作ってたのか・・・・
UART2個乗ってる1チップで適当なのを2個積んで
ポート同士をつなでハンドシェークで通信させるのがソフトもハードも楽で、コストも低いだろうに
197 :
191:2007/02/03(土) 14:11:03
2つ前でしたか。いや、私はハードいじれないソフト屋=いつもの3MHzの8085の人です。
>>195 8259が不要になるのは解ります。8085がアキバで買えなくなったらど〜すんの?って
ハード屋さんに聞いたら、CPUだけ替えて動かんかなあ・・・とか言うんですよ。ボード起こす
コストも手間も無い、って。で、元のボードでZ80互換のCPUなら、脚だけ対応させれば
動かないかなあ・・・って想像してみたんです。これならソフトの移行は簡単だから。
タイマと割込みは内部にできるからノンコネクトで、8251の割込み線をIRnにつないで、
ROM=0〜7FFF、RAM=8000〜9FFF、8251のI/OアドレスがE000、D000、C000、B000です。
Z80だと例えばE000のI/OはCreg=E000にして、inp/outp (C) とかやるんですよね?
そういう事を考えるのがハード屋の仕事だと思うのだが、俺がおかしいのかな
俺からの助言
そのハード屋リストラ汁
>>197 何をやりたいかで手段を考えるべきではないだろうか?
Z80なら、マクロ出てるだろ
いっそFPGAでやたらPinだけでてるサブ基盤作って使いまわせ
203 :
191:2007/02/04(日) 03:59:56
>>199さんに1票ですが、私なんかに仕事くれるのもそんなハード屋さんだからなんですよね。
>>200さんの見てみました。
>>196さんのお奨めとポリシーは似てるみたいですね。2-CPUで
ハンドシェイク取る機能の作りが厄介そうな気が・・・共有メモリとか、そのメモリの排他制御とか・・・
>>201 やりたいことは、4800のuart、4CHの交通整理(合流・分流・選択・除外・変換)です。
新しくCPU決めてボード起こしなおすと\100ぐらいかかるからできない、ってハード屋さん
言うんですよ。 それで小手先で石だけ替える技がないかなあと・・・
>>202 命令セット見れば思い出すのでマクロは要りません。
FPGAって判りませんが実験用の基板みたいな奴のことですか?
足の変換ボードだけのコスト、CPU+uartチップ(+電源+コネクタ)のコストって考えると
足の変換ってのも・・・あ、それもCADで図面書いて基板屋に外注するとすごいコストになるのかな
>新しくCPU決めてボード起こしなおすと\100ぐらいかかるからできない
(′・ω・`)つ IIIIIIIIII
アゲル
今の知識を持ったまま過去の自分に戻りたいのですが、どんなシステムが必要ですか?
207 :
191:2007/02/04(日) 05:30:33
この業界の人って夜型多いイメージがあるのですが、けっこう早起きが居るんですね。
>>204 アリガト・・・マソなんですよ、実は
>>203 そんなハード屋なんかから仕事貰って自分を落としてどうする。
おまえ、うちの会社に来い。大した給料は出せないがFPGAを一から勉強させてやるぞ。
>>203 1つのメッセージのブロックサイズはどれくらいなの?
せいぜい256バイト程度でしょ?
あと、ハードフローは使ってるの?4800程度ならフローも不要じゃないの?
だったら
>>200のCPUボード使って30万くらいでソフト一式作ってあげるよ
勉強させてくれるなんて いい職場だ。俺が行きたいくらい。30overだけど。
この業界で「勉強する」ってことは、いきなりそのJOBに突っ込まれることですが何か。
それを希望しているのだから嬉しくて仕方ありません
>>203 ハンドシェークって・・・・チップ間の通信は全部ソフトで実現するんだよ
ポートは沢山あるから
片方は完全にスレーブにして、シリアルから1バイト受信する都度 FIFOに入れてパラレルで送信するだけ
逆にデータを送る時もFIFO入れてマスターが全て管理するようにすれば
何の工夫もいらないだろう
⇔データ8bit 双方向
→COM2/3 COM2かCOM3かの種別
→ReqRead バスから読みたい
→ReqWrite バスに書きたい
←ACK バスにデータを書いたか、バスからデータを読んだかしたよ
←NG 今データ無い・又は送信出来ないのにそんなReq送らないでしょ
←COM2-今送れない(送信FIFOフル)
←COM3-今送れない(送信FIFOフル)
←COM2-受信データ有
←COM3-受信データ有
スレーブの処理:ポーリング(1ms程度で見れれば十分)
・ACK/NGを出してる間はReqが落ちるのを待ち、ACK・NGを落とす
・バスはオープンにしてReqが何も無ければ待つ
・ReqWriteがあれば
FIFO-Busyでなければバスから読んでFIFOに書き ACKを立てる
FIFO-BusyならNGを立てる
・ReqReadがあれば
FIFOデータをバスに書いてACKを立てる
FIFOデータが空ならNGを立てる
--- 上で待つと書いてるのは実際にそこで待つのではなくreturnして次のポーリングを待つという事
スレーブには他に 送信用・受信用x2CH分の合計4つのFIFOの処理と
そのステータスをポートで表示するだけ。
だからまあFPGA使っても殆ど同じコードというか、同じ事するだけだね
マスターもスレーブとの通信用に小さいFIFOを4つ持って
NG/ACKを見て、それが落ちてれば送受信FIFOとステータスを見て
送りたければバスに書いてReqWrite
データを読みたいならReqReadするだけ
いちいち早起き早起きうるせーな
死ねよ
おはよう諸君
おはよう
おはよう
223 :
191:2007/02/05(月) 05:55:43
>>219さんおはようございます。ごめんなさい、もう言いません。
>>215-217 ありがとうございます。勉強になるなあ、メモメモ・・・
>>210 ブロックは建前上256、実質150ぐらい。フローも無しです。
OAKSミニ、MPUの仕様のとこ見てみたら、RAMがちょっと少ないですね。ringの他に、
再送用に記憶したり、複数のCHからの情報を合成したりする記憶も要るので。
元のシステムで8KBなのは石が遅い分もあるのですが、せめて4KBぐらい・・・
ってSRAM増設の事例が出てましたね。 ソフト的にやりたいことは全部出てますね。
「汎用ボードでやったら?」ってハード屋さんに言っても、工場の基準とかあるからうんとは
言わなそうです。(けっこうダーティな環境で使われるので、9pinDSUBなんかじゃなくごつい
接続端子がついてます。) 通信周りだけならこんなに安いんだよ、って喚起するのはありかな。
という事で、内蔵RAM8K シリアル2CHの1チップマイコンを2個乗るボードを作ったらいいと思うよ
他に必要なのはMAX232C系のレベル変換だけでしょ
そんなもん、ピン変換の基板自作するコストで作れるでしょ
俺なら片面基板でも作れるけどね
この条件ならいくらでも探せるだろ。
Z80系が好きなら東芝のTMP91シリーズなんてのもあったけど・・・もう廃品種で
今はその上位のTMP900シリーズだもんな
225 :
191:2007/02/05(月) 13:33:00
1チップマイコン+uartチップよりも1チップマイコン2個のほうが安いんですか(*o*)
2CH内蔵のチップ+2CHのuartチップではどうなのでしょう?
Z80は特に好きでもないので、H8系なら楽かなあ程度ですけど。
>>214他
やる気があって高くない給料に納得できるのなら是非私の勤める会社に。
今、来年にはFPGAをばりばり使える(予定の)技術者を募集しています。
今年はC/C++を書きながらのFPGAの勉強になるから楽ではないと思うけど。
なひさんですか?
会社が九州の上のほうだったら飛びつくんだがな
>>225 KC80はROM/RAMを外付けしなければいけない。
このサイズのROM/RAMは保守部品になっていて高いよ
8251もパッケージが結構大きいから値段はそれなりにする
どんな購入ルート持ってるか判らないけど
H8/3687 あたりなら高くても1個1,300円程度
1チップCPU2個の方が安価だと思うよ
UARTはパソコンにもRS232Cが付かなくなったように消えてゆく部品
これをわざわざ採用してしまえば、結局部品調達に苦労するのが見えている
どうしても安価にというならPICあたりを
>>215の方法でUARTとして使うくらいだろうけど
結局複数の部品使うと苦労するよ。
230 :
225:2007/02/05(月) 17:39:45
>>229 ありがとうございます。なるほど、チップの機能ではなくそういう事情で高くなるんですね。
今度ボード起こすときはROMもRAMもuartチップも積まない・・・CPUと端子だけみたいに
しないとコスト出せないのかあ。 スレーブのほうが低機能でよくても、異なるCPU積むより
同じの2個のほうが調達コストとかデバックとか考えたら安くつくんでしょうね。
>>230 余程の価格差がないなら同じ物を二つ積むべし。
特にハード周りの調整コストが段違い。
白けるけどKC80作った人は自殺したと聞いた。
原因は?やっぱり仕事がらみ?
基板上の部品一つが入手出来ないだけで
結局作り直しになるんだから、長期出荷の小ロット品は、部品出来るだけ使わない事だね。
その1チップマイコンが廃品種になる可能性もあるけど、
そうなったら諦められるだろ? というか出来るだけそのチップ使って在庫しておくしかないね。
そういう意味でPSoCには期待して見てたけど、なんか品種がどんどん増えてるからちょっとアレだな。
ROM/RAMサイズはフルスペック共通。品種種別はピン数だけくらいじゃないとな
俺も、シリアルのEE-PROMだけが廃品種になったせいで設計しなおしになったり
(そのEE-PROM 当時 TVチューナー用に使われてて安価だったもんだから)
電子VRが廃品種になっただけで、設計しなおしのコスト回収出来そうにない
売り上げだったもんだから こっちも廃品種にするしかなかったり
今はもうICは1チップマイコンと アナログは358/393だけしか使わないぞと
74HCxxxとかのロジックも使ってしまう事はあるけど、怖いんだよな
だから、トランジスタと、フォトカプラを大量に使う設計に
236 :
デフォルトの名無しさん:2007/02/07(水) 06:47:20
ジェリー・ワインバーグのXX人間学シリーズで今でも役に立ってること:
靴下は全部同じ柄にする-->洗濯したとき合わせるのが楽。ローテーションで平均にへたる。
237 :
225:2007/02/08(木) 07:41:44
M16Cって、H8とぜんぜん違うアーキテクチャのシリーズなんですね。
三菱の石がずっと生き残ってきてるんでしょうか? H8よりは使いにくそうな気がしました。
H8/300はレジスタ型 演算はレジスタ同士が基本 80/86系
M16はアキュムレータ型 演算はアキュムレータとメモリ間 68/65系
M16はH8に比べて品種が少ないのと
自動車分野でも使われてるから、比較的長寿命かなと期待してる
239 :
デフォルトの名無しさん:2007/02/08(木) 20:54:14
あるルネサス代理店の話。
・H8系はROM食うわおそいわで半端。M16系にしたほうがいい。
ほんとなんかねぇ。
M16ってスタローンとかシュワが昔脇に挟んで乱射してたやつみたいな名前だな
M16系はアキュムレータ型でメモリと演算するから
ロード⇒レジスタ同士の演算⇒ストア が必要なH8に比べたら確かに効率的。
だからレジスタが少なくてもコードは組みやすい
レジスタが少ないから命令長も比較的短い
あ、H8にもH8/300だけじゃなうて、
H8/500シリーズってのが昔あって、
これはM16Cと同じようにレジスタとメモリ間で演算が出来た。
同じクロック数なら500シリーズが実際速かった
でもいつの間にか消えてっちゃったね
ただH8/300はレジスタが32bit化されてるけどM16Cはレジスタペアで
RAM空間が16bit以上になると多少面倒(でもM16Cの方が内蔵RAMは豊富なんだよね)
例えばH8だと Cで a++ なんて書いても
1、メモリ⇒レジスタ
2、INC レジスタ
3、レジスタ⇒メモリ
の3命令とアセンブラレベルでなる
M16Cだと inc 命令1つ(3サイクル命令)
243 :
225:2007/02/09(金) 04:02:50
なるほど、そういうアーキテクチャでしたか。H8/500はさんざん使いました。
割り込みとタスク両方からカウンタを触るのに、di/ei しないでいいのが嬉しかったりしました。
M16Cの内蔵メモリは、1K/2Kではありませんか?H8/16bitだと8K/16Kのシリーズがありましたが。
>>240 三菱は兵器作ってるんで、案外意識してたりして・・・
244 :
225:2007/02/09(金) 04:16:58
ごめんなさい、M16C/26Aを見てました。28A、29AシリーズならRAM=8K/12Kがありました。
ルネサスのコンパイラはタダですよね?H8のコンパイラはライフボートのよりちょっとアホだった
覚えがありますけど。
H8S/2649はUART4チャンネル持ってるし
M32CシリーズならUART5チャンネル持ってるけど、
これ1個ってのは誰も勧めないなんだな
246 :
225:2007/02/09(金) 16:55:35
そ〜んなに上位のほうまで(^o^)見ませんでした。 さすがに石が高すぎるでしょう。
それより、前々スレで教えてもらった、タイマ端子でuartエミュレートさせるのを1CH分やる
手法のほうが、全体では安く上がるとおもいます。これはお試しコード書いてみていける、
とおもいました。4CHのうち1CHだけドライバ層を書き換えるだけでアプリは同じですみます。
あとはハード屋さんがいつボード起こす気になってくれるかなんですよね。
247 :
デフォルトの名無しさん:2007/02/14(水) 06:13:14
SHなんかだとリアルタイムクロックが組み込まれてたりする機種もありますね。
それって当然ですけど天文時計とはずれてきますよね?
だからソフトでときどき書き込んでやる必要がある<--これってパソコンでも原則おなじですよね?
ミサイルがJJYの信号拾って時刻同期してたら間に合わないんだよね
249 :
デフォルトの名無しさん:2007/02/17(土) 02:53:39
JJYが判らないけど、ミサイルは時刻同期なんかしないんジャマイカ。
起動時からの慣性誘導+GPS情報による補正で地球上のたいていの所には行けるでしょ。
>>249 GPSって時刻情報も含むんジャマイカ。
>>250 なんの為に正確な時刻に同期する必要が?
測定の殆どは時間刻みの正確さに頼ってる事がほとんどだからじゃないの?
時間刻みと時間とは関係ないけど、離れた2点で時間刻みを正確に得るには
時間が正確なのが一番簡単でしょ?
利用料金は米国債で支払われている。買わないと精度が落ちる。
意味分からんなw
利用権買ったオマケに米国債が付いてくるなら
一粒で二度おいしいじゃんw
>>253 いや、そもそもCPUのタイマじゃ間に合わんほど
長く飛んでるもんなのか、ミサイルって?
相対的な時間が十分に拾えるなら時刻情報はいらんだろ?
3分もあれば火星から月まで来るようなやつら相手に
GPSもくそもないわな
保守
260 :
デフォルトの名無しさん:2007/03/02(金) 06:56:36
移転で見失ってたわりに伸びてなかった
>>235 俺のところもこないだそれに近い事があったな。
まあコンパチ製品があったからよかったが。
うほ、1ヶ月前のレスにレスしてもうた。
ここ人いねーなー。
264 :
デフォルトの名無しさん:2007/03/10(土) 06:44:51
ところで、clibには8bit*8bit-->8bit とか、16bit*16bit-->16bit という掛け算があるんだけど、
8*8-->16 16*16-->32 という掛け算が無いんですよね。なので16*16で32bitの結果を得たい
とき、どちらもlongにキャストして掛け算するのですが、当然重いです。
なんで標準装備になってないんでしょうね・・・
まあ、組込系なら、標準で無くてもその環境用のライブラリにあるか
インラインアセンブラとかで書くから必要無いし・・・
それにDSPスタイルのように、固定小数点でも色々だし
266 :
デフォルトの名無しさん:2007/03/11(日) 21:39:48
わりこみすまそ
ディジタル制御について詰まっています。
その手の本で机上の計算方法があるのですが、実際にプログラムに展開するまでがわからんのです。
よい道標はないもんでしょうか。
そんな曖昧なこといわれてもアドバイスも何もできんわ
本読んで具体的な質問もできないくらいならあきらめれ
判らなくても、先が見えなくても、とりあえず手を出すタイプじゃないと、厳しいのは確かだな。
そんなことが許されるのはむしろぬるい業界だからだろ。
こういう勘違いしてる奴が多くて困るよ。
やむしろ、机上値と実測値がかけ離れてる世界だからだろ。
どうしても押し込み型の作り方になるのは。
271 :
デフォルトの名無しさん:2007/03/12(月) 01:03:54
>>267,268
人いないかと思ったがレスありがと
>>267 具体例のなかったことについてはすまぬ
例えば、伝達方程式を導くことができたなら、マイコンなりに実装するのは
その伝達関数のz変換を実装することになるのか?
あきらめるわけにはいかんのでヒントをオクレ
文献を読んだけど、ディジタル制御の本で関数導出からデジタル制御の実装まで
書いた本って意外とないのね。
272 :
デフォルトの名無しさん:2007/03/12(月) 06:01:55
入力がどんな量で、フィード(バック?フォワード?)制御をどのようにやりたくて、
しゅつりょくはどんな量なのか、書いちゃまずいの?そういうの書かなきゃ話すすまないじゃん。
Z変換の求め方が判らないのか?
Z変換の結果まで求まっていて、それをどう書けばいいのか判らないのか?
両方
276 :
デフォルトの名無しさん:2007/03/12(月) 12:58:11
ITRON/T-Engineに未来はありますか?
Tの方は正直ビミョーだけど、ITRONはuITRONが普通にあるから残っていくんじゃない?
携帯もITRONからLinuxしちゃったけど、大丈夫?
FOMAもitron+CEにするという噂があるが
>>278 本来ITRONはGUIなんぞ載せようがない
小型のTargetに強みがあるわけで、
携帯に使われてたことの方が異質
>>270 いや、押し込むにしといたって、
あたりぐらいは付けて設計しないとエライ目にあうぞ
>>272 入力がどんな量っていうのは、デジタル制御においてはハードの検出系のA/D変換の結果と考えていますが
考え方が違うのですかね。出力はPWMってことではだめですか?
>>275 書籍紹介ありがたう
参考にさせてもらいます
>>282 ピントがずれてる。要するに何をやりたいのか全く分からん。
フォーカス制御ですか? 結構面倒なんですよね。
285 :
デフォルトの名無しさん:2007/03/13(火) 05:58:05
量の制御というのは判った。その量が実は「何を表すもの」なのかは、言語で表現すれば
別分野の人にも通じるとおもうけど、きっと言っちゃいけない大事なことなのね。
まあ、何bitのA/D→変換→何bitのPWM、変換の式や時系列はこれこれにしたいのだが、
この部分がわからんぐらいに書いてくれないと伝わらないよね。
286 :
275:2007/03/13(火) 07:04:41
ごめん
>>271を見て勝手に信号処理系の話と勘違いしちゃったよ。
機械制御系の話なんだね。
機械制御系だと制御系の応答特性がはっきり判ってる事は滅多にない
それが判らない以上、Z変換とかの理論は、まあ机上の空論みたいなもんだ
実用的にはPID制御に毛を生やしておけば、まあ普通は十分なんじゃないの
287 :
275:2007/03/13(火) 07:15:49
なんかPIDが簡単みたいで、書き方が悪かったから補足すると
信号処理なんかと違って、制御は、特性が刻々と変化してゆく事が多い。
Z変換した各係数が変化してゆくイメージだね。
だから、逆に古典理論そのままに、パラメータを意識しすぎると巧くゆかない。
そこにノウハウが、やっぱり多少は必要で、まあ簡単な話じゃないよ
>>制御系の応答特性がはっきり判ってる事は滅多にない
そーなんですか!
制御系の研究してる院生なんですが、現実とはなんとも恐ろしい世界ですね。
しかし、それならH無限大なり適当な適応制御なりのロバスト性の強いものにした方が
いいんじゃないの、とか思っちゃうけどそうでもないんですね。
動的に変わっちゃうなら、いまの適応制御じゃどうしようもなさそうですが。
>>288 ま、相手の電源が切れちまってるとかなw
>>289 そこまで含めたロバストな制御器作ろうと思ったら
(例え設計可能でも)ロクな性能でませんなw
それはスーパバイザーがなんとかする話ではでは。
もしかして、それでも大丈夫なほどPIDは頑強だとか…
291 :
266:2007/03/13(火) 21:32:32
みなさまありがとうございます。
情報出し惜しみしてすんません。
電圧レギュレータを作成しようとしています。電圧値をA/Dにて取り込みPWM制御(キャリア:20kHz)で出力電圧の安定化を図りたいと思います。
現状はPID制御である程度特性が出ていますが、現物合わせ色が強いのでより良い方法について探していました。
書きっぷりから判るように、制御工学は学んでいません(´Д⊂グスン
>>291 その程度のフィードバック制御なら、
理屈どおりに動かない現物への調整や
刻々と変わる環境条件に合わせこむための
現物あわせがメインになるんじゃあるまいか?
293 :
デフォルトの名無しさん:2007/03/14(水) 05:09:50
電源装置にはその手の制御器ふつうについてますよね。百万分の1Vとか。
マイコンじゃなくて抵抗とコンデンサの奴とかもあるし。何でまた自作を?
学生なんじゃね?
電流は測ってないの?
電圧は入力側と出力側のどっち? あるいは両方?
出力値からのフィードバックだけなら、単に電源IC入れた方がいいわな。
あとLの容量は足りてるの?スイッチング素子の出力がしっかりLに落ちてる?
スレのタイトルに乗っ取った質問してるんだから正面から答えてやればいいだけだし、
それができないなら沈黙すべきだろ。
俺はよくわからんから質問内容に関しては沈黙するよ。
制御理論とか制御システムは、
本来 情報システム板
http://science6.2ch.net/infosys/ で扱うべき話題なんだろうけど、あっちはダメだからコッチに来るんだろうが
ここは、 汎用系・オープン系・制御系(組込系) というように別けた場合の制御系のプログラミングについての話題
を扱うスレであって
制御理論を扱うスレではないんだよ。
多少は判る人もいるから相手はしてくれるだろうけど、チョッと学生さんの卒論レベルだと
?
>>299 そこはもうなんつうかアレな場所になってますな
なんかこの前 電気板のDSPスレで、DSPでスイッチング電源てな話を出してた人と同じ人? あるいは同じ学校か?
>>288 まあ、温度制御くらいなら内容量がゆっくり変化する程度だろうけど
それでも相転移するような内容物なら急激な特性変化はあるだろうし
機械物は、そもそも動かす事で負荷も変わるわけで
そういう変化を含めての使える範囲で使うという事でしょ
>>271に伝達方程式をマイコンなりに実装って書いてるから
あながちスレ違いでもない気がするし、
>>299の情報システム板も何か違うと思う。
いや、質問してくれるのはいいんだけど、スレのメンバー的にはズレているから、
回答を得たいならそれなりに情報出せって事さ。
それなりに情報出て具体的な話になれば、エンジニアが多いからまあね。
でも、どうしたらいいの? だけで質問されてもこっちも頓珍漢な話しかできないからお互い気まずい。
そういえば三峯徹画伯も本業は制御系だったらしいな。
YRPに何度か行ったって書いてたから
308 :
デフォルトの名無しさん:2007/03/18(日) 16:01:38
H8/2329のマニュアル読んでいるところです。各機能の所を拾い読みすると、制御レジスタの
アドレスは「下16bitのみ」で書いてあって、はじめにとか概要の所には上位アドレスはこれだ、
とか書いてないみたいなのです。H8/30xxシリーズでは制御レジスタアドレスはFFFFFFxxに
定義すればよかったのですが、こちらでも同様でいいのでしょうか? それとも00FFFFxx?
309 :
308:2007/03/18(日) 16:18:00
お騒がせしてすいません。「MCU動作モード」の章に書かれていました。00FFFFxxでした。
>>307 マジか。
マ板の携帯スレに投下してきてくれw
311 :
308:2007/03/22(木) 04:26:33
H8/2329と300Hシリーズは、コアアーキテクチャは同じでも細部が違うのね。ライフボートの300H用の
コンパイラ使ってみたら、@aa:8のアドレッシングをポートI/Oに使うところで対象アドレス
空間が違うから冗長な命令が出てしまった。ルネサスのコンパイラ+へう+JTAGで\20ぐらい・・・orz
ルネサスのコンパイラにはsfrプリミティブ無いからポートアクセスの書式めんどうだし。
予算の問題があるんだったら、GCC+Binutilsを飼い慣らしてみたら?
>>311 >sfrプリミティブ無い
そんなことはないでしょ?
314 :
308:2007/03/23(金) 06:30:22
お金はお客さんのなんですが、ムダ金使わせるみたいで・・・
具体的にはCD借りてインスコしてから判りますが、ルネサスのH8/3000とSHの使ったときには
無かったので、無いだろうと思ってます。 ライフボートのsfrはこんな感じで使えました↓
sfr SMR0 = 0xFFFFFFxx; /* I/Oレジスタのアドレス空間 */
SMR0.7 = 0; /* RXRDYビットをオフる。 */
ルネサスだとSMR0をビットフィールドを持つ構造体に定義して、(*(char*))0xFFFFxx番地に
写像して、その構造体.bitフィールド=0; とか書くことになります。う〜めんどくさ。
SMR0.7 なの?
SMR0.bit7 とか SMR0.b7 なら代用が出来るけど、そんな記法使うと移植性がなくなるじゃん
317 :
308:2007/03/23(金) 07:38:16
sfr自体がANSIではないから移植性はありません。SMR0.bit7と書くには#define bit7 7 が
必要で、SMR0.7に翻訳されます。移植性と言う点では同じだとおもいます。
もう長いことやってるので、年金もらうまで辞めません(w
最近の、使いもしないdefine何百行も書くやり方はノイズを埋め込んでいるようで嫌いです。
パソコン上で書いたコードを検証したりするのに、不便じゃないの?
すでにご老人の域に達してるね。
できない理由がほしいだけみたいだね。
#define bit7 7
をやるなら、struct/unionで型作って
#define SMR0 ((*(型*))0xFFFFxx)
でいいじゃない。
sfr の定義から 一括置換できるでしょ
エラーがいっぱい出るからやりたくないのが本音だよ。
>>314 ルネサスはWebで配布してるよ、sfrの定義
defineの山でノイズだらけだけど
職業プログラマほえる...
325 :
314:2007/03/23(金) 15:00:42
>>323 おお、配布されてるのですか。それならノイズ多くてもそのファイルの名前使うべきですね。
ライフボートのコンパイラではそういう定義をみんな自分で作ってたので、最小限の名前しか
つけなかったです。
ルネサスので、ポートに対し bclr/bset を吐かせるのに、PORT.bitフィールド=0/1; なら出ると
おもいますが、PORT &= 0x7F; PORT |= 0x80; でも bclr/bset が出ますか?
もらったら試してみようと思っていますが、ご存知の方がいらしたら教えてほしいです。
ルネサスの場合、
PORT.byte = 0x7f;
PORT.bit.b0 = 0;
こんな風に書く
っていうか、普通にCの仕様の範囲内でやってる
bclr/bsetは、ルネサスのコンパイラならやってくれるらしいと、
中の人が書いてる本にあった
アセンブラで胃潰瘍になれよてめえら
早く春休みおわんねーかなー
329 :
314:2007/03/24(土) 04:21:56
ASMぐらいじゃ胃潰瘍になんてなりません。むしろルンルンになっちゃいます(^o^)
H8は「このbitが1であることを確認したあと読み取ってからゼロを書いてね」っていう
ポートが多いですよね。そういうときバイト書き込みだと冗長になりますね。
if( PORT & 0x80 ) {
PORT = PORT & 0x7F;
} なんて流れになります。他のbitを変更しないために読み取る所が冗長。
1bitのフィールドに0/1を代入すれば bclr/bset が出るのは推測つくのですが、
1bitのマスク操作で出るかどうかはコンパイラの丁寧さ次第なんですよね。
AduCのコンパイラはチビ助の石にしては丁寧なコードを吐いてくれましたが、
ルネサスのはあんまし期待できそうにないです・・・
>>329 H8のビット操作命令はRead-Modify-Writeだから明示的に読み出す必要は無いんじゃないか?
バイト書き込みにしたって、マスクするときに読んでるんだからわざわざチェックする必要はない。
PORT &= 0x7F;
は、
mov.b @PORT:8, r0l
and.b H'7F, r0l
mov.b r0l, @PORT:8
または
bclr #7, @PORT:8
となるはず。
# 関係ないけど、h8300-{hms,elf}-gccはbclr/bsetを吐いてくれない・・・
普段使ってる範囲ではビット命令を吐くようだよ
気になるなら64K制限があるのは無料だから試してみればいいじゃない
スレッド使いは、スレッドを使わない。分かるか?
誤爆?
ロバストな制御器を作らなければならなくなったんです。
H∞制御を勉強しようと思うのですがよい参考書があったら教えてください。
現代制御は学生時代に勉強しましたが、状態空間表現には慣れましたが極配置法くらいしかやってません。
いきなりH∞はハードル高すぎるでしょうか。
次から、スレ名を 組込なら俺に聞いてもいいぜ という事にしませんか?
>>335 確かに。俺なんか制御系ってきくとPCにPIOボードを刺してサーボモータ制御したり
シーケンサをラダーでプログラミングしたりってことを思い浮かべてしまう。
337 :
334:2007/03/25(日) 16:19:33
すまん漏れがそれっす。
338 :
334:2007/03/25(日) 16:32:54
他板行きます。汚してすいませんでした。
他の板といっても、ドコに行くか難しいのは確か。
ココが一番マシだとは思うのだけど、実務家はH∞制御なんて興味無いかもしれないな
組み込みも制御の一部だろ。
仲間に入れてやれよ。
341 :
334:2007/03/25(日) 17:19:10
>>339 確かに…
やっぱりここに居ようかな。
漏れはどっちかっていうと実務に応用できる形で勉強していきたいです。
なんでH∞なんかに興味を持ったかというと、
現代制御を使ってみてシミュレーションではうまく制御できるのに実装するとうまくいかなくなるという状況に多く遭遇したからです。
実装するとうまくいかなくなる以前にシミュレーションでも誤差を含めて(物理パラメータを数%狂わせるとか)やるとうまくいかなくなります。
極配置法や最適制御ではなかなか実現に限界があると感じました。
そこでH∞制御ではどうか、とういうことなのです。
H∞で倒立振り子をコントロールする事を考えてみよう
振り子の角度によって応答特性が変わってしまうだろ?
現実の制御はもっと複雑なのを相手にしなくちゃいけないから、万能薬は難しいさ
343 :
334:2007/03/25(日) 18:01:07
万能薬は難しい、まさにその通りだと思います。
全てに適するものは全てに最適ではないという言葉を聞いたことがあります。
しかし、ある程度考えられるパラメータの変動、たとえば、倒立振り子の例だと、物理定数(たとえば慣性モーメント)はわかっているがその定数は最大で5%の誤差が含まれているというような場合、
その5%の中でのワーストケースに対して制御器を設計するというようなことは出来るのではないでしょうか。
ワーストケースに対して制御器が設計できれば少なくともその5%の中でパラメータの変動があったとしても制御できるということにはならないでしょうか。
そのあたりの定量的な話を勉強してみたいんです。
倒立振り子は、上と下では重力はゼロ 90度の位置で最大になるから
これを誤差と見るのかどうか
345 :
334:2007/03/25(日) 18:09:59
>>344 非線形性の話と制御対象のパラメータの誤差の話がありますが、いま漏れが困ってるのはどっちかっていうと制御対象のパラメータの誤差の方です。
348 :
334:2007/03/26(月) 22:29:24
>>346>>347 情報ありがとうございます。
教科書としても結構使われているみたいですね。
確かにモデリングの問題はあるかもしれないです。
制御対象のパラメータが正確に同定出来れば問題ないのですが、必要なパラメータの間接的な同定しか出来ないので、誤差が入り込む余地を増やしてしまっています。
直接同定できる、あるいは既知のパラメータをうまく使ったモデリングが出来ればよさそうな感じもします。
>>349 で、そこの回路図を参考に作ったいかなる問題も、当局は一切関知いたしませんってか?
351 :
314:2007/03/30(金) 16:19:58
お試し版のコンパイラ使ってみました。CPU=H8S/2000シリーズ、16MBで、
PORT.byte &= 0x7F;ではやはり、mov, and movが、
PORT.BIT.b0 = 0; ではbclr #0,@aa:8 が出ました。
生成されたI/Oのヘッダでは、例えば SCI0.SCR.BIT.TEIE = 1; みたいな書き方になって、
叩く数は多いがコメント不要な記述性が得られますね。
アドレスのイミディエイト値が:24ではなく:32で出るのが気になりますが、あとはふつうでした。
352 :
334:2007/03/30(金) 23:49:52
>>346氏が紹介してくれた『MATLABによる制御系設計 』と、立ち読みしてみて分かりやすかった『制御系設計 H∞制御とその応用』という本を買いました。
解を求めるのにMATLABやSCILABなどのツールの力を借りればなんとか漏れでも使えそうな感じです。
353 :
266:2007/04/06(金) 23:22:13
問題の投げっぱなしジャーマンはあれなので
事後報告です。漏れのわからなかったこと言うのは伝達関数のコードへの展開で
関数hz=yz/xzとしたときにyz=hz*xzにばらしてZ変換を差分方程式でy[k]=x[k]...と展開しなおすことがわからなかったです。
伝達関数導出にはscilabが非常にわかりやすかったですな。アナログフィルタをモデル化して伝達関数を
導出し実装できたときには失禁するかと思った。
電圧レギュレータは、理想をモデル化してもノイズ、検出遅れ、分解能落ち、計算落ち等の問題よりうまくできてないです。どちらかというとデジタルフィルタやハードの見直しの方が効果がでかかった。
ありがたう
よかったね。できればどんな石でどんな言語で実装したか書いてくれると嬉しいな。
H8/2328/29のソフトを原材料に、2378での開発をすることになりました。コアは同じですよね。
マニュアルを読み比べて、クロックのMAXが違うこと、RAMの空間が違うこと、程度は
わかりましたが、他に知っとくべきポイントなど、ご存知の方ご指摘お願いします。
内蔵I/Oのレジスタアドレスは同じ、ROMもサイズは違うが0〜と認識してます。
低いんじゃないかと思うよ。
そこまでピンポイント的に一致する知識を持ってる奴がこのスレを見る可能性。
ひょっとしたら日本に数十人しかいないかもしれないのに。
357 :
355:2007/04/15(日) 16:53:22
あはは・・・そりゃそうですね。でもこのスレで過去に、「H8/2xxxではこうだったぞ」とか
けっこうレス貰ったのですよ。なので、だめもとでも・・・と。
300シリーズの頃はシンプルでしたねえ。2000,3000シリーズになってからなんかややこしい。
>>357 これからは君がレスしてあげる側にまわらなきゃ
そいつ利用することしか考えてないから無駄だよ
360 :
355:2007/04/17(火) 05:36:57
アセンブラスレではよく答えてますよ。
>>352 禿しく今更だけど、CiNii辺りで適用事例の論文探すのもいいかもしらない
362 :
デフォルトの名無しさん:2007/04/20(金) 03:30:37
ルネサスのコンパイラ、H8/2000シリーズです
void func(unsigned long f) {
unsigned long wk;
・・・
wk = 937;
wk <<= 7; // (937<<7)=0x1D480
wk += (32-f%9); // これならADD.L #H'0001D480,ER2が出る
これの展開は、下記になる。
SUB.L ER2,ER2
MOV.B #H'20:8,R2L
MOV.L ER4,ER0
SUB.L ER1,ER1
MOV.B #9:8,R1L
JSR @$DIVUL$3:24
SUB.L ER1,ER2
ADD.L #H'0001D480,ER2<------この値(937<<7)を足す命令が出る
MOV.L ER2,ER1
363 :
デフォルトの名無しさん:2007/04/20(金) 03:33:44
ところが上の3行の式を、意味が同じだからと
wk = (937<<7)+(32-f%9); と書くと、展開が下記になる。
SUB.L ER2,ER2
MOV.B #H'20:8,R2L
MOV.L ER4,ER0
SUB.L ER1,ER1
MOV.B #9:8,R1L
JSR @$DIVUL$3:24
SUB.L ER1,ER2
SUB.L #H'00002B80,ER2<--------この値は(20000h−1D480)だが、ER2は
MOV.L ER2,ER1 FFFFD4xxになってしまう。
364 :
362:2007/04/20(金) 03:36:59
もともとは
>>363の書き方をしていて、lst見ててなんか変、と思い、いろいろ書き換えてみて
>>362を得ました。ルネサスのコンパイラはいまいち信用ならないと思ってましたが・・・
こんなのあるといちいちlstファイル読まないと不安でたまりませんorz
>>364 おまい、右辺式中の型が左辺式の型と同じだと思ってる厨房か?
366 :
362:2007/04/20(金) 04:25:52
型変換のとこの説明見て、左辺の型に合わされる、って程度しか理解してません。
(937<<7)が16bitで評価されるよ、っていうことですか?
367 :
362:2007/04/20(金) 04:45:06
ライフボートのでやっても同じだった・・・俺何を誤解してんだろー???
368 :
362:2007/04/20(金) 05:07:33
ライフボートの m = (937<<7)+(32-f%9);
MOV.L #119968,ER1
MOV.L ER0,ER6
MOV.L #9,ER5
JSR @?UL_MOD_L03
SUB.L ER6,ER1
119968(=(937<<7)+32)からf%9を引くコードになってますよね?
369 :
362:2007/04/20(金) 05:15:21
wk = 119968-f%9; と書くと
MOV.L #H'0001D4A0,ER2
SUB.L ER1,ER1
MOV.B #9:8,R1L
JSR @$DIVUL$3:24
SUB.L ER1,ER2
MOV.L ER2,ER1
ってことはやっぱり、(937<<7)の評価がライフボートとルネサスで違うみたい
370 :
362:2007/04/20(金) 05:46:26
>>365 K&R読み返してみましたが、右辺式・左辺式という定義は出てませんでした。
「左辺値は単独の変数でなければならない」はありましたけど。
これかな、と思える記述は「定数はintである」でした。これだとライフボートのほうが
間違いということになってしまいそう。
C言語やCコンパイラはそのあたりいいかげんだから
32bit値を使うような時は 数値にL つけるなり、型変換するなりやっとけよ
定数はたいてい signed int 型とみなされるんじゃねえかな。
たいていじゃなくて、 U や L つけなきゃ そうに決まってるだろ
374 :
362:2007/04/20(金) 13:08:57
K&RでもUやLはつけるように推奨してますね。でも今回の場合は、(937<<7)の時点で負に
なっちゃってるので、(unsigned long)のキャストつけても遅かりしでした。
今回の場合わって・・・・今回の場合こそだろ 937<<7 はそもそも unsigned でも桁溢れしてる
やたら、コンパイラ疑うやつって、こういうやつ多いよな・・・
質問です。文字定数をunsignedとして扱うにはどう表記すればいいでしょうか?
378 :
362:2007/04/21(土) 05:53:10
俺みたいな人がほかにもいたな(w クミコ系のcはcharはデフォでunsignedになるのが多いけど。
(unsigned)'a' 見たいな表記じゃだめなの? 日本語だったら16bitだから(unsigned short)'あ'
とか書けば、shiftJISなら0x82a0になるとおもう。
0xa082になる処理系もあるから困る。
#組み込み用じゃないけど。
SHCで、GCCにおける-fchar-unsignedと同等な指定ができず
困ってたことがある。誰か教えてクレ。
文字定数はキャスト以外に明示的なunsignedの指定が出来ないってことでOK?
'ア'u とか出来るのかと思ってた
#define して使え。
>>381 つーか、何でそんな面倒なことをしたがるのか?
つらっとHEXで書いちまえば良かろうに
定数は#defineしろってのは、また別の次元の話だが
384 :
デフォルトの名無しさん:2007/04/22(日) 05:46:48
左シフトにArithmeticとLogicalとあるのはなんで?何か違うの?
ニモニックには両方あることもあるが、やることは一緒。
>>384,
>>385 CPUにもよるが、普通は
算術シフトは、最上位ビットを保持する。(符号反転しないよう)
論理シフトは、単に右の値で埋められる。
左シフトだって書いてあるんだけど、目に入らなかったのかな
えーと、>386によると「論理シフトは単に右の値云々」とあるから、
0x40を8ビットレジスタで1ビット左シフトした場合に算術シフトは0x00になって
論理シフトは0x80になると言っているようだね。
>>387 という訳で、左シフトなのは目に入っているんでしょう。
>385はそういう左シフトを知らないのだとして、>386にはそういうCPUの具体例を挙げて欲しいな。
くくく、脳内論理反転してんじゃんwww
391 :
デフォルトの名無しさん:2007/04/24(火) 09:10:51
H8/2000シリーズで、ER5,ER6,R4を使ってメモリ転送するのと、DMA使ってメモリ転送するのと
どっちが速いんですか? 何KBぐらいで逆転、とかありますか?
>>391 eepmov?
その昔計算した記憶があるが…BSCの設定とかも絡むからなあ。
まあKByte単位ならDMACの方が速い。
>>391 DMACへの設定分のオーバーヘッドを考慮すれば、だいたいの目安は見積もれるよ。
キロバイト単位の転送なら、DMA圧勝。
でも、ハードウェアのDMAへの対応方法によるから、一概に言えないのが難だよね。
あと懸案としては、ブロック転送が割り込み応答を悪化させないかってところ。
H8SのEEPMOVは割り込み受け付けるんだっけ?
言うまでもなくデバイス<->メモリだったらDMACを使うべし。
>>394 eepmov.wは受け付けたような。なんか注意事項があったような気もするが。
そういやDTCなんてのも付いてなかったっけ?
396 :
394:2007/04/25(水) 04:42:35
>キロバイト単位の転送なら、DMA圧勝。
ありがとうございます。そういうの聞きたかったんです。
内蔵RAM上でならノーウェイトでしょうから、話は簡単ですよね。
誰かに「DMA動作中はDMAがバス取っちゃうから、転送中CPUが別のことできる訳ではない」
と聞いたことあるんですが、それだとDMA開始したら終了までフラグ見てループするしかない
のでしょうか? (割り込みで終了を受けても、別の処理が動くわけではないなら)
DTCの章も読んだのですが、DMAとどう違うの?/何のためにこれがついてるの? など
???がいっぱいです。
397 :
394:2007/04/25(水) 04:52:51
eepmov.bは割込み不可、eepmov.wは割込み受付可です。(珍しくこれは知ってるw)
eepmov.w
mov.w R4,R4
bne eepmovの番地 というコードを見たことがあります。割り込むといったん抜けるみたい。
ルネサスcで eepmovw(buf,(char*)0x800000,512); と書くと、
MOV.L #_buf,ER6
MOV.L #H'00800000,ER5
MOV.W #H'0200:16,R4
EEPMOV.W は出るのですが、
while( R4 ); とか書けませんよね。 こういうのどうするのかな。
>>396 メモリtoメモリのバースト転送の場合、H8じゃ事実上転送終了まで何もできませんな。
SHみたくキャッシュ乗っかってるのならまだしも。
作法としては、メモリ<->デバイスのようなサイクルスチール転送と同様に、ちゃんと終了を待ってください。
バースト転送でも割り込みは入りますが、割り込みじゃなくその場でループして
終了を見張っても問題あるまい。
以上、データシート読まずにカキコ。
H8Sは扱ったことなかったりして。
399 :
394:2007/04/25(水) 05:46:27
>>398 ありがとうございます。やっぱりそうなりますか。
マニュアルに「eepmovと比べてこの位速いよ」とか書いててくれれば親切なのに・・・
400 :
デフォルトの名無しさん:2007/04/27(金) 03:17:17
H8/2328 H8/2378 のマニュアル見てると、命令セットの所にクロック数が書いてないのです。
nopとかレジスタ命令が1クロックなのは想像つきますが、bset/bclr port:8 の命令は
何クロックだと思えばいいのでしょうか? 内蔵fROM動作の場合で考えたのですが、
「基本動作タイミング」の章で、内蔵ROMは1ステートアクセス、内蔵周辺モジュールは2ステート
アクセス、と書かれていました。この記述から、
bld #0,R0L 1ワード命令のアクセス1ステート+実行1ステート
bst @FFFFxx:8 2ワード命令のアクセス2ステート+実行2ステート
と理解してよいでしょうか? 実行の所は4ステートと考えるべき??
401 :
デフォルトの名無しさん:2007/05/04(金) 05:20:21
H8/16bitシリーズで、R4L=0で eepmov.b ってやったらどうなりますか?
マニュアルには転送が起こらないような書き方してありますが、
256バイトやるんじゃないかと思うんですけど。
>>400-401 使ったことがある奴がたまたま見てれば答えるかもしれんが
基本的にここはルネサスのユーザーサポートじゃねぇんだ
そんなこたぁ、サポートに聞け
>>402 使ったことがある奴がたまたま見て答えるんだよ 。
知らなきゃ黙っとけ
しかし、その質問が出てるままだと皆遠慮して話が出来ない。
H8はHewにソフトエミュレータが入ってるだろうから、試せばいいと思うんだが
405 :
デフォルトの名無しさん:2007/05/06(日) 12:28:12
406 :
401:2007/05/06(日) 16:09:17
あ!
>>404の手があったかと思って、お試しmainを書いてビルドはできましたが、
へうがデバックモードになってくれなくて、どたばたしてます。とりあえず、私のはスルーしてください
8085A2で、AND/OR/XOR命令を実行後、CYは不変/ゼロになる のどちらでしょうか?
データシートぐらい見ろよ。
あ、すいません。沖電気のHPにデータブックがあって落としたんですけど、それの命令セット
のとこには書いてなかったんですよ。昔会社にあった奴には載ってた覚えがあるんですけど、
もう忘れてるし。論理演算ではCYが不変な石が多いけど、たしか8085は違うんじゃ?
って、覚えてる人いたらレスください。
Cは変わらんかったような気がするなあ。
Z80あたりの資料をあたれば何かわからんか?
違うのはSIM/RIMだけだろう。
川崎80のインストラクションセットはありました。それによると論理演算でCYはゼロになるから、
8085もそうだと思われます。私、探し方がへたなんですね。ヒントくださってありがとうございます。
412 :
デフォルトの名無しさん:2007/05/14(月) 04:58:31
いつもの3MHzの8085の者です。linkMAPを見てふしぎに思ってたことがありました。
globalなデータの最後の番地+そのサイズよりも DATASEG = 8000-8ED6 (0ED7) の行で
示される範囲がいつも大きかったのです。 static がglobalの後ろに置かれるのも知ってます。
今回チューニングの必要があって、乗算も除算もsprintfもstrxxxも使わないコードを書いた所、
見事にRAMの最終と変数の末尾が一致しました。ということはclibでstaticを使ってる奴が居る
らしいです。石のアーキテクチャ上、stackを使うと遅くなるのでしょうがないのでしょうね。
strtokとかstatic必要な関数があるからじゃないのかな
sprintf()も内部に静的領域を持っている可能性が高い。
time.hにもstrtok()のように明示的に内部に静的領域を持っている関数が多い。
内部に静的領域ならまだいいよ。qsort使おうと思ったら、変数が初期値持ってるらしく、
初期値のセクションがないぞとか怒られたことある。
まあそんな無駄な調査が嫌で、CPU毎に俺様ライブラリ作ってるわけだが、
俺様は出て行ってくれw
418 :
デフォルトの名無しさん:2007/05/18(金) 04:05:20
ルネサスH8/16bitシリーズで、引数(R0L)のbitを2つずつ並べた16bitにしてワードで返す関数
書こうとおもったら、トンデモコードを吐かれてしまった。BLDとBSTだけでいいのに、こんなの:
word.BIT.BD = byte.BIT.B6;
SUB.B R1H,R1H
BLD.B #6,R1L
BST.B #0,R1H
MOV.B R1H,R2L
BLD.B #0,R2L
BST.B #5,R0H
BLDしたbitをゼロのバイトのLSBに入れて、そのバイトを別のバイトに移して、そのLSBから
BLDして、目的の位置へBSTしてるの。もうね、お前アホかと・・・
結局R0上だけで移すASM書きました。BLD,BST,BSTが8回。表引きのが実行速いのは
判りますが、0xXXXXを256個書くのもめんどう<--こっちも用意しておいたほうがいいかも。
その程度だとトンデモコードとは言えないな
サイズの変更を伴っているから、最適化が巧く働いていないんだろ
ビットフィールドは、いったんその型に変換しなくちゃいけないから
そんなものだろ
420 :
デフォルトの名無しさん:2007/05/18(金) 12:08:02
でも、ソースもディスティネーションも1ビットのフィールドなんですよ。あんまりだ〜(x_x)
ライフボートのなら sfrp.13 = sfr.6; ですんなりいくのに・・・ぶつぶつ。
その word と bit の構造体を晒してみて。 実験してみたいから
422 :
デフォルトの名無しさん:2007/05/19(土) 05:35:19
typedef union { // BYTEとBIT共用体
unsigned char BYTE; /* Byte Access */
struct { /* Bit Access */
unsigned char B7:1; /* Bit 7 */
unsigned char B6:1; /* Bit 6 */
unsigned char B5:1; /* Bit 5 */
unsigned char B4:1; /* Bit 4 */
unsigned char B3:1; /* Bit 3 */
unsigned char B2:1; /* Bit 2 */
unsigned char B1:1; /* Bit 1 */
unsigned char B0:1; /* Bit 0 */
} BIT;
} t_8bits;
423 :
デフォルトの名無しさん:2007/05/19(土) 05:37:46
typedef union { // WORDとBIT共用体
unsigned char WORD; /* Word Access */
struct { /* Bit Access */
unsigned char BF:1;
unsigned char BE:1;
unsigned char BD:1;
unsigned char BC:1;
unsigned char BB:1;
unsigned char BA:1;
unsigned char B9:1;
unsigned char B8:1;
unsigned char B7:1;
unsigned char B6:1;
unsigned char B5:1;
unsigned char B4:1;
unsigned char B3:1;
unsigned char B2:1;
unsigned char B1:1;
unsigned char B0:1;
} BIT;
} t_16bits;
424 :
デフォルトの名無しさん:2007/05/19(土) 05:45:31
わを!tabがくっついちゃうんだ。許してね。
_UWORD bit_double(_UBYTE c) { // 8bit-->16bit変換ルーチン
// 8bitの文字dotパターンの横を倍にする。ex: 00111010-->0000111111001100
register t_16bits word;
register t_8bits byte;
byte.BYTE = c; // 1つのレジスタ上でできるのだがcでは書けない
word.BIT.BF = byte.BIT.B7;
word.BIT.BE = byte.BIT.B7;
・・・こういうのを16行書いて、
return word.WORD; 最適化オプションは「サイズ優先」にしてます。
同じレジスタでやれば最後の BIT.B0 = byte.BIT.B0;は要らないんですが、cだとそう書けない。
wordのunsigned char はunsigned shortのコピペミスです。
表引きにした方が楽だと思うけどな
Word.H:=tbl[(c shr 4) and $0f];
Word.L:=tbl[c and $0f];
>>423 なんか間違えてるよ?
typedef union { // WORDとBIT共用体
unsigned char U8[2]; // 2byte
unsigned U16;/* Word Access */
・・・
で、
unsigned bit_double(unsigned char c) { // 8bit-->16bit変換ルーチン
// 8bitの文字dotパターンの横を倍にする。ex: 00111010-->0000111111001100
register t_16bits word;
word.U8[0] =c;
word.BIT.BF = word.BIT.B7;
word.BIT.BE = word.BIT.B7;
word.BIT.BD = word.BIT.B6;
word.BIT.BC = word.BIT.B6;
と書いたら
MOV.B R0L,R1H
BLD.B #7,R1L
BST.B #7,R1H
BLD.B #7,R1L
BST.B #6,R1H
とコンパイルされたよ?
さらに
unsigned bit_double(unsigned char c) { // 8bit-->16bit変換ルーチン
// 8bitの文字dotパターンの横を倍にする。ex: 00111010-->0000111111001100
register t_16bits word;
word.U8[0] =c;
word.BIT.BF =
word.BIT.BE = word.BIT.B7;
word.BIT.BD =
word.BIT.BC = word.BIT.B6;
word.BIT.BB =
word.BIT.BA = word.BIT.B5;
・・・・
のように書いたら
MOV.B R0L,R1H
BLD.B #7,R1L
BST.B #6,R1H
BST.B #7,R1H
BLD.B #6,R1L
BST.B #4,R1H
BST.B #5,R1H
BLD.B #5,R1L
BST.B #2,R1H
BST.B #3,R1H
となったよ。 けっこうコンパイラ賢いじゃない
あ、H8だから 下位バイトは U8[0] じゃなくて U8[1]か
× word.U8[0] =c;
○ word.U8[1] =c;
あと、7ビットコピーした後
x := x and $5555
x:= x or (x shl 1)
とした方が少し短いよ
430 :
デフォルトの名無しさん:2007/05/19(土) 18:08:37
いろいろやってくださってありがとうございます。427のアイデアは「同じレジスタの中でやらす」
手法ですね。助かります。428みたいに上下を気にしないでいいように、word.WORD = c; って
やって、wordの中で下から上へ移せばいいですね。
>>429のアイデアが理解できないです。5555hでandしたら1つおきに0になっちゃいますよね?
word.BIT.BE = word.BIT.B7;
word.BIT.BC = word.BIT.B6;
・・・・
word.BIT.B2 = word.BIT.B1;
とやって
>>429 をやれってことだよ
結局、コンパイラの最適化を期待するなら、最適化しやすいようにこっちも工夫してやれって事さ。
>>418 は、別の構造体から別の構造体にコピーしてる。
しかも、サイズが違うわけだ。
これではコンパイラも、なんとか動くコードを吐くのが精一杯さ
433 :
418:2007/05/20(日) 01:45:26
うちのでやるとこうなりました・・・
word.WORD = c; // 1つのレジスタ上で移すため
MOV.B R0L,R1L
EXTU.W R1
MOV.W R1,R0
word.BIT.BF = word.BIT.BE = word.BIT.B7;
SUB.B R1L,R1L
BLD.B #7,R0L
BST.B #0,R1L
MOV.B R1L,R1H
BLD.B #0,R1H
BST.B #6,R0H
SUB.B R1L,R1L
BLD.B #6,R0H
BST.B #0,R1L
MOV.B R1L,R1H
BLD.B #0,R1H
BST.B #7,R0H
最適化オプションをスピード優先にしてもサイズ優先にしても同じでした。なんでだろ??
>>431 (*o*)ガーン 気がつかなかった
434 :
418:2007/05/20(日) 04:46:07
SHやった時の古いへう2が残ってるからかと思って、大掃除してインスコし直してみても一緒でした
バージョンが違うか、使い方が違うか
436 :
418:2007/05/21(月) 04:35:33
V6.01 R01 です。
>>427さんのは? 参考までにお聞きしたいです。
いろいろありがとうございました。これは回避の仕方も判ったし、これで終わりにします。
438 :
デフォルトの名無しさん:2007/05/24(木) 09:39:35
問題は「互換性を維持」だな
H8-300系と M16C系の両方のバイナリ互換は当然無理。
論理演算でボローがクリアされるかどうかとか、命令の中身も多少異なる。
また、M16Cは16ビットのメモリ空間をバンク切り替え式に拡張してるのに対してH8は32bit化してる
単純なトランスレータの提供では解決出来ないだろう。
両方の命令体形をフラグで切り替えられるとか、
マイクロコードの一部が書き換えられるとか
スタートアップ → HEWで自動生成するので気にしない
内臓I/O → 自動生成ツールで互換性を確保
それ以外 → Cで書いてりゃ問題ない
というオチを期待してみる。
それだと、従来のコードをそのまま動かせるという事にならないな
既存製品の延長上の展開 って事は、ようは作り直せって事だ
あと、SIO何個とか複雑なタイマーとかで品種増やすより
シンプルなCPUをI/Oプロセッサとして何かつけて
それで SIOとかタイマーとか自作させてくれれば便利なんだけどな
H8S、H8SX、M16C、R32C。
H8がここに含まれていないのはなぜだろう?
もう作ってないから?
三菱の石ってキャリーの立ち方が反対だった覚えがある(50747とか)。
日立と合体したら、M16Cなんかはキャリーの立ち方はH8と同じになったのかな?
同じ会社といっても設計している場所が違うからのう
同じにはならんだろう
新しいのはどっちで設計するんかな
三菱系の予感がしますねー。
名前はR16Cで決まり。
ただし、ハードウェアマニュアルは日立系の書式を切望します。
LCDが生産中止だったよ〜。サムスンの、20キャラ・2行の、ASCIIで英字とカタカナ出せて
数文字分は外字パターンが書き込める奴。
前に使った制御コード使いまわせると思ってたらご破産になっちゃった・・orz
そういうの困るよな。ケースも設計しなおしになりかねない
HD44780の20x2なら同じようなのは山ほどあると思うが。
HD44780uですよね。ぐぐると日立(ルネサス)のはいっぱい出てくるけど、もう作ってないって
お客さんが言ってました。意外だったのはサムスンですらやってないらしいこと。
HD44780と同等だと称してるのはオリエントディスプレイとかいろいろ見つかったけど、
まだデータブックは見つからない。お客さんの取引関係とか、なんかあるんでしょうね。
今見直したら、LCDユニットが製造中止・・・と言ってるから、コントローラーが無くなったという話
ではないみたい。それだったらノリタケitronとかじゃだめなのかなあ?
秋月のSL811のUSBボードやったことある人いる?
いつだったかのインターフェースのソースをもとにデバイスディスクリプタを
取得するところまで作ったんだけど、どうしてもディスクリプタの読み込みのところで
STALLエラーが帰ってくるUSBがある。他のはOKなのに。
でもこの駄目なUSBはwindowsとのやり取りだとOKなんだよね。
さっぱり原因がわからん
>>453 俺様独自の意味でUSBって言葉を使われても
他人には何のことかさっぱり意味わからないと思うんだけどどうだろう。
何をつないだのかわからんとなあ。
456 :
85:2007/06/09(土) 17:09:53
つないだのはUSBメモリ。
SL811でUSBメモリの読み書きをやりたい。
が、最初のディスクリプタの取得で駄目になるUSBが
あるんで原因がわからず詰まってる。
だからその「USB」ってのはいったい何のこといってるんだ馬鹿w
USBって言葉はその名の通りバス自体のことを指すんだけど
>>457 分かった!
きっと使ったコネクタかケーブルのことに違いない
んなわけない(w
でも
>>453で、windowsではOKって言ってるよ。ってことは、winではディスクリプタなんか
取らずに強引に読み書きしちゃうんでは?
ディスクリプタ読まなきゃ認識できねー
エラー処理とかちゃんとやってなくて、応答遅いのがダメとかじゃないの?
H8/2000シリーズ、ルネサスのコンパイラです。ある関数の入り口なんですが、
ラベル:
PUSH.L ER3
STM.L (ER4-ER6),@-SP ってなってる。出口もこれと対称。
なんで STM.L (ER3-ER6) ってならないんでしょうね?
>>462 つ プログラミングマニュアル
そういうものです
464 :
デフォルトの名無しさん:2007/06/20(水) 15:26:42
void INT_MTU0_TGI0A(void){
static const _UBYTE table[] = { ・・・ };
}
と
void INT_MTU0_TGI0A(void){
const _UBYTE table[] = { ・・・ };
}
の違いってありますか?
割り込み関数内に定数を書いたのですが、
下だと割り込みかかった時点で、変な所にプログラムが飛んでいるみたいで
正しく動作しないんです・・・
465 :
464:2007/06/20(水) 15:28:51
もしかして、constだけだと、定数領域に割り当てられないんでしょうか?
CPU : SH-2
開発環境 : HEW4
です。
>>465 そりゃそうだろ
蟹炒飯をもう一度ちゃんと読み直してこい
(*o*) なぜに蟹炒飯・・・
>>465 下の書き方なら関数の外に書くとglobalな定数になるよ。でも、上の書き方が間違ってる
とは思えない。その定数がglobalにならないだけで。
intprg.cに__interrupt(vect=nn) INT_MTU0_TGI0A(void) { /* sleep */ } という形で実体があるので、
これをコメントアウトして、自分の書いた割り込みを __interrupt(vect=52) void INT_MTU0(void) {
で始めると、ベクタが自分のそれを指すようにできるけど。
468 :
464:2007/06/21(木) 09:03:46
わざわざありがとうございます
上の書き方だと、正常に動いています(明記してなく、すみません・・・)
下の書き方だと、毎回table[]への初期化が始まる訳ですね。
今は関数外に置いています。
今は、蟹炒飯って何の事だろう・・・と、そっちの方で悩んでいます
たぶん、カーニハンのC言語本のことじゃないかと思われ
470 :
制御初心者:2007/06/24(日) 20:48:15
工学専攻で、所属してる研究室ではロボットの製作・制御などをやっています。
そこで質問です。これまではロボットのモータの回転角をポテンショメータで検出
してきたのですが、ポテンショメータとエンコーダを併用することでより精度良
く制御できると聞きました・・・が、調べてみてもなかなか具体的な方法がわかりま
せん。ポテンショとエンコーダを併用することってあるんでしょうか?具体的な
方法まで教えてもらえるとかなり助かります。
長文ですいませんm(_ _)m
アブソリュートタイプのエンコーダあれば、ポテンショメータ要らなくね?
漏れはむしろポテンショメータ初めて聞いた。
可変抵抗だから温度ドリフトとかガリとか出るからでないかい?
エンコーダーのパルスタイミングでポテンショメータの補正掛けていけば
稼働状態で温度保証が出来るとか…
推測でスマソ
併用ったって、どういうふうに取り付けてあるかが問題で、
モータの軸にロータリエンコーダ、関節とかに直接ポテンショメータとか?
モータの軸の場合はバックラッシュがある事が問題
つまり正転から逆転に入った時にいくらか遊びが出来る。
制御対象から直接信号をもらうと、このバックラッシュが入ってないから
良いかというと、無いのは無いで困る。 だから両方に付けたいってことじゃないの?
研究室なのにどうしてセンセに聞かないんだろう
いい歳こいて恥ずかしがりやさんなのかなw
まあこっちのほうが気軽に聞けるし文字で残るからしばらくは眺めていられるってのもあるし
477 :
デフォルトの名無しさん:2007/06/28(木) 22:54:27
こんばんは
SH2で、全割り込みの優先レベルを1にしているのに、多重割り込みになってしまいます...
なぜでしょうか?
全部優先になってるんだろ
そして何よりも 処理の速さが足りない
>>477 @割り込み先で(内部)割り込みの要因フラグをクリアしてない
A割り込み先でマスクレベル下げてる
480 :
477:2007/06/29(金) 10:00:37
レスありがとうございます。
>>478 全部優先って何でしょうか
>>479 @でした。ありがとうございます。
でも何で要因フラグをクリアしてないと多重で入ってくるんでしょうか
>>480 割り込み終了直後に、割り込み要因フラグが立ちっぱなしになってるので、
また割り込みが発生。これの繰り返し。
よく陥るパターン
482 :
477:2007/06/29(金) 11:15:16
>>481 ごめん、要因はクリアしてました。
どっちにしてもなんで同じ割り込みレベルで多重割り込みになってしまうのでしょうか
>複数の割り込み要因の優先順位を同じレベルに設定した場合、
>それらの割り込みが同時に発生したときは、
>表6.3 に示す「デフォルト優先順位」に従って処理されます。
SH7040ハードウェアマニュアルに書いてあったが。。。
SRの I0〜I3 を誰かが書き換えない限り多重割り込みにはならないんだから、何か勘違いしてるんだろ
それとも割り込みが終わってRTEを実行して割り込みがかかる事を自分用語で多重割り込みと言ってるのか?
486 :
477:2007/06/29(金) 13:00:33
>>485 受信割り込み中にタイマー割り込みが入ります。
>>484 SH7144のマニュアルだとデフォルト優先順によって割り込みが選択され、実際に割り込みに入るかどうかはマスクとの比較と読めます...
>>486 そのタイマー割り込みで保存されてる SR を見てみりゃいいじゃない
>>482 多重割込みがイヤなら、「割込みコントロールレジスタ」でIビットだけかマスクか
選択できないの? H8の16ビットシリーズなんかには付いてるけど。
マスクしかだめなら、IPRxでuartのほうを高くしてやる。
一般に「割込み処理が短い」奴は高くしても問題ない。
489 :
477:2007/06/29(金) 13:31:58
>>487 ちゃんと設定した1になってます。
>>488 uartを高くしてもタイマー中にuartが入るので、結局多重割り込みになりませんか。
処理速度は問題ではなくて、共有メモリの都合で多重割り込みにしたくないです。
優先レベル1の割り込みがかかれば、マスクレベルも1に上がり
割り込み終了するまで、レベル1の割り込みは入ってこれない筈なんだが・・・
どうやって多重に割り込んでいると判別した?
491 :
477:2007/06/29(金) 14:36:06
タイマー割り込みハンドラの最初でデバッグポート(※A)をHにしてハンドラの最後でポートをL
受信割り込みでハンドラの最初で上とは違うデバッグポート(※B)をHにしてハンドラの最後でポートをL
それをオシロで見たら※BがHの間に何回も※AがHになってました。
処理時間を見たかっただけなんですが、そこで多重割り込みを発見しました。
途中でEIするようなところは無いです...
>>489 タイマー割り込み中にスタックに保存されたSRを見たんだね?
SRは当然書き換えられてるよ。
それなら、そのタイマーはNMIでかけられているのだとしか考えられないのだが
そんな筈はないよね?
だから、タイマー割り込み中でスタックに保存されたSRを見て、SRと一致しなければポートをパタパタさせるようにして試してみたら?
493 :
488:2007/06/29(金) 16:21:11
7144のマニュアルをダウロして読んでみたら、単一レベルの割り込み制御はありませんでした。
SHシリーズでは多重割込みがあたりまえ、という設計思想のようですね。
そうすると、489のほうの事情をもうすこし知りたいな。「共有メモリの関係で」というが、
違う種類の割り込みで共有して使うようなメモリがあるの? スタックサイズがあんまり取れない
とか? SHならRAMも豊かだとおもうし、どんな事情なんだろ。
ん?
>I3〜I0ビットに設定されているレベルと同じか低い優先レベルの割り込みは無視されます
6. SRとプログラムカウンタ(PC)がスタックに退避されます。
7. SRのI3〜I0ビットに、受け付けられた割り込みの優先レベルが書き込まれます。
だから、このとおりにハードがなってるなら、何もしなければ多重割り込みはかからない筈
誰かが、どこかでSRを書き換えてるんだろ。
割り込みって何って感じだね?
uhihi
今まで制御系やった経験が無い俺にオススメの教科書ありますか?
ちなみに俺は言語処理系が専門で、今まで C や Lisp 等のコンパイラを作ってきた。
例えばコンパイラの分野でいう Tiger book (Appel のヤツ) に相当する
コンパクトで内容がしっかりしてる教科書って何だろう?
制御系っていってもどういうことやるのかによってかなり幅広くならね?
マイコンとかPLDとかシーケンサとかモデリングと制御系設計とか
500 :
497:2007/06/30(土) 21:01:00
>>499 言語処理系では狭すぎる(就職)ので、見聞を広げるのが目的です。
たしかに制御系と言っても漠然としてますね。
コンパイラ屋なので機械語レベルまでは理解出来ますが、それで外部機器を
制御するとなると、もうチンプンカンプンなんです。
こんな俺にオススメの一冊って何かありますか?
コンパイラ作れるほどの頭があれば、制御理論とか使わない単純な制御なら
すぐ飲み込めそうに思うけどな。
モノが同時に動くことへの理解と重大さを認識できる本がほしい
>>503 制御系でそんなん薦めてどうすんだよ
リソースがふんだんにある環境下での
メモリ管理やタスク管理の勉強をしても
いみねーだろ
だから、ハードウェアの本嫁
基本情報くらいの頭があれば実機触るのが一番だと思うけどな
本を読むよりキット買ってポート叩いてテスタで動作を見るほうが早いと思う
それでもデータシートくらいは読まないとあかんよ
>>507 タイミングチャートとか、重要だね。
ホールドタイムとか、ディレイとか言われてどうすればいいか分かれば一人前。
いやそれは始めて三日目でもわかると思うけど。。
だからこういう業界の人は恥ずかしいんだよねw
いまだに「低水準の技術 = 高度」などという時代錯誤というか中学生みたいな
意識をもった自分のズレ具合を自覚してないのが多いんだよ実際。
>>509 ハードとのタイミング合わせ以外にする事なんて、あるんか? え?
ソフトに限った話ならタネンバウムのminixの本は意外にお薦め。
マルチスレッディングやスレッド同期のことが一通り解説してある。
インターフェース回路の初歩的な知識ならどんな本も大して変わらないから、
立ち読みでもして解りやすいのを選ぶと良いと思う。
ヒステリシス特性とかファンインファンアウトとかオープンドレインとか
トランジスタのスイッチングの原理だとか、
ちょこっと電気的な知識もあるといいかも。
>>500 コンパイラ屋やってる人の知識を考えると、何がわからないのかよくわからない。
I/Oをドライブして何らかのワイヤプロトコルをしゃべる所とか、
ステッピングモーターとかDCモーターを駆動して機械動かしたり、センサやA/D入出力が
どう実現されてるかといったプロセッサコアの外側のデバイスの原理を見たいということ?
それともパーツ単位ではなくて例えば自動車の自動走行制御のシステムを
どう実装するのか、蟻の視点で逐一見て、理解したい、ということ?
外部情報の取り込み〜制御理論〜物理世界デバイスの駆動の3セットを
どう組み合わせてトータルで動いてるのか、とか。
>>512 排他制御の基本概念とかはコンパイラには無縁(だった)からね
並走するコード(およびハード)の制御の理解ってのは最初は
時間かかると思う
単純に言ってしまえば
IOが分からんってことでしょ
>>500 就職用の勉強なら VHDL/Verilog の方が有効だと思うよ
516 :
497:2007/07/01(日) 11:28:02
みなさん、いろいろありがとうございます。
OS の本とかは読んだことがあるのですが、とにかく実際に機器を動かしたことが
ないので実感が湧かないんです。昔のマイコン世代の人がうらやましい。
>>507 さんのおっしゃるように、なにかキットを購入して動かしてみて、
あとから理論を学ぶ方がいいと思いました。
まあ、コンパイラ作れるほどの頭があれば
マイコン世代のチマチマした知識なんて一週間で網羅できると思うけどね。
覚えること少ないし、難しい理論なんて何もないし。
よくそんなレベルで「機械語も出来ます」って自信もって言えるなw
まあ518みたいのが「低水準 = 高度」っていう時代錯誤な勘違いの持ち主なんだよね
俺の認識じゃw
同じ低水準でも、例えばCPUの挙動を固体電子工学レベルで把握しているとかなら
本当にすごいが、バスやポートの挙動がどうだのタイミングチャートがどうのって
工業高校レベルの話じゃ、「低水準」っていっても別の意味になっちゃうよ。
>>519 俺はしがないOS屋だけど
とんでもない糞ドライバ書く奴が
どういう人間なのか良くわかった
本で勉強して知った気になってるのと、
手を動かして体で理解したのとでは、
誰にも理解できないバギーなコードと
確実に動きメンテもしやすいコードくらいの違いがある
>523
でもね、この制御系の業界って、理論は後回しにして長年手だけ動かしてきた人の
イタいコードが結構な量あると思います。
雑誌や書籍のサンプルソースを見るたびに「初級者がこんなのを模範と思って
お手本にしてしまったらどうするんだろう」という気になります。
「俺ならもっとうまく作れるのに!」って奴ならきっとモノになると思うぞ
まあ糞みたいなサンプルコードはむしろ制御とか組込みとかのファームウェア業界に限らないと思う。
むしろこの業界の特徴は、しつこいようだけど技術全体のパースペクティブが
全然見えてない「井の中の蛙」が多いことだと思うね。
45未満の人間には、「オールマシン語スゲエ」みたいな、そいつ自身の中高生時代の
恥ずかしい感覚がそのまま修正されずに引きずられているような馬鹿みたいな
勘違い君が多い。
もちろんきちんと世の中の技術の中で自分のやっていることの位置づけが見えているが故に
謙虚な人も、本当に優秀ですごい人も中には居るんだけど。
いや、いくら何でも今時オールマシン語すげーなんてのはさすがにいねーだろ?
>>524 理論先行で推敲しないでコーディングすればそうなるのでは?
まわりが”推敲中=遊んでる”みたいな感覚でみるとそうなるような?
動いてるのなら納品→検収ですぐ金が入ってくるのに、推敲なんかして
コストをかけたら利益が減るし、他の仕事も振れないのだから
会社から見たら「遊んでる」以外の何物でもないな。
バグはあって当然なんだし、あっても適当に誤魔化したり逆に
改修費用や追加工数を稼ぐチャンスなのだから、推敲して過剰品質に
なるのは厳禁。
営業でカバー出来るからとかやってる会社は、だいたいダメになってゆくね。
改修費用や追加工数で稼げるのは短期。
533 :
デフォルトの名無しさん:2007/07/03(火) 08:27:26
【派遣ネガティブ根性チェック】
3つ以上、チェックがつけばアナタの性格はひん曲がっており、
ネガティブ負け組派遣人生を歩んでいます。
□派遣先正社員の作った糞開発ツールはたとえ腐っててもマンセーして使う
□派遣先の人事権のある社員の意見はたとえ間違っていてもマンセーする
□昼食は必ず派遣先の社員と行くべきだ
□自分の仕事で問題が発生しても解決するのは自分の仕事ではない
□派遣先から「いつまでもここで仕事してくださいね(安い金でw)」と言われて嬉しい
□自社で仕事なんてできるわけがない
□派遣労働の問題点の話題が出ると感情剥き出しにして反論する
□派遣労働の問題を指摘する人は嫌いだ
□派遣先には仕事だけでなくプライベートについてもグイグイ引っ張って欲しい
□奢ってくれる派遣先正社員を尊敬する
□自分の月額金額を知らないのは当然だ、単金を聞いてはいけない
□派遣先正社員より自分の生涯収入が低いのは当然だ
□チビは派遣先にかわいがってもらいやすから派遣には有利だ
>>531 おまえみたいな奴はわざと実装ミスさせるんだろ?
さすがにメンテナンス性くらいは考えてくれ
最近も全く考えてない糞ソースのメンテの仕事がきて閉口した
OA系の連中は、いまだに、力仕事みたいなやりかたさせてるみたいだからね。
>>536 ソレは 話が変だぞ。
仕事だったら、糞だろうがなんだろうが、メインテナンスするのが仕事だろうに。
基本的にプログラムは作った所に著作権がある。
そのメインテナンスを作った所がやるというのは理屈に適ってる。
それを他に出すというのがソモソモ変な話だが、
そこが開発した=著作権保持者だというなら、その糞をメインテナンスするのに金を出すというのだから有難い話だろうに
糞ソースがソフトとかシステムのトータルコスト無意味に上げてるってことあるよ。
うち、駄目ソースがコピペ元になってさらに各所でいい加減ににモディファイされて
同時多発的に火を噴いて会社つぶれかけたよ。
長くこれで飯喰いたかったらまともなソース出せる奴雇っとかないとヒドい目に遭うよ。
541 :
デフォルトの名無しさん:2007/07/03(火) 12:19:29
>長くこれで飯喰いたかったらまともなソース出せる奴雇っとかないとヒドい目に遭うよ。
長く飯食えるわけない派遣が一時的に投入され、いい加減なソースを書き捨てるのが現状。
>>541 実装で言葉遊びしたいだけなら、”よそでやれよ。”と言いたい。
制御系で派遣使うなんてバカかと
>>540 わけのわからん事を言うなよ。 糞ソースと判ってるマトモな奴なら誰もコピペしないだろうに。
糞ソースと判らずにコピペしてるか、判っててもソレを無理やり使われてるか、
どっとにしたって、元のソースに責任はないだろうに。
逆に、人のコード勝手にコピペしといて金よこせってくらいのもんだろ。
>>538 まず、うちが作ったソースじゃない。
メンテすることになったのは、作ったところでは手におえない拡張が必要になったから。
間違って請け負ってしまったみたいな仕事だ。
金はもらったがスケジュールもむちゃくちゃ。
作業をする為のボードがいつまで経っても出来上がらず仕事を始められない。
結局はソースの内容を知ってる人についてもらって、変更が必要な個所だけ俺が手を入れたような状態。
本当はもっと時間をもらって俺が全体に改修を入れたほうが後々面倒が減ると思ったくらいだよ。
まあ、インデントだけは統一してやったが。
同じ機能なのにアルゴリズムが違う関数が三つも四つもあるんだぜ。
それが違う場所から呼ばれてる。どうしてくれるってんだ。
>>545 インデントなんてエディタの機能で簡単に変更出来るだろうし
>同じ機能なのにアルゴリズムが違う関数が三つも四つもあるんだぜ
は普通にみかけるので、どこが糞なのか判らん。
元のソースがあって、その修正で楽しましたって話であって
作った方が早かったって話じゃないんだろ? だったら元のソースにありがとうくらい言えよ。
結局、問題は
1、スケジュールもむちゃくちゃ。
2、作業をする為のボードがいつまで経っても出来上がらず仕事を始められない
事の方だろうに
>>546 しっかりした仕様書さえあれば、一から作ったほうが早かったよ。マジで。
それすらなかったからな。
そんなの当然だろ。
しっかりした仕様書があれば、誰だってコード修正するより作った方が早い。
でもしっかりした仕様書を作るのはプログラム作るより時間がかかる大変な作業なのも当然の話。
そんな しっかりした仕様書のある仕事なんてやった事が一度でもあるなら幸せものだ。
だとしたら俺はかなりの幸せ者だな。何度も有るよ。
まあ、仕様書も自分で作ったけどな。
プログラムより前に?
当然だろ?
なんか技術の質問とは別の所で盛り上がってるなぁw
笑っておままごとしてるところが多いってことだろ。
怒りながらおままごとは不幸すぎると思うんだ
営業がなんでもできますと無理な内容の仕事をとってくるのをなんとかしたい…
556 :
デフォルトの名無しさん:2007/07/03(火) 21:37:12
駄目ソースのコピペは解ってる奴の目の届かないところで行われるんだよ。
ちょっと駄目な奴が作った地雷だらけのオリジナルを
やっつけ仕事にあてがわれた新米が中途半端な理解に基づいてコピペ&モディファイする。
ラボ環では問題が出ないがフィールドで発火する。
ちょっと駄目な奴のソースは奥行きが無い分新米には食いつきがいい。
アサーションやエラー処理例外処理などきっちり書いたソースを
コピペされたときにその辺の処理すっとばされて使われててワロス
っつーか全米が泣いた
559 :
85:2007/07/04(水) 23:49:41
H8なんだけどタイマ割り込み内でsetimaskで割り込み禁止、許可しちゃまずい?
ある処理がfor分で結構回ってしまうんだけど、その間にシリアルでデータを受信
したらエラー応答を返したいんだけど、タイマ割り込み内でデータ受信処理(バッファを
いじるためその前後で禁止許可してる)を呼ぶと、正常にシリアル受信できなくなった。
なんかいい方法ないかな。
>>559 割り禁中に割り禁と解除をしなければいいお
というか、560は559の日本語がよく理解できるね。
割り込み禁止期間に長めのループが入るんだったら設計どっかマズってると思うよ
割り込み禁止という天下の宝刀を持ち出すのは、最小限にな。
だいたい、よくて3命令以内だな。アセンブラの換算で。
設計の良し悪し以前に、まともな説明文を書けないってことは自分で自分のやってることが
よく把握できてないんでしょ。
まあ単に説明能力が劣悪なだけかもしれんけどね。
565 :
デフォルトの名無しさん:2007/07/05(木) 01:05:13
H8などなら会社に基本的なライブラリがあると思うんだが、先輩や同僚に知識のある人いないのかな
>>563 いつの時代の話それ?
というか、昔だって単に割り込みのプライオリティを適切に設定すれば
済むだけの話だけど。
ああ、だいたい文字列比較とか割り込み中にしちまうトーシローがたまにいるなw
>>566 割り込みが受け付けられないなんて、制御系の命を断つようなもんだろ。
息を止めて全力疾走してるようなもんだぞ。やばいって。
>>568 マイコンの通信の割り込みなんて実際には数100us程度の猶予がある。
一方命令サイクルは今時どんな鈍亀のマイコンだって100nsのオーダー。
あとは単純な算数の問題。わかるね。
割り込み禁止時間の適切な長さなんて、システムによるだろ。
一概に何命令以内なら大丈夫、なんて言えない。
>>569 おまいさんは、全部の割り込み内の処理時間の合計を計算して言ってるのか?
それとも単に通信割り込みの事だけを言っているのか?
後者なら、おまいはワンチップマイコンの世界から出てくるなw
常時サブクロックで割り込み動かしながら動かすと。
すげーたいへん、ポーリングでポート伺いでは間に合わないときとか。
PWM駆動とかをサブクロックだけで動かすとかな。
573 :
デフォルトの名無しさん:2007/07/05(木) 02:02:00
最近、職場で「出戻り寄生派遣」という言葉が囁かれています。
派遣契約を切られたにもかかわらず「次の派遣先でも切られてしまって生活できません」
などと 言って泣き落としで再契約した派遣のことです。
今月初め、半年前に切った派遣が出社してきてみんなびっくりしました。
影でコソコソ偉い人に泣きついて再契約したそうです。同じ部署の人には黙って・・・
そんなことまでして自宅の近くの派遣先にこだわって人間として恥ずかしくないのですか。
派遣でスキルアップ、派遣で収入アップとか言うなら一箇所にしがみつかず
複数の会社を渡り歩いてください。
ひとつの会社で派遣向けの単調な仕事をしていたらスキルアップなんてありえないでしょう。
身分不相応な商品のローンを払うために派遣だと当然足りない収入は親にも寄生して、
いつ切られるんじゃないかとビクビクしながら人事権のある人間とだけ仲良くし、
契約終了を通知されれば泣き落とし。悲惨な人生ですね。
氏んだほうがいいんじゃないですか。
>>559 そのforループ処理をタイマ割り込み内でやること自体が間違い。タイマ割り込みでは
「イベント」を発行しておいて、メインループでそのイベント処理としてforループを含む処理を
する。そうすれば受信はふつうの割込み処理でOK。
プログラマの都合で「このタイミングで受信したらエラー」なんてのはエゴの強いプログラミング
の典型じゃん。エラーは「内容」とか「プロトコル違反」とかそういうのについて出すべきで、
物理的な受信は常に開けておくものだと思うよ。
シロートさんはたいてい、「一定時間毎に実行するべき処理」を何でもかんでもタイマ割り込みに
入れちゃうんだよ。マイコンの速さを無限だと錯覚するんだよね。
タイマ割り込みでどうしても必要なのはソフトタイマのカウントぐらい。それ以上複雑な処理は
イベントにしてタスクレベルで処理させるように仕掛けとく。例えばタイマnがブレークしたら
何の処理、という奴。タイマnを張るのはたいていアプリ層だから、張るところとブレーク処理を
セットで作っておく。例えば1秒毎の処理とかあったら、それもカウンタブレークの度にイベント。
この前見た奴で、timer.cが1500行もあって、1mS割り込みでそれらのあちこちを実行してるの。
もちろんふつうはバラけてるからいいんだけど、最悪の集中したら1mS超えちゃう(w
>>574-575 言いたいことは分からんでもないけど、そいう低レベルのことをあまり
力説するのもそれはそれで恥ずかしくないか?
たぶんその程度のこと、誰に教えられなくても自分で気づいたでしょ?
つまり君程度の頭の人間がそうなら、たいていの人間が自分で考えれば
自明に分かる問題、ということだ。
というか、別にISRで処理を完結するのも場合によっては悪くないでしょ。
何度も言うがどんなマイコンにも割り込みの優先順位の設定ぐらいできるんだよ。
でもまあ、そのあたりの処理がソコソコ適切に書けるようになったあたりが、
仕事してて一番面白い頃かもしれないね。
それ越えるとOSとか作りたくなるよね
ゲーム屋の割り込みの使い方で制御やると、ものによっては自爆するよ。
>>574 タイマ割り込み内でforループしてるわけではないです。
タイマフラグ内でイベントフラグを立てても、メインがforループしてるので
イベントフラグを処理できるのがループを抜けた後になってしまうので、
それだと応答返すのが遅くなってしまうのでどうしたものかと。
やっつけですませたいならタイマー割り込みで通信応答もやるかもしれないけど、
送信に待ちが発生するなら、待ちループは忌避するのが割り込み処理のセオリー。
普通に考えるとこれはタイマー用のスレッド立てる流れだとは思うんだけど、
ひょっとしてメインのスレッドで通信処理してるかい?
多分ここは通信処理用に優先度の高いスレッド立てるスジのはずなんだけど。
>>580 その長い処理のループ中に 適当に通信用の手続きを挟むのは無理なの?
無理なら、タイマー割り込みでタスク切り替えをしたらどう?
スタック用の領域をもう一つ取れるくらいメモリが空いているならだけど。
タスクってのは
>>522が言ってるスレッドの事だけど
スレッド2つなら、自前で書いても スタックポインタ をタイマー割り込みで切り替えるだけだから簡単。
でも、まあ長い処理中に、適当に通信用の関数を挟む方が楽だよ
協調的マルチタスキングでは長ループ中にポーリングを入れるのは割に普通。
Windowsで言うとYield()てのがあるな。
あるいは、全体をイベントドリブン構成にして
長ループが発生しない仕組みにするという方法もある。
このやりかたはシングルタスクでも可能。
しかし、自分のやってること・やりたいことをきちんと意味の通る文章にできない
>>559はカスだけど、その意味不明な文章の意味を勝手にエスパーして回答する奴も
同じぐらいカスだと思う。
エンジニアがESP(要するに勝手な妄想というか、思い込みの激しい奴だな)で動いてどうする。
制御系に限らず、ユーザと接点のあるエンジニアは、その手のエスパー能力は鍛えられるもの
>>586 勘違いしているかもしれんが、俺は推測する・仮説を立てることを否定しているわけではない。
推測は推測に過ぎないことを忘れる(あるいは最初からそう認識してない)
様がカスだと言っているわけね。
なんだか臭ってきましたねww
時分割という言葉の意味がわかってれば、制御はそんなに難しくないと思うけど...
まあ リアルタイムモニタを入れないと、
状態遷移型とか、
フラグ駆動みたいなスタイルとか、
簡易インタプリタとか、
になるんだけど、
そのあたりが苦手な人がけっこういるよね。
インタプリタ型作って失敗談:
・1コマンドごとにイベントドリブンしてたら、超遅いシステムになっちった。
・てきとうに同期コマンド類も混ぜたら、ループ内で遷移しないスクリプト書かれちゃった。
またエスパーとかっつってしかられるんじゃねw
その「また」って接続詞はどのレスのことを指してるんだ?
それこそエスパーを召還する必要がありそうだなw
いやいや。案外忙しいので、気安く呼ばないでくれる?
状態遷移型 ってのは
・ モード(番号で状態を表現する)変数を沢山作って状態を表現
switch case の山になる奴ね
・ 関数を沢山作って 関数ポインタで状態を表現
分析がチャンとされてたらいいけど、いきなり思いつきで書かれたようなのは・・・・・
フラグ駆動 ってのは シーケンサ(PLC)みたいな方式で動く奴だろと勝手に想像
これは確かに慣れてない他人が読むのは難しい
switch( HogeNo ) 〜 case 使って、 HogeNoを PC(プログラムカウンタの事) 代わりに使うのは
これは状態遷移型?
それとも簡易インタプリタ型?
なんで状態遷移がどうとかいう話になってるのかよくわからないんですが。。
それって誰のレスから始まってる話なんだ?
このスレで困ってる奴がいると大体そこへ落ち着くから制御の基本みたいなことなんじゃね?
メモリ上にある何かを状態推移で処理するとインタープリタとかに使えるし、
ファイル入力を状態推移で喰って木構造作るとコンパイラやトランスレータに使える。
通信に使うとプロトコルになるし、I/Oで使うと制御になる。
だから、状態遷移の話はどこからともなく湧いて来るもんじゃね?
H8/2378で、初期化後タイマとuartの割込みが起きてくれないみたいです。
sfr類初期化時、TIERx=0x41(TGRAとのマッチで割り込み)、uartのほうはRE,RIE,TE,TIEを
立ててから、set_imask_ccr((_UBYTE)0); ってやってるんですけど。
MSTPCRレジスタの、使うデバイスのところを0にしても同じでした。
30xxなんかだとこの辺はすんなり行ったのに・・・どこが違うんだろうorz
他の割り込みは起きるのか?
大麻のカウンコが回ってるのは確認できた?
SCIの送出はできてる?
割り込みの優先順位の設定とか?
604 :
601:2007/07/11(水) 16:46:28
デバッカがまだなんで、レジスタが見れないです。IPRA〜Kで、TPUとuartのとこは4ぐらいに
しました。外部割込みは使ってないので、起きるはずのはTPUとuartだけです。
INTC.INTCR.BYTE = 0x20; で、割り込み制御モード2を選択しました。
データシート見ないで書いてるけど、UARTを割り込みなしで使えるようにして、
デバッガの代わりにしてみたら
データシートみたけど、EXRが正しく設定されてないような感じ?
607 :
601:2007/07/11(水) 17:21:15
今見てみました。EXRのレベルがデフォで111だから、4ぐらいにした奴は保留にされる、
ということみたいですね。明日試してみます。>606さん、ありがとうございます。
608 :
601:2007/07/12(木) 15:07:45
実際に試すのは来週になりました。30xxシリーズなんかは、IPRxに設定しとけばそれらの
レベル相互でがやがやして決めてくれるのに。 「このレベル以下の割り込みを待たせる」
みたいな使い方が想定されてるんですかね<---EXR
このEXRというのはsfrでなく、CCRみたいに特別な命令で触るレジスタでした。
そのために set_imask_ccr()みたいに、set_exr()とか and_exr() or_exr()などがmachine.hに
定義されてました。
>>608 多重割り込みを使いたいときの為では?
SHには昔からある。
30xxと同じでいいなら、わざわざモード2にする必要ないんでは?
EXRで、はまった人が結構いたりして...
612 :
601:2007/07/13(金) 05:57:14
多重割り込みを使いたいだけならIPRxでいいのに、さらにEXRがあるのはオーバースペックって
気がするのですよね。500シリーズあたりから似た感じはありましたが。
>>612 ペンディングにすべき割り込みレベルがわかってないとマスクできないヂャマイカ
EXRは単にCCRに入らないからあわてて拡張したものでそ。
>>612 よーく考えて使いなさいって事でしょ?
基準になる割り込みレベルはマイコンが知ってないとおかしくなるのでは?
1命令が0.5M秒なCPUを体験したことがあるか?
もはや1秒に2000命令だよw
0.5メガ秒ってすごいな
でもそれで1秒に2000命令ってどういうことだ?
まさか、ヤツのスタンドは時を
クロックが2KHzってことだよね?俺は670KHzぐらいのはやったけど、
そんなトロい石で何やらしたの?
618 :
601:2007/07/15(日) 08:15:18
EXRで割り込み起きるようになりました\(^o^)/ ありがとうございます。
619 :
デフォルトの名無しさん:2007/07/15(日) 10:21:52
今SH-2の7080系のシリアル調歩同期式通信をしようとしているのですが
SCIでは送信ができたのですが
SCIFではなぜか送信したいコードの前に0x00がついてしまいます。
べた書きでデータを2個セット(0x30,0x31)しても
0x00,0x30,0x00,0x31が送信される。
なにかの設定ミスだと思うが原因がわからない。
どなかた教えて下さい。
>>619 SHは使ったことが無いんだが、、、
現象だけみると、
SCI:
送信バッファorDMA無しでデータ長は8bit(1word)固定
SCIF:
送信バッファorDMAを使って複数wordの送信設定が可能
となってる時にSCIFへ16bitのデータとデータ長を
設定してるように見える
621 :
デフォルトの名無しさん:2007/07/15(日) 14:14:20
>>620 SCIF.SCFTDRに送信データをセットしているのだが
ハードマニュアルを見てもソフトのヘッダファイルを
をみても8bitレジスタだがらしれはないと思う。
たしかにその他の設定レジスタは16bitが多いいのだが・・・
624 :
デフォルトの名無しさん:2007/07/15(日) 23:01:00
2自由度制御系をもっと高速に且つ安定性を改善するためには?
何に対してもっとなんだよ
>>624 劣化しない&歪まない条件であれば。
パターンを全て記録、といっても全て記録できないので
間引いて記録し、途中は線形予測する。
0、100、200,300、400とあれば途中の予測は計算でできるだろ?
細かい部分の予測は大域と狭域を別けて、狭域(微細)な部分は近似模様など
をパターン化して記録しておく。
姿勢や状態による歪むなどの未知条件が含まれるのならば、ニューラルネット
ワークで抽象学習するのが効率的である。
uartのbitレートが1%ちょいずれてて、66文字くらいでPC側で取れなくなっちゃいます。
まともな対処は、(A)クロックを分周可能なものに変える (B)64文字ずつソフトで送出完了を
待って送信。(今の場合1040バイトほど送る必要があるのでちょっと辛い) が考えられますが、
(C)全二重できなくなるが、送信時だけstop=2で送出し、送信終了時stop=1に切り換える。
は使えそうでしょうか?体験した方がいたら、いけるとか無駄だからやめとけとかお願いします。
まともなUARTなら、1文字毎に調歩同期するので1%のズレなら問題ない筈です。
まともな対応は、まずソフトを疑う事でしょうね。
それともPC側の動作がおかしいの?
双方STOP2にすれば解決するの?
630 :
628:2007/07/18(水) 08:19:24
双方STOP2にしたら解決しません。マイコン側が115.2に対し116.4733で1.1%速い状態。
66文字目辺りでSTOPbitの幅の半分以上ずれるので、次のstartbitを検出しなくなります。
PC側でSTOP1だと思ってて、マイコンからSTOP2で送出すれば、1文字10bitの中では
bitの真ん中近くでサンプルでき、次のstartbitが規格より若干遅めに来るように見えるのでは
と考えたのですが。
>1文字毎に調歩同期 が始まるのは、「STOPbitの真ん中を検出した直後から」 なのか
「stopbitが所定の時間続いた後から」 なのか、明確にしているuartの石は少ないでしょう。
前者なら多少速くてもついてくるが、後者だとアウトなんですよね。
勘違いしてると思うよ。 調歩同期は、普通はスタートビットの検出で同期するから調歩同期。
双方stop2にして解決しないなら、受信側がデータを取りこぼしてるか、送信側が送りそびれているだけだろ
ハードを疑う前に己の無能を疑えってところか・・・
ストップビットは、普通は受信ではUARTの設定出来ない。 2だろうが1.5だろうが、受信時は1固定が常識。
常識通りになってないUARTが存在するのかもしれないが、
まあ、普通はない。
だから双方ストップ2にしてみる事だね。
634 :
628:2007/07/18(水) 14:18:20
>>633 やってみます。
双方STOP2にしても受信側が1つ目のSTOPbitでstart待ちに遷移するならば解決しますね。
>>632 オシロでは送出文字のbitパターンは確認できてますから、送りそびれてないのは確認
できてます。
>>628で、PC側でデータを取りこぼしてると言ってます。
>>631 スタートbitの検出で同期するのは理解してますよ。その先の状態遷移はいろいろ実装
方法があるのです。ふつうはstartbit検出の後、所定のクロックで規定される「bitの真ん中」に
当る時点で8bit[+pari][+stop]を検出して、RXDがHiであればstartbit検出待ちに戻る、Hiで
なければ(フレーミングエラーを表示し)Hを待ってからstartbit検出待ちに戻る、でしょう。
で、628のように送信側のクロックが少し速いと、最初のうちはbitの真ん中付近でサンプリング
してたのが、次のバイトではstartbitの立ち下がりより僅かに遅れて検出が始まり・・・で数十byte
後にはサンプリング位置がbitの境界からずれて正しい検出ができなくなります。<--byte中の
Lobitをstartだと思って検出を始めるから以後間違った8bitかフレーミングエラーが連続する。
これをどうやって救おうかというネタなんです。
635 :
628:2007/07/18(水) 14:59:11
私はH8マイコン側のuartの動作しか理解していませんが、それには「startbitの立ち下がりで
同期を行う」(以後各bitの8/16の位置でサンプリングする)と書かれています。また、STOP2の
場合は2bit分マークが続くことを見る、となっています。ここに少し「ごまかし」が感じられます。
(図では書いてあるが言語による明記が無いから)
マークの1bit分の時間より僅かに早く次のstartbitの立ち下がりが来たとき、おそらくマーク半分
過ぎていれば次のstartbitの立ち下がりは検出できるのでしょうが、半分より早く来た場合は
ノイズとみなしてRXD=Hを待ってから立ち下がりを検出するようになっていると推測します。
~~~~|___|~1~|~2~|~3~|~4~|~5~|~6~|~7~|~8~|~~~| (左が先)
_________________________________________________|<----次のstartbitがここより早くなると同期できない
半分かどうかはともかく、「末尾マーク開始〜終了の間のどの辺まで次のstartbit立ち下がりを
許すマージンを採るか?」については石の設計者の裁量が入るのではないかとおもいます。
636 :
628:2007/07/18(水) 15:02:16
あ〜、ずれてるorz 次のstartbitがここより・・・の縦棒は、末尾マークの中です。
俺は9割、PC側の受信プログラムの何かミスだと思うけどね。フロー制御してないとかさ。
まあでも、
PC側に使ってるのはUSB?
普通は、ボーレートの16倍でサンプリングするから、そういう事はないのだけど
変な設計のものがあるのかもしれないね。
あるいはPC側のボーレートも2%くらいズレてるとかさ
でもまあH8なら STOP2にしても、受信時のSTOPビットは1ビットしか見ないから大丈夫。
>>635 ロジアナで本当にずれているのか確認する。
UARTにズレのないクロックを供給してみる。
とかやってみれば...
639 :
628:2007/07/18(水) 17:33:06
双方STOP2にしてもダメでした。PC側はhtermで、フロー制御はなしです。
PCによって取れる奴と取れない奴がありましたから、機種により、送信データの先頭でしか
同期を取らないPCと、1byte毎に同期を取り直すPCがあるようです。
マイコン側をSTOP2、PC側をSTOP1にしてもダメなPCはダメでした。
>>638 クロックは判っているので、ずれているのは確かです。別のチップの都合で今は変な
クロックを使ってみたのですが、だめなら分周して誤差ゼロになるクロックに変えてもらうこと
になるでしょう。
>>639 誤差は1%以内にしてくれってデータシートに書いてあるけど...
外れのハード屋に当たったみたいだね?
PC側のクロックをマイコン側に供給してやればいいんでない?
642 :
628:2007/07/18(水) 18:25:12
>>641 それはないでしょう。1本でも接続する端子は減らしたいもの。RXD/TXD以外はヤだ!
ってのが本音かと。
>>639 別チップと共通クロックで動ければ水晶1個ケチれてラッキー!ぐらいの発想で始まった
ので、そんなに外れとは思いません。今回の確認で、僅かに違うだけなのに水晶2個になるのは
ちょっとくやしいです。
>>640 そうですね。私も20MHzの8bitのときは確か1%弱で収まったので、今回もその位を期待
したのですが、1%強になってしまって・・・弱と強がこんなに違うとはビクーリでした。
>>642 通信なめたハード屋みたいだね?
0%になるクロック使えばいいのに?使えない理由でもあるんかね?
絶対628の単なる勘違いだと思う
この人って口ぶりからして「自信満々に勘違いする」タイプの人だよw
オシロで確認したから送信側に問題はないはずだ、ってオシロでそんなこと
わからないだろうw
>>639 フロー制御してないから、単純に取りこぼしてるのだろう。
今どきUARTのデータ取りこぼすようなトロいPCなんてそれこそありえないでしょw
どうせマイコン側が9bitモードの設定になってるとか、そんなマヌケなオチだと思うよ。
UARTなんて±3%ぐらいずれてても平気で受信しちゃうわけで、1%程度の誤差で
同期がとれなくなるなんてありえない。
それにそんな理由なら受信するバイト数とは無関係にそういう現象がおこるはずだ。
廃人嗜好のハード屋が湧いてきた...
>送信データの先頭でしか 同期を取らないPC
そんなことないやろ
PC内臓のUARTなら16550互換の筈で、わざわざ新規に設計した方がコストアップになる。
ありえん。
>>642 >
>>641 それはないでしょう。1本でも接続する端子は減らしたいもの。RXD/TXD以外はヤだ!
つまりそれは、FGも繋がないからノイズ出捲くりでもOKだし、ハードウェアハンドシェイクも捨てると言うことで宜しいか?
#まさか、SGも繋がないとは言わないだろうけれど……
>>646 電池駆動の1個10円で製造するようなマイコンでは
取りこぼしする程度の性能しかないよ。おまえは組み込み系の
底で動くマイコンをしらなすぎ
>>650 富豪プログラミング(違)に慣れてるんだろう。仕方ないよ。
まあ、3本で通信なんていくらでもやったけどな。
て言うか、ボーレートも書いてない時点でネタでしょ。
# もしマジなら、シンクロとか言う前にレンタルでいいから
# プロトコルアナライザ借りて見てみることだな。
>>650-651 >>628はマイコン側で受信に失敗してるとか言ってないの。
っていうか、日本語読めないのかな。
誰がマイコンの話してるんだ?
意味わからんよまったく。
>>653 マイコンの話は主眼じゃないでしょ
そういう劣悪な環境でもちゃんと動作するプログラムを書く人がいる
一方でまともな環境なのにろくに動かないプログラムを書く人もいる
という話なのに何をいっているのか
引っ込みつかなくなってるだけだろ。
いちいち突っ込むなよ。
>>628 ところで、なんでFIFO付きを使ったの?
なんか一癖ありそうと思って、俺は敬遠して普通のSCI使ったんだが・・・(SH7080)
おまえは三度バッグや
660 :
628:2007/07/19(木) 07:26:08
うを?なんか盛り上がってる(w
>>658 H8/2378 です。SHじゃないからFIFOつきじゃないです。
>>644 オシロで各byteのbit構成見れますよ。きっちり矩形波で、角がなまってないとか、1bitの
長さからクロックも判ります。
>>643 使えない理由ではなく、
>>642のまんなかの理由です。
>>649 グラウンドはあります(w ハードフロー制御はたいてい使いません。
>>646 CPUは早くなっても割り込み禁止期間はそう短くなってるわけじゃないから
115,200bpsとかだと、フロー制御無しだと厳しい場合もあるんじゃないの?
ひょっとしてPCのUARTも米粒マイコンみたいに1バイト送受信するごとに
割り込みがかかると思ってるの?w
16550だろ?FIFOが入ってるだけで H8のようにDMAやってくれるわけじゃない
10*16/115200で 1.4ms割り込みが禁止されたらアウトだろ
>>663 そんな時間割り込み止めるような設計する方が...
どんな最低でも数100MHzで動いてるCPUでUARTのHWバッファを読むような
「あくびが出るような」処理をわざわざ抑制する理由ってあるのかねw
Windowsってそんな間抜けな設計になってたっけ?
うん
FIFOケチっておかしなことになってた。
>>665 割り込み禁止でなくても HDDのDMA転送とかでバスが占有されて動けないとかさ、色々あるんじゃないの?
なんといってもレガシーだから、古い設計のままの部分同士が喧嘩するのかもな。
といっても19200bps以上はフロー制御入れてるから、実際そんな事になったわけじゃないが
>>635 のようなUARTが存在するよりは割込禁止やバスが占有されて取りこぼす事の方がありえるように思うよ
空気をよまないビデオカードとか。
そういえば、数秒間割込み禁止でつっぱしるSCSIカードなんて物も昔はあった…
いやぶっちゃけて言って、ノーマルペンティアムの時代からUARTの受信バッファが
オーバーランしちゃうなんて話はただの一度も聞いたことない。
>>673 そういう「俺だけが他の誰も知らない真理を知っている」的な心情って
むしろ身の程知らずま馬鹿にありがちなものだと思うんだけど、
自分で書いてて恥ずかしくならないのかね。
こんなスレにいるんだから貧弱なHWの経験の方がむしろ多いぐらいだ。
ただ、俺は君と違って「ハード寄りのコードを書いてる俺の方がPCのプログラマより
ずっと高級なんだ」なんていう恥ずかしい勘違いは決してしないが。
ずっと低級なんじゃないの?
ずっと高給だからどうでもいい
低速野郎が湧いてるだけ?
>>674 > そういう「俺だけが他の誰も知らない真理を知っている」的な心情って
いや、このスレだと
>>671 だけが知らないってことだと思うぞ。
て言うか、何でそんな被害者意識満開なの?
被害者妄想ねえw
嫌味が通じないようだからはっきり言うけど、
そんなことは断じてありえないから言ってるんだけどね。
486以降のCPUにとってUARTの割り込みを拾うなんて回転すしの皿を取ること以下だぞw
>>679 Winがシリアル取りこぼすのは処理能力の問題じゃなくて
デバイス丸見えなドライバ構造とアバウトなタスクスケジューリングの
せいじゃないのか?
>俺は君と違って「ハード寄りのコードを書いてる俺の方がPCのプログラマより
>ずっと高級なんだ」なんていう恥ずかしい勘違いは決してしないが。
なら黙っておればよい。
↑の文は「俺もハードよりのコードを書いてるんだぜ」という意味の言葉であり
慢心がありありとみてとれる。
だから他人から低級と揶揄される。
>被害者妄想ねえw
>
>嫌味が通じないようだからはっきり言うけど、
>そんなことは断じてありえないから言ってるんだけどね。
だが、被害者妄想かどうかは自分では評価できない。
従ってまた愚かさを露呈する。
半年ROMってろ
それ以前に 取りこぼさない ということを前提にコードを書いて欲しくない。
コード書き始めて2年ぐらい、オーバーランとフレーミングエラーが何のことか解らなかった。
ちょっと前に似たような流れがあったなw
>>671 そりゃ9600bpsなら取りこぼしは無いかもしれないが115200bps、230400bpsとか 460800bpsの話をしてるんじゃないのか?
FIFOに余裕があればオンボのUARTで115200bpsぐらいは問題ないけど、負荷かけると厳しいかも?窓
>>679 > 486以降のCPUにとってUARTの割り込みを拾うなんて回転すしの皿を取ること以下だぞw
そりゃそれに専念してりゃね。
そんなもんに構ってられないようなシステムなんて想像もつかないんだろ?
>>685 115.2Kbps ぐらいまでは惰性で理解できるけど、460.8Kbps なんかは UART でやるべき
なのか?
>>687 だから専念しなくて済むのと引き換えに「割り込み」という、
システムに有限個しか存在しえない割り込みを消費してるんだよ。
でなきゃ何のための割り込みだよw
しかし、なんか学生クンが多いのかね。
>>688 そりゃ PC だけ性能があるマシンを組み込み用に使えば、まったく余裕のよっちゃんだろうけど
windowsで絶対大丈夫なんて、それはタマタマ旨く行ってるだろだろうに
この前も、USB-シリアルブリッジのICのRTS/CTS/DTR/DSRをパラレル的に使ってて
それじゃ1Kの入出力も保証できないよって言ったら、 いや20Kで動いてるから20Kだってさ
トランザクション単位に送ってくれるドライバもあるかもしれないが
フレーム単位にしか処理しないドライバだったらどうするんだよと
パソコンとセットで売るんならいいんだろうけど、どのパソコンでも動くもん売ろうと思うなら
取りこぼしはありえるとして設計するべきだと思うよ。
もう何いっても馬鹿には無駄だな。
486時代だって理論上ほぼ完全にありえんと言ってるのにw
いやまあ、こういう筋書きならよく聞いたりしたことはあった。
VBでMSComm使って機器と通信してるんだが、機器からの送信データを取りこぼしが
頻繁に起こるという。
で、どんな処理をしてるのかたずねれば、UIスレッドで発生するVBのイベントを
マイコンの割り込み的に使って、つまり数バイト受信するごとに発生する(はずの)
イベントで受信処理を行うんだと。
そのプログラムを書いた彼は、これはWindowsにリアルタイム性がないからだ、
とOSのせいにしていたが、俺に言わせればそんなのプログラムの設計が根本的に
間違ってるだけの話だ。
なんか違う方向に行ってないか?
元を正せば ”PCが” 受信データを取りこぼす(
>>628)
って話じゃなかったか?
で、”(Winの)PCが”処理おっ付かなくて取りこぼすなんてことは
絶対無いと(
>>646)主張してる奴が居ただけのような
単純にかみつきやすそうなレスに噛み付いてるだけの
構ってちゃんが居るんじゃないのか?
>>691 うんうん。つまりこうだね
PCでもS/Wの設計が不味いとシリアルの取りこぼしは「容易に起こりうる」 と
これを問題が起きてる奴に向かって「絶対に起きない」とは、
普通言わないんじゃないかな?
取りこぼさないという事は、それなりのFIFOが入ってないと無理だと思うんだが
そのFIFOのサイズは規定されてるのか?
取りこぼさないと言ってる奴はどのwindowsでもそのサイズが十分にあるという事を言いたいのだろ?
windowsアプリは10ms下手したら100msくらい処理時間をもらえない場合も普通にあるわけで
>>695 自分の世界にこもってる人が問題ないと言ってるだけのような気がする。
>>694 また馬鹿なことを言うよ。
問題の切り分け、という概念がチミの頭には存在しないのかい?w
OSのネイティブな機能として取りこぼしが起こりうるか、って話をしているのであって(以下略
っていうかありうるって言ってる奴はそれ実体験を語ってるの?
>>695 それはUIスレッドの話だよw
というか、君割り込みってどういう物か理解してるかい?
>>698 そりゃ組込屋だから理解してるが、割り込みがかかっても
データを取りこぼさないには アプリがデータを見れるまでFIFOに保存しておいてやらんとあかんだろ。
そのFIFOのサイズは十分にあるのかい?
windowsアプリは専門外だから詳しくないのだが、どうもハードウエアFIFOそのまましか見えないように思えるのだが?
まずデバドラレベルでバッファリングされてるし、もし必要ならアプリレベルで
フリースレッド内でバッファリングすればいいからね。
フリースレッドに制御がなってこない時間が10msのオーダで発生する、
というのは異常でもないかぎりないから取りこぼしはまずあり得ないねえ。
いや694みたいな人がいるから別のより正確な言い方をすると、
取りこぼさずに受信するコードを書くのが不可能、ということはありえない。
だから、そのFIFOのサイズはおいくら?
そのサイズによって、どのボーレートで
10msが十分な時間間隔かどうかの答えが出るんだからさ、それを書かないと、単なる妄想やろうだろうに
>>703 あの、FIFOとリングバッファは違うんですけど...
>>703 なるほど。 この設定をしていれば、後は割り込みの禁止区間が異常じゃない限りはまあ大丈夫だろうな
FDDやUSBに受信しながら書き込むとかじゃない限りは
>>704 いや、このリングバッファはFIFOの事だよ。
>>705 リングバッファはFIFOだけど、俺がいってるのはUARTが持ってるFIFOのことです。書き方が悪かった。
ハードウエアFIFOは16バイト固定で、これが溢れるまでに割り込みがかかればOK
リングバッファは設定可能で、その設定したリングバッファが溢れるまでにアプリ層からアクセスすればOK
という事で、正しく調整されれば、まず溢れる事はないだろう。
もっとも割り込みが1mS禁止されるなどの状況がありえるパソコンなら別だろうけど
>>707 ハードウエアFIFOが16バイトで足りないときがアルんですよ。
足りない場合は、割り込み禁止期間を短くして対応して下さい。
それが出来ないならフロー制御をして下さい。
>>709 回避方法は色々あるけど、32バイトは欲しいところ
ご要望はわかりましたが、残念ながらすでにあるパソコンはそうなっていませんのでご了承下さい。
制御系プログラマは、与えられたハードで工夫するのがお仕事ですので、がんばって下さい。
金勘定の発想じゃ、制御は無理だから、早く撤退しなさい。
廃人増やしてどうする、金勘定系。
でもまぁ
>>711の言い分が全てだと思うよ。
今までで一番ひどかったのは
ピン番間違えてふつーのポートにつながったシリアル入出力を無理やり
手で実装したことかな。
悲しいけど、やってて楽しいんだよなこういう車輪の再開発って。
まだ8251の呪縛から抜け出せてない香具師がいるのか
>>715 呪縛っつーか16550なんて8251にFIFOつけただけみたいなもんだろ
>>717 制御すること考えると結構違いがあると思う。
>>688 > システムに有限個しか存在しえない割り込みを消費してるんだよ。
って書いてるから、割り込み要因が複数あることは知ってるのに UART
の割り込みに構ってられないほど上位の割り込みがガンガン来る状況は
想像できないんだな。
>>707 > もっとも割り込みが1mS禁止されるなどの状況がありえるパソコンなら別だろうけど
>>710 > 回避方法は色々あるけど、32バイトは欲しいところ
ボーレートもPCの性能もわからんのに、根拠のない値を言い切る奴って...
あーもうこれだから知恵のない奴というのはw
>構ってられないほど上位の割り込みがガンガン来る状況
そんな状態はそもそも正常な状態ではありません。
異常な状態です。
異常な状態は、(そういう状況が起こらないようにシステムトータルで考える
べき事柄であって)プログラマが考慮すべきことではありません。
端的に嘲笑的に言えば、君はたとえば何事かの処理が可能かどうかを考えるときに、
CPUが熱暴走する場合のことも考えるのかい?w
そんな場合のことを考えるのであれば、すべてのことが不可能だといわざるを得ないね
>>720 温室の中では本当に動くプログラムは書けないぜ、坊や。
>>720 >CPUが熱暴走する場合のことも考えるのかい?w
・・・つーかこれ、普通に考えるべきことだろ。
山頂に設置する無人ロガーが熱暴走したときに
交換費用請求されたらイヤだろ。
DOSベースの古いWindowsだったら割り込み禁止期間が長い場合もありそうだから取りこぼしもあるんじゃない?
駄目なVxDとかいかにもありそうだ。
NTベースはまず無いと思うけど負荷100%が持続するような状態だと取りこぼしもあるんじゃないか?
>>720 熱暴走だけじゃないぞ。OSのバグとか停電とか断線とか。
何かの拍子にコネクタ1個外れたら大事故起こしましたなんてのは洒落にならんからな。
そこまで極端な話をしなくても、データ取りこぼしの可能性程度は考慮するのが当たり前。
>>722 人工衛星や惑星探査機で無人ロガーが熱暴走したり
メモリが紫外線や宇宙線にやられたりしても動く作り方を知らないんだろうよ
>>725 どこのメモリがビット化けしてもそれなりに動くプログラムって
どうやって作るかわかんないけど、超憧れるよね。
NASAに就職して勉強して帰ってきたいといっつも思うよ。
>>726 どこのメモリでもってわけじゃないけど、重要なデータを入れる領域だけビット化けに耐える構造にすることは割とよくある。
冗長性を持たせるだけなんでそんなに難しくはないよ。
WDTセットしてから 処理、リセットしてループ。全部状態遷移で頑張る
って方法なら使ったことあるんだけど これって一般的なの?
1K毎にCRC16入れてくだけでも一応はエラー補償できるな。
そういえば普通磁気記憶にはCRC入ってるよな。
ていうかECCメモリーはエラー訂正するんだよな。
ROMが化けたのは検知できてもどうしょうもないよね
あ〜あ、めった打ちだな
>>720 > 異常な状態は、(そういう状況が起こらないようにシステムトータルで考える
> べき事柄であって)プログラマが考慮すべきことではありません。
まあ、こんなこと言ってるようなので所詮コーダレベルなんだろ、許してやれよ >> ALL
>>728 組み込みなら、一般的だと思う。
>>729 ECC の最後の "C" は、Correct だからな。
最近のサーバでは ECC は当たり前として、メモリーモジュールが壊れた場合に備えて、
ミラーリングで救済して稼動中にホットプラグで交換できるらしい。
>>730 ノイズとかの一時的な要因の可能性があるならリセットとかで復旧を試みるけど、ROM
自体が化けてると訂正のしようがないから致命的エラーで止めるしかないと思う。
>>731 昔から設計するときECCは当たり前(必須)だったよ
今はなんでもサーバっていってるから市場が違うのかもしれんが…
組み込み屋じゃなくてすまん
>>719 じゃ、おまえが模範になる質問回答をやってくれ。
>>731 メモリに限らず、電源もホットプラグ交換できるね。
同じ会社のサーバ機でも、ダメなシリーズはただのPCだけど。
>>732 ああ、「最近のサーバでは ECC は当たり前として」を「昔のサーバでは ECC が当たり前
でない」と取っちゃったか。句読点の打ち方まずったな、すまん。
× 最近のサーバでは ECC は当たり前として、メモリーモジュールが壊れた場合に備えて、
○ 最近のサーバでは、ECC は当たり前としてメモリーモジュールが壊れた場合に備えて、
>>733 なんに噛み付いてるのかさっぱりわからん。
理解力もしくは説明能力がないんだろうな。
>>734 あと、FAN とか CPU や PCI ボードまでできる奴もあったりする。
> 同じ会社のサーバ機でも、ダメなシリーズはただのPCだけど。
まあ、安いサーバの構成は PC とほとんど同じで、保守とかが違うだけと言うのもありが
ちだし。
ttp://www.nikkeibp.co.jp/news/flash/540166.html なお同社は19日、柏崎刈羽原発で記録した地震観測データを公開したが、
97台ある地震計のうち旧型の63台で、本震データが消失していたことも
明らかにした。通信回線が混雑しため、本震データを東京のサーバーに
転送する前に、地震計内部で余震データに書き換わってしまったという。
3月の能登半島地震の際も北陸電力の志賀原発で同様の事象が発生していた
ため、東電では2008年度までにすべての地震計を新型に更新する予定だった。
タイムリーで激ワロス
組み込みでこんなプログラム作ってたらすぐクビだろ
じゃあどんなプログラムを作れって言うんだよ頭悪いなw
上書きしても地獄、更新を停止しても地獄。
どのみち地獄は回避できないんだぞ。
もちろん「回線が最大N日死ぬ場合を想定してシステムを設計すべし」という
批判なら批判として成立する可能性は無くもない。
その場合、そのシステムが設計された時点でそれが技術的に可能だったかどうかの
判断が必要になる。
問題をプログラムの問題に矮小化するのは
>>719と同類の愚を犯してるよ。
プログラマとしては、考えても仕方がないことは仕方がない。
もちろん、「想定外の異常が発生した場合、より害が少ない方に倒れるようにする」
という安全工学の発想を否定するものではない。
とっとと地震計を交換していれば起きない問題だ。
1ブロック毎にPW=ΣdX^2を求めておいて
どうしても削除しなければならない場合は、この小さいものから順に削除してゆくというアルゴリズムくらいは実装してよかったのかもな
つーか、混雑のためって、、、、、
そんな重要なデータ送るのに公衆回線つかうなよ
>736
一部中の人だけど、地震計ってたぶんどこのメーカのものも古い順に消去するか、最大加速度の小さい順に消去するか、
どちらかでできるようになっているはず。それに地震の波形データなんてただの飾りですよ。偉い人には(ry
だいたい壊れちゃった(壊れかかった)建物で測った波形データそのものが死活的に必要なはずがない。何に使うのよ?
あ、ちなみに地震計は組み込みですよ。当たり前だけどWindowsなんて怖くて使えない。周辺では使うけど、
故障することを前提にシステムを組むのは当然。
>>739 とっとと地震計を交換している真最中だったらしい。
新型に交換済みの分のデータは無事だったらしいよ。
744 :
デフォルトの名無しさん:2007/07/22(日) 13:43:41
このシステムだっけ?保存に64MのCF使ってたのは
前回の時点で容量増やしてプログラムをちょこっと修正するだけでも違ったのにな
>>744 電力会社だからな。ちょこっと修正するだけでも手続きとか予算とか大変なんだろ。
実際にリプレイス中だったんだから上出来ではないかと。
746 :
デフォルトの名無しさん:2007/07/22(日) 17:52:07
【派遣ネガティブ根性チェック】
3つ以上、チェックがつけばアナタの性格はひん曲がっており、
ネガティブ負け組派遣人生を歩んでいます。
□派遣先正社員の作った糞開発ツールはたとえ腐っててもマンセーして使う
□派遣先の人事権のある社員の意見はたとえ間違っていてもマンセーする
□仕様とは正社員から口伝されるものだ
□耳で聞いた仕様を正確に覚えていないのは自分の責任だ
□昼食は必ず派遣先の社員と行くべきだ
□自分の仕事で問題が発生しても解決するのは派遣の仕事ではない
□派遣先から「いつまでもここで仕事してくださいね(安い金でw)」と言われて嬉しい
□自社で仕事なんてできるわけがない
□派遣労働の問題点の話題が出ると感情剥き出しにして反論する
□派遣労働の問題を指摘する人は嫌いだ
□派遣先には仕事だけでなくプライベートについてもグイグイ引っ張って欲しい
□奢ってくれる派遣先正社員を尊敬する
□自分の月額金額を知らないのは当然だ、単金を聞いてはいけない
□派遣先正社員より自分の生涯収入が低いのは当然だ
□チビは派遣先にかわいがってもらいやすいから派遣には有利だ
コピペ君って馬鹿だな、まで読んだ。
748 :
デフォルトの名無しさん:2007/07/22(日) 17:58:44
コピペ君って馬鹿だな、まで読んだ。 ってレスって人生負け組派遣野郎だな
ま、勝ち組とか言ってる奴の方が...
720=737の香りがしますですねぇ。
知恵のない奴とか頭悪いなとか書いてありますけど、もうちょっと謙虚に
構えた方がいいかもね。
多分コーダレベルでシステム全体のことをあまり考えずに済むから天狗
になってるだけだと思う。
>>720 >>構ってられないほど上位の割り込みがガンガン来る状況
> そんな状態はそもそも正常な状態ではありません。
とか書いてるけど、だからできませんとか言うのは簡単だけど、そんな
ことではお飯のくいぶちが減っちゃう。このときは、シリアル側でリト
ライするようにして、取りこぼしても正しく動くようにした。
>>736-737 の例は、中身をよく知らないので、新聞読んだ時は大きな波
形を残せばいいのにと思ったけど、
>>742 によると既にそういう設定も
できるらしいので、プログラムの問題と言うより運用の問題と思う。
まあ、この世界自分の知らないことはたくさんあるので、「謙虚」な心
を忘れるとダメと言うことには、激しく同意する。
あそうそう、先月か今月の組み込みプレス(名大の高田先生とゴーカートが
表紙のやつ)の記事で、詳細は失念しましたが「ここの消費電流は、この○○は、
などと聞かれたら『わかりません』と答えればいい」とかいうような記述、
つまりはハード寄りのことはわからんと開き直っていいということが
書いてありまして。
組み込み初心者の教育を売りにしている(ように思える)こんな雑誌が
こんなことでいいのかと思いましたよ。
>>752 いや、「S/W技術者にとってH/Wのことは知ったことじゃない」って
文脈でもない限り、分からん物を分からんと言わずに
適当に答える奴が一番危険で、エライことになることもあるから、
あながち間違いじゃないだろ。
客や素人は、何の専門家なのなんてことは気にしないのが普通なんで、
相手次第で「詳細なデータは社に戻って確認してから〜」といった
言い回しでその場は切り抜けて、専門家に振るといった対人スキルの
問題なんかは、学者先生の知ったことじゃないんだろう
そういうときは自分が想定(想像じゃないよ)している値を
回答するのがS/W屋として一番誠意ある回答じゃないの?
なにしろそのとおりに作っているんだし
客相手だとたとえ正しい内容でもそのまま回答するとまずい
ケースはあるよな。
逆にブレーンストーミングやってるなら、突拍子もない意見
でも言わないよりはマシだったりする。
要するに、文脈を想定せずにどうのこうの言ってもしょうが
ないってこと。
そりゃそうだな
頼む方もいいかげん、受ける方もいいかげんなら、言葉遊びに走るのは当然でしょ。
>>751-752みたいな発想って日本のガンだと思うけどね。
本人はおそらく全く自覚がないと思うが、これって帝国陸軍の精神主義そのものだよw
それは「科学する心」と正反対のものだ。
まったく自覚がないが、どこに突っかかってきてるのか教えてくれ。
>>758 可能な範囲で努力するのと不可能なことをやろうとするのは全く違うと思うよ。
たまにいるんだよね、簡単にできることなのに不可能だと言い張る奴。
>>760 じゃ、君が手本を示してやればいいじゃん。
知らない事はできない。でも、知ろうと努力することはできる。
763 :
760:2007/07/24(火) 21:56:32
765 :
760:2007/07/24(火) 22:25:17
でもさ、「難しいです。でも出来ないと思うけど、一度やってはみたいですね」 と言ったら、
いつの間にか出来る事になっていて、しかもその会社の命運をかけられて、
胃に穴を開けながら仕事してるうちに、その会社潰れた経験した俺としては、
「出来るかもしれない」レベルなら「出来ない」と客には言うべきだと
>>766 それはいくらなんでも、会社がバカなんでしょう
君が気にする事ではないと思う
「できるかもしれない」を「必ずできる」と受け取ってつぶれるような
リスク管理のできない会社や客は淘汰されるべきだな。
議事録にでも記録しておいてなんか言って来たらそれを証拠にしる。
わざと実装ミスするところよりはマシだと思う。
>>766 それはいくらなんでも、会社がバカなんでしょう
君が気にする事ではないと思う
>>766 出来ないことが分かった時点でちゃんと「出来ない」と主張しなきゃ。胃に穴を開ける前に。
>>769 なんだそりゃ?kwsk
やっちまった〜、hoge = huga==1 ? yy:zz; はだいじょぶなもんで、
hoge = huga ^= 1 ? yy:zz; って書いてしまったorz
hoge = (huga ^= 1) ? yy:zz; のつもりだったが、
hoge = huga ^= (1 ? yy:zz); と解釈されるのね。かっこをサボると痛い・・・
まぁなんてかっこわるいw
「ここ、別に括弧要らないんだよね・・・」
なんて言う奴、多分居ないから
付けといてよ・・・括弧
自分だって「別に優先順位に自信が無いから括弧付けるんじゃないんだからね!」
と心でつぶやきながらコーディングしてるよ
俺は優先順位に自信が無いからカッコつけてる
論理演算が絡むともう駄目
776 :
772:2007/07/26(木) 18:05:09
そうですね。俺も別にかっこアレルギーってわけじゃないんで、
ビキニみたいにぎりぎりつけない主義ってわけじゃないんです。
後でC&R見たら、比較式>?式>^=式 だったので、1段階差でした。付けりゃよかったorz
C&R?
ビキニ括弧スタイルか
そういう信条の奴っていそうだな
C&R の検索結果 約 796,000 件
ごめん、K&Rだった・・・背表紙のC見て脊髄レス
アセンブラの出力みて、判断する方が簡単なのでは?
そういう小物のテストプログラム持ってると、マイコン変わったときに有利なような気がする。
772もASMコード見て気がついたんだ。わりとASMリストはよく見るほうなんだけど。
バグるのは気にも留めないようなとこなんですよね。
あってそうで、間違ってることって結構あるよ。
て言うか、
huga ^= 1 ? yy:zz;
を見て、
(huga ^= 1) ? yy:zz;
って解釈されると考える奴の方がおかしいと思うけど。
コンパイラの吐くコードにも気配りしないと痛い目会う事があるよ。
最適化したら動かなくなったとか
制御とはちょっとスレ違いになるが、
PCがヂュアルCPUの時代、最適化がどれだけ影響するかが気になる。
パイプライン、先行命令実行、コアを増やすしか能がなくなってきたノイマン型CPU
そろそろ新しいアーキテクチャでも考え始めるか<偉そう
>>786 びっくりするほど性能差が出るようになったよ。
しかも、人間には最適化はほぼ不可能。
でもまあアルゴリズムの詰めとかはこんぴゅーたには
まだまだ無理だから、人間にしか出来ないことはまだまだ多い
788 :
786:2007/07/28(土) 02:02:45
なるほど。サンクストン
それでバグが出なければおkだ。
最適化とアルゴリズムなんて最適化アルゴリズムって事以外の関連性は無いだろ。
だいいち、最適化ってやつは、パラダイムシフトを伴うようなエポックメイキングなアルゴリズムを生み出してくれる物じゃないからな。タダの因数分解みたいなもんだし。
コンパイラが最適化したコードを手本にしたことあるけど...
メーカーのサンプルプログラムくらいはコンパイラの最適化を考えて組んでほしい
volatileくらい付けとけゴルァ
その前にループで時間待ちするなゴルァ
ヘタレのサンプルプログラムなんかみるなよ。駄作ができるだけ...
>>793 メーカーのサンプルだって人の子が作ってるんだから、
ヘタレサンプルも結構あるよ。
誰がどうみても本番には使えないコードにすることで
「お前らがちゃんと書けよな」という意思を示している。
>>795 それ下請けか派遣だから…
社員が作ってもひどくなることは想像に難くないけどな。
「それ」だか「これ」だか知らんけど、いったいどこの会社(どの業界でもいいが)
の話をしてるんだ?w
まあ、「この」業界にはこういうイタい奴らが多いのは確かだな
H8やKC80のサンプルのページ見てると、ホントに「その回路だけが動けばいい」っていう
サンプルが多いよ。下請けだからか、並行処理に使えない書き方を意識的にしてるのか
俺も首をひねったことがある。「まんまパクられても困る」からだろうとおもってる。
サンプルみて、使えるかどうか判断できる人ってどれくらいいるんだろ?
>>799 そもそもサンプルなんて、その回路を動かすための一例を示したものだから、
「並行処理」とか「エラー処理」等の回路の動作に直接関係しない部分を意識
的に省略するのは当然だろ。そんなもんいちいちやってたらわかりにくくなる
だけだから。
そもそも、サンプルを「そのままパクる」なんて発想する奴がいるなんて、こ
の業界もレベル低下が激しいな。
でm、サンプルであったとしても
そういうエラー処理や排他制御を「意識した上で省いたコード」に
なってると とても便利で重宝すると思うんだよね。
汎用的に書くのは難しいのはわかるけど
>>802 何を言いたいのか意味不明。
エラー処理や排他処理をコメントにでも書いとけと言ってんのか?
>>803 まあ、そうなんだけどね。
uartに、8byteだけ送信するコード:TXレディを見ながらループで書いてる、とかね。
新人がこれ見て真似したらどうすんじゃい!とかおもうよ。
わかってやってるなら、いいじゃないの?最初はそんなもんだと思うけど...
>>805 それはその新人を教育した香具師が悪い。
私のところでは、「サンプルは信用するな、Webは信用するな、過去のソースは信用するな」と言ってある。
むしろ無能な奴ほど「新人は馬鹿だ」みたいな妄想を抱きたがる法則。
>>807 それ、信用して痛い目にあったバカですって言ってるようなもんだぞ
それなら基本的に信用してもいいんじゃね?
問題が出たか予見できるなら変更で
うちに、「サンプルくれ」って言ってくるところが有るヨ
俺が書いたのを出してるヨ
でも、信用して欲しくは無いヨ
うちでは隣のポートも塗りつぶす罠サンプルを提供してるよ♪
設定→設定読みだし→デフォリセット→設定読みだし
という検査用のテストベンチをそのまま流用されて
「設定が反映されないようですが? おたくの製品は以下略」と
申されたお客様がいるぜよ?
テストベンチだっつーのそれ! と回答したぜよ?
EEPのアクセスルーチン書いてます。readは(アドレスから何バイトでも)読めるからいいですが、
write(addr,buf,len)で、任意の長さ渡せるようにしたい。その中でページにわけてページごとに
waitする必要があるのですが、
*** (半端)
********************** (ページfull:nページありうる)
****** (半端) こんなふうに切り分けるうまいアルゴリズムありませんか?
ページの途中からそのページ内だけ、の短い長さもあり。
あ〜、ずれた *** (半端)
********************** (ページfull:nページありうる)
****** (半端) こう書きたかったの。
がんばれ
EEPの型番は?
>>817 そんなもんアドレスをページサイズで割った時の剰余で(ry
822 :
817:2007/08/02(木) 07:29:32
>>820 ありがとうございます。似たようなこと考える人は居るんですね。参考にさせてもらいます。
823 :
817:2007/08/02(木) 10:53:58
>>820 243のでほぼそのまま使えそうです。サイズ0のガードも入ってるし簡潔だし、いいですね。
キャラクタLCDのsc1602を制御してるんだけど、
DDRAMポインタの移動がよくわからない。
0x80+x+0x40*yでセットできるみたいだけど、なんで2行目はアドレスが0x40
からになるんですか?
あ、似たような奴いじってるよ。1行の文字数が20,30,40といろんな機種に共通して使える
コマンド体系になっているの。俺は20*2行=[40]の配列に1,2,3,・・・64,65,66・・・を入れといて
何文字目にポインタ移動したいときはその中身を送るようにしてる。
このLCDのブリンクコマンド、マニュアルには「カーソル位置の文字がブリンクします」
と書いてあるが、「それ以前に他の位置をブリンクさせているとそちらは止まる」という副作用は
しっかりトボけてるの。結局n文字のブリンクはソフトでタイマ張ってやらないとダメだった。
4bitマイコンだからじゃないの?
>>826 > 「カーソル位置の文字がブリンクします」
普通に考えて、ブリンクカーソルのことだろ。
カーソル位置が変わるんだから、それ以前にブリンクしていた
(つまり、それ以前のカーソル位置の) 文字のブリンクが止まる
のは当たり前。
blink厨(は、お客様に多い…Web業界でもな…)
長いケーブルつなぐと文字化けするとかいう不具合で、調査を頼まれたスパゲッティASM
50K行をgrepで引っ掻き回すこと数時間・・・uartのステータスレジスタをアクセスするコード
がいっさい無かったよorz 1バイト読むたんびにエラーリセットコマンド書いてたよ・・・
元の書いた奴締めようにも、どこにいるのやら。 ええ、正直に報告はしましたよ。
エラーリセットコマンドって!?
ステータスレジスタみないんだからエラー処理でもないだろうし…
データシート読めない素人が誰かの真似してコード書いただけでしょ。
そういう方法を使う事はあるけどな。
エラーフラグをチェックするには分岐しなくちゃいけなくて割り込み時間が足りなくなるから
とにかくデータを全部FIFOに放り込んでエラーリセットだけして
・・・・チェックサムだけが頼りになるけどさ。
そもそも「長いケーブルをつなぐと文字化けする」のは通信経路の問題であって
コードのバグじゃないと思うんだけどなw
意味がわからん。
>>834 >830を読む限り、ハンドシェイクさえできてなかったって話に見えるが。
>>835 そういうトンマな反論をする奴がいるだろうな、と予想してたけど
ハンドシェイクなどという物理層より上の話をしているのなら
「uartのステータスレジスタ」なんて言葉は出てこないだろう。
837 :
830:2007/08/26(日) 07:36:36
ケーブルは60メートル、微妙な長さです。50mを超えると、信号の矩形波がなまったり、
1のbitの電圧が敷居値付近になって0に化けたりします。
まともなuartのソフトなら、RXDレディ割り込みのたびにステータス見て、エラーなら扱いを
変えるようになってるもんですが。(そのバイトを含むフレームを捨てる、とか)
今回のシステムではパリティ使ってなく、タイマ割り込みのほうはEIしてますからオーバーラン
も起きない。だからフレーミングエラーだけ見ればいいのに。
ステータスregに対するアクセスがそもそも無いんです。で、受信したフレームから情報抽出
するところでは平気で正常扱いしちゃってるんで呆れたわけです。
今まで何千台も出荷されてきたのに・・・私の責任で直しましょうとかってレベルじゃないので
とりあえず報告した段階です。
>>837 これと
>50mを超えると、信号の矩形波がなまったり、
>1のbitの電圧が敷居値付近になって0に化けたりします。
これと
>パリティ使ってなく
これが
>だからフレーミングエラーだけ見ればいい
が、全く繋がらないわけだが。
データ化けは放ったらかしていいのかよ?
口ぶりからすると物理層はV.24/RS-232Cレベルみたいだが
そもそも60mも飛ばす前提ならV.24を採用した時点でアウトだろ
まあデータが化けるような場合は、フレーミングエラーで捕まえられるようなケースは少ないな
パリティ使ってないのなら、
>>837で書いてるようにフレーミングエラーを無視しなくても文字化けは頻発する。
チェックサムとかで後処理でデータの正常異常を判定するしかないレベルだろ。
どっちにしても、「今のデータ受信出来んかったから、もう一回お願い」 みたいな処理が必要になる。
それが出来るだけ通信速度に余裕があるのかどうかとか、色々考えなくちゃな。
だね。RS-232Cはそんな長距離を想定していない。
# のに要求してくるエンドユーザが多いのも事実
間に差動のトランシーバーかましゃいいんじゃないか?
確か、昔のトラギの特集本によれば、速度依存で200mほどは大丈夫だったと思う。
どんなすごいケーブル使っていたかは知らないが。
分かっていれば会社からその本持ってきてたのにな(個人持ちの本です)。
エラー訂正機構を設けても手間ばかりかかるし、
やっぱ、手っ取り早く
>>841の言うとおり差動型にするか?(RS422とか)
RS232⇔RS422変換するドライバICもあるみたいですよ(うろ覚え)。
それか、ソフトで速度を半分にしたら?
843 :
842:2007/08/26(日) 13:43:22
×ドライバ
○トランシーバ
RS232C<>光ケーブルにすりゃ距離も金もかせげるだろうに
200メートルも伸ばしてOKって、そりゃ、理想状態なら大丈夫だろうけど
普通は電源を別に取ってると 電源間の電位差で直流でさえ通らない。
だからコモンモードノイズが取れるように差動にするのさ
それは差動以前に絶縁しないとやばい。
( ´-`).。oO(
>>833 = エラーリセットコマンドっていうのかな…)
848 :
830:2007/08/26(日) 16:25:20
>>838 1番目は 831や834に対する解説です。2,3番目:あの時代のuartの一般的な書き方
だと、overrun,framing,parity をいっぺんにmaskで見る書き方がよくされてましたが、当system
ではparityとoverrunは見る必要がないはず、ただしframingだけは検出すべき、と言いたかった。
それでもデータ化けは起こるからチェックサムも見るべきなのは当然ですね。
それもやってなかったけど。そもそも「カンマで区切られた可変長のフィールド」というルール
なのに、固定位置から情報抽出してたし。も〜、むちゃくちゃ。
ところで、HD64180のデータシートのpdf、どこかに転がっていませんかね?
本-->SCAN-->CDにしてもらった奴見てるんですが、ただの画像で、文字検索とか
できなくて、pdfの意味ないのorz
850 :
830:2007/08/27(月) 04:49:52
>>849 そう言いたかった。ttpありがとうございます。でも、そこのpdfは全部画像だけでしたorz
生産中止になっても、保守でマニュアルは使うのに・・・メーカー冷たいですね。
OCRも知らない馬鹿がいるときいて飛んできました
最近はPDFあってもコピペ出来ないのが多いから、OCRは重宝するね
相手も測定器かなんかだろ?
>「カンマで区切られた可変長のフィールド」
ってのはあんまり使わないと思うけどな、特にチェックサムが付いてるようなデータでは特に。
854 :
830:2007/08/27(月) 11:07:49
OCRと聞くとコーディングシートを読ます奴みたいのを想像しちゃうんですが、
ソフトであるんですか?pdf食わせるとキャラクタ抽出みたいの。
>>848 日立の古いデータシートはそういうのしかないでよ。
856 :
830:2007/08/27(月) 13:54:17
どうやらそうらしいですね。TIFを英文にするFreeOCRというソフトは見つけたのですが、
pdfをtifにするのにどうやればいいかで困ってます。
857 :
830:2007/08/27(月) 18:24:17
いきなりpdfっていうソフトも見つけたのですが、ソースnextは糞が多いそうで、
まだ糞切りがつきません。
e.typist か 読んでココにしろよ。 どっちも評価版があるから、今回の仕事だけならソレで対応出来るだろ
RTL8019でプロトコルスタック実装してるんですが、TCPプロトコルの実装
についてソースとか参考になるHPありますかね。
電子工作室とワンチップCPUで遊ぼうは知っています。
どっかで見たことあるけど、忘れた。
地道に見つけることだね。
自前で実装したことあるけど、OpenDesignのNo.3が参考になった。
>>859 TCPのソースなんて
xBSDのソースでも見ればいいじゃないか
TCP層まで上がってきたらMACドライバ関係ないだろ
inuxのはRTL8019?の実装ミスってるぽいから注意した方がいいよ。
863 :
830:2007/08/28(火) 06:46:55
864 :
830:2007/08/28(火) 17:53:27
タイピストはpdf入力ができないことが判ってパス。読んでここより先に「やさしくpdf OCR体験版」
を落としてpdf食わしてみました。画像だけのpdfは認識率良くないですが、元のプリントと併用で
なんとかできそうです。
866 :
864:2007/08/29(水) 02:18:57
今のパソコン買ったのが2005年だったので、もしや!と思って付いてきた箱見たら、office2002
でした。残念。854のときは本気でコーディングシートかと思ってましたが、今ではOCRって
そういうものを言うんですね。今まではちょっとした表なんかを選択ツールでコピって貼るぐらい
だったのですが、今回10数頁の20列ぐらいある表を貼ることになったので、目ウロコ体験でした。
うぜえソフト板でやれ
869 :
デフォルトの名無しさん:2007/08/31(金) 14:09:51
64180に、RRD、RLDという命令がありますよね。Aregと(HL)メモリの真ん中辺を回すような
説明図が書かれてるんですが、これってどんな場面で使うんでしょ?ちょっと想像つかない・・・
>>868 単に組み込み用のスクリプトを作るだけなら、自前で作った方が規模に応じて作れるので楽
JAVAを使うメリットはパソコンのコードを再利用出来る所にあると思うが、
それはC言語でも持っているメリットなのでことさら取り上げる程ではない。
>>869 4bit単位に回せるので、パック10進数を処理するような場合に便利
Write once, run anyware…ってな戯言を携帯アプリ屋の前で言ったらぶん殴られそうだw
もうperlの実行エンジン乗っけたCPU作ってくれないかな
>>872 CAP-X、CASL、CASL-IIが出てきたときも同じ事ゆってた人たちがいたよ。
うろ覚えだが、どれかは本当にネイティブASICで作られたと思う。
今なら誰かに頼まなくても、FPGAで実現できるよ。
なんならウチで請け負うか?代金は個人ではちょっと高すぎるが。
>>872 OS/ドライバ開発する苦労も考えろ
回路載ってりゃ動くってモンじゃないんだぞ
どうせ次はPHPとか言い出すんだろ?
>>873 高級言語と仮想マシンのアセンブラ一緒にするのは無茶だろ
ランタイムコンパイラをソフトで実装すればいいんじゃね?
876 :
デフォルトの名無しさん:2007/09/01(土) 14:32:19
Perlでドライバを書けばよろしい
地獄を見そうな気がするんだが
書くのはいいが、保守できないからカンベン>Perl
880 :
デフォルトの名無しさん:2007/09/10(月) 08:28:12
旅のperlは書き捨て
881 :
デフォルトの名無しさん:2007/09/10(月) 18:06:43
制御系の学生なんですが、バイブル的なものあったら教えてください。
個人的なものでも歓迎です。
LEDチカチカ?
バイブ的なものなら転がってるんだがな
>>883 USBとかRS-232Cとかで制御出来るやつありませんか?
実に下らん。
ウンコだチンコだシモネタで喜ぶなんてガキの証拠だと思うんだがな。
まあ自分の幼児性を恥ないのがガキなんだけどさ。
というか、この制御系のスレなのに、ただの組み込み屋(それも8bitマイコンレベルの)
しかいないだろ。
>それも8bitマイコンレベルの ・・・いないことはないが少数派。16bit以上のが多い。
4bitも忘れないでくれよ 海外にシフトされて絶滅危惧種だが
機械の気持ちになって、どうやったら気持ちよく動くか考えることでしょ、コツは?
まつげの長い女と旅に出るのかとおもた
>>882 プログラム書くときは、その考え方するなあ・・・
こうすれば無駄なく軽く動くだろうな、CPUも喜ぶよな、とか考えてる。
動かすこともしないで、机上の空論でごまかそうとするほら吹きがいるような?
動かないハードを”動かせ”とか無理言う奴もいた。
>>887 確かに幼稚だったね。ごめん。でもこういうくだらない事が好きなんだ。
俺はウンコだチンコだとは一言も書いていないけど、それも好きだ。悪いが。
>>888 組み込み系のマイコン制御だけの知識だとアダルトサイトのスケーラビリティとか考えられないだろうし。
あ、ロードバランサとかファイアウォールの組み込みの中の人、乙です。
ところで、このスレの制御系って何をさすんだ?
電気か情報系なら大学の教養で制御理論少しはやっただろ?
少なくともLEDチカチカは違うだろw
制御理論はスレ違いじゃね?
何でだよw
制御理論を適用応用するのが制御系だろ?
それ以外に何があるんだよ
LEDチカチア液晶チカチカが制御か?w
>>897-899 テンプレからも過去スレの流れからも
所謂組み込み系がこのスレの範囲かと
>>899が言ってるのは言葉の定義としては正しいけど
実態に合ってない
IC/小規模CPU用プログラミングスレじゃわかりにくいしな
感圧、温湿度、加速度などのセンサからの出力を使って
バイブレータの振動を変化させるのも制御系だよね?
>>902 実際にはフィードバックによる焦らし制御を要望する市場はまだ無い。
それよりもメンテナンス性の良さなどの運用上の問題をクリアしてほしい
という声の方が大きい。
地味とか複雑とかじゃなくて、何のフィードバックも持たないものを
制御とは言わないだろ普通。
それは制御してるんじゃなくて、単にドライブしてる(作動させてる)だけじゃん
それがどうした
判ったよ。 じゃ次スレは
くみこの組み込み談話室
って事にするよ?
おk
くみこって誰?
後藤?
遠藤?
>>915 新参者?なんの話だ?
どうせ前のように廃墟になるんだろ
>>907 フィードバックは制御の一種でしかない。
LEDに電源繋いで光らせるだけなら制御ではないが、LEDをON/OFFするのは立派な制御だ。
だからそういうのはcontrolではなくただのdriveだろって
わかんねえ奴だなあ
お、久しぶりに賑わってる。driveっていうと、制御より下層に思えるなあ。
LEDだったらICが駆動用の電圧出してくれるかどうかとか、その辺のレベル。
チカチカだって、デューティ決めて明るさを変えるとかやれば立派な制御かと。
出力はリレーの開閉がほとんどだが、タッチキー入力とかダイヤルなど人間の入力扱うのも
制御の範疇で語るよね。
電気制御系は自分の電源を切れるだろうか?
ロジックが入ってれば制御だよね
LCDのドライブって何気に難しいんだよな。
マトリクスがいっぱいだと電圧がいっぱいあるし。
ソフトでやった事ないな 電池持たせるにはCPUにはやらせられないだろ
ミリ秒単位で切り替えだからたいして負荷はないよ
LCD使うような場合は普段32768水晶で、ミリ単位なんてムリ
日本語でOK
制御って高級そうだけど、やることは地味だってこと知らないんだね。
で、こんな低レベルなことやれるかって怒る人がいたりして...
>>921 今やってる奴そういうのだよ。RTCに次回起動時刻セットして、電源断ポートにLを書くと
電源が切れる。RTCは電池で生きていて、所定の時刻になるとアラームがONになり、それが
電源につながってて、起動がかかる。
930 :
デフォルトの名無しさん:2007/09/19(水) 15:58:35
>>907,914,916,918
そもそもくだらない発言をしたのはお前 m9(^Д^)プギャー
イヤならスレ削除依頼でも出しときな
×イヤならスレ削除依頼でも出しときな
○イヤならお前好みの崇高なスレでも立てとけ。廃墟確実w
RTCの電源切ったらRTCの意味ないじゃん。
ふつうはRTCにだけは電気食わせとくようにするでしょ。
だから電源切ってる間の餌はコンデンサでいいのに、
昔気質の上司が「電池付けろ」と決めてエラいコスト高に・・・
昔、コンデンサにして痛い目あった所があるよ。
最近の大容量コンデンサなんて、ボタン電池並みだろうに。
あ、それならボタン電池の方が安かったりして
最近のスーパーキャパシタは1F とか のもある。でも、RTCでは2週間程度しか持たない
1Fは1Aで1秒=1/3600時間しかもたない
CR2032で200mAh 程あるので、3桁もボタン電池の方が容量は多い。
100mAhの容量があればRTCなら10年電池が持つ
そそ、だから電池つけたお客さん曰く:デバック時電池切れのエラーは出しても、
製品が寿命を終えるまで電池切れは起こらないだろう(w
簡単な質問で恐縮です.
ゲイン余裕,位相余裕を大きく取ると,速応性が悪くなるらしいのですが,
その理屈が分かりません.
どなたかご教授願います.
>>941 本来はシミュレート板や情報システム板が適当な筈ですが、
アチラがあの状態ですから仕方ないとは思いますが・・・・
その質問の仕方では、単になにも判らないと言ってるのと同じです
もう少し勉強して下さいとしか言えません。
今検索したら、検索結果だけでも十分理解出来ると思いますよ。
工学板あたりでいいんじゃね
色々不安だな・・・
今の開発環境がマイナーになった時、それまでの知識が無駄る。
不安だ・・・
946 :
941:2007/09/22(土) 22:19:59
>>942 質問前に検索して調べましたが,分かりませんでした.
自分の考えとして,
位相余裕を小さくするということは,
ゲイン0dBでの周波数での位相は遅れてしまう.
なので,位相余裕を大きくした方が,位相の遅れを抑えられて,
速応性が良くなるのではないかと思ったんです.
位相の遅れは,速応性を向上させるものなのでしょうか.
947 :
941:2007/09/22(土) 22:24:04
>>942 質問前に検索して調べましたが,分かりませんでした.
自分の考えとして,
位相余裕を小さくするということは,
ゲイン0dBでの周波数での位相は遅れてしまう.
なので,位相余裕を大きくした方が,位相の遅れを抑えられて,
速応性が良くなるのではないかと思ったんです.
位相の遅れは,速応性を向上させるものなのでしょうか.
だからここにはLEDチカチカな人しかおらんのよw
950 :
941:2007/09/23(日) 08:25:03
いや、だから本当は君みたいな人が居座ってLEDチカチカ野郎の方を追い出すべきなんだけどね。。
制御理論はスレ違いだと何回言っても理解できない人がいるようです
理論を弄るのはコーダの領分じゃないからな。
制御理論を制御系に応用する話ならこのスレでいいけどね
速応性は、目標にどれだけ早く近づくか。
たとえば、毎サンプル、目標までの距離が判っているとする。
目標までのその差をどんんだけ詰めるかってのが速応性。
速応性を上げると、当然発振し易くなるだろ?
ゲイン余裕 とか 位相余裕ってのは、
これ以上いくと発振するところまでの余裕って事だ。
逆は必ずしも真ならずというけど、まあ、余裕持たせるには、
ゆっくり応答するしかないわけ
本来なら両方を兼ね備えるべきなんだろうけど、理解できないLEDチカチカな人が必死なんですよ
誰が必死なの?
このスレの住人がLEDチカチカだけであってほしい人
とりあえずトラ技のLED調光プログラム借りてモータの回転数変えられるようになりました
そして金手間掛けずにマブチモータから回転数検出できそうな方法ない?
手持ちの機械パーツはほぼ0
そうだな。
まず電源をモータの定格より、少し高い電圧にする
代わりに、PWM方式でスイッチングする。
スイッチングオフ期間中の電圧を読み出せば、回転数に比例している筈だ
961 :
デフォルトの名無しさん:2007/09/27(木) 03:17:55
パルスモータの4相励磁はちゃんとできてるんですが、モータがすごく熱い。触れないほど。
こんなに熱くていいのかな、と心配。 もしかして、相の変わり目のエッジは「同時」じゃ
いけない?・・・(前の相が立ち下がってほんの僅か空けて次の相が立ち上がる、とか)
電流ながしっぱなしじゃないの
4相励磁って ことは、 コイルAとBがあると
Aを切るのとBを入れるわけで、
これは同時にやってもいい。
2相だと同じコイルを反転するんで、考えないといけないけどね。
熱くなるのは停止中に電流を流し続けているからだろう。
モータを回してる間はオンオフするからコイルのL成分が効くからあんまり電流は流れない。
パルスモータで表面温度100度くらいまでなら
許容範囲内
965 :
961:2007/09/27(木) 14:23:13
う〜ん、いちおう論理の正負は確認して、Hで励磁、停止時はLだから流れてない
はずなんですが・・・
>>964 たしかに、100度は行ってないです。これで許容範囲なのか。
あとはトルクの許す限り、電流下げるしかない
電流をコンパレータで検出して比較するか
停止してる時にソフトでパタパタさせるか
流れてないはずっていうくらいならテスタでも挟んで確認しれ
まだ試作か何かだろ
969 :
961:2007/09/28(金) 08:23:03
あい、それはハードの人にやってもらいます。
+電源
○---+-------->コモン
|
_
△ D1
|
+------+-->A
| _
○SW1 △ D2
○---+------+
GND
たとえば、SW1でAを切っても 電流は流れ続けようとする
D1 に流す設計と
D1A' (Aの反対側) のD2の部分に流す設計の2通りある
D1に流す設計だと、電流は長時間流れ続ける事になるので
4相のつもりが波形は4−2相だったりするよ
D1 に流す設計と
D1を無くしてA' (Aの反対側) のD2の部分に流す設計の2通りある
その D1 に流す設計は間違いで、 そういう設計だと発熱しまくる
組み込みでCIFSとかSMBの実装って無理?sambaじゃなくてね。
検索しても独自に開発実装してる人いないみたいだし。
やっぱり難易度たかいっすかね。
SMBは昔、ネットワークのスレで作ろうとしてた奴がいたな
頭のおかしい奴だった
オレオレ
>>974 マイクロソフトのプロトコルは、作っても作っても新しいプロトコルにするし、Win95系ではポート関連のバグがあるし、ホスト名はお得意の独自仕様【ハイブリッド】タイプだし、Win95系の共有名は最大12バイトだけどWin2k系はその制限は無いし、
WinXPには妙なセキュリティが入ってるし、これを組み込みで作れというのなら、辞表を書いてもっと条件がよくてアホな会社に移るね。
やったらそれはそれで功績だけど、俺はもっと合理的な仕事をしたいね。
>>977 合理的な仕事なんてもうこの世には無いだろ
CIFSの資料見て、地道にやればいいんじゃないの?
腕のないほら吹きは、人数かければ、動くと思ってるみたいだけど...
乙
983 :
デフォルトの名無しさん:2007/10/05(金) 00:02:16
1秒毎に実行されるAという関数があります。n秒後にA関数の中で別の関数を実行したいのですが、
A関数の中で、このn秒というのをどのようにカウントすればよいのでしょうか。
(言語はCです。)
984 :
983:2007/10/05(金) 00:05:35
すいません、ちょっと訂正します。よろしくお願いします。
1秒毎に実行されるAという関数があります。n秒後にA関数の中で別の関数を実行したいのですが、
A関数の中で、このn秒というのをカウントしたい場合はどのようにすればよいのでしょうか。
(言語はCです。)
いや環境は関係なかったな
カウンタの変数用意するだけだべ
987 :
983:2007/10/05(金) 01:08:54
>>985 >>986 ありがとうございました。A関数内でカウンタ変数を宣言していた為、処理できませんでした。
外部変数でカウンタ変数を宣言し、A関数内でカウンタ++で解決しました。
C言語を勉強しはじめたばかりで、これまで外部変数を使う機会がなかったので、
まったく気付きませんでした。申し訳ございません。
外部変数使うべきじゃないな
>>988の言うとおりstaticにしろ
volatileも付けとけ
でもstaticの変数はリンクリストに出ないのでアドレスをつかみずらい。
アドレスをつかめると何かいいことがあるのですか?
# 普通はシンボライズされるけどね。
デバックのときメモリ表示できないです。staticだとZ001とか勝手な名前が内部的に付くが
globalシンボルにならないからリンクリストに出ない。
リンカによってはだせるよ。ICEとかで参照できるかどうかは別の問題。
みんなもCOFFファイルを自分で展開してツール作ったりするでそ?
その時にstaticで定義してたりすると、チョット面倒だと思ったりするよね。
binutilsはcoffは切り捨てたみたいだね。なんでだろ?
H8なんで ELFだな
f
t
p
1000ならジュースでも飲むか
1001 :
1001:
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。