制御系なら俺に聞いてもいいぞ(3)

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
俺は俺であり、それはお前の事だ。
ハード寄りの話も大歓迎だ。
道具話も楽しくやれるならやってくれ。

過去ログ
制御系なら、俺に聞け!
http://pc3.2ch.net/tech/kako/1002/10021/1002176627.html
制御系なら俺に聞いてもいいぞ(2)
http://pc2.2ch.net/tech/kako/1038/10380/1038094914.html
関連過去ログ
●●●くみこの組み込み相談室●●●
http://pc3.2ch.net/tech/kako/988/988084737.html
あ、そうですか
3無料動画直リン:03/07/29 23:38
 フーン
    ∧_∧            
    ( ´_ゝ`)     ∧_∧   
   /    \    ( ´_ゝ`)  フーンフーンフーンフーンフーン
__| |    | |_   /    ヽ、 
||\  ̄旦 ̄ ̄   / .|   | | 
||\\    旦  (⌒\ |__./ ./
||  \\       ~\_____ノ|
.    \\ _______\
.     \||      ____||     /
.       || ̄ ̄ ̄|\____\ / 制御系なら俺に聞け!
.       ||     | |======== | \  
           _|  |oo======= |   \
           |\\|_____|\
           | | ̄ ̄ ̄ ̄ ̄ ̄ ̄|
           | |   八 女 茶   |
           \|_______|
前スレ忽然と消えちまったな。
あのペースならあと3ヶ月は保ちそうだったけど。
>5
980レス以上のスレッドは落とされるですよ。一般的には次スレ移行済みライン?
>>6 それでわかった。Thanks。今度は960ぐらいで立てましょうね。
次スレを誰も立てなかったところが制御系ぽいよね。
リソースはぎりぎりまでつかうと。
ROM128KBで残り200byte・・・ってこの前やったな。
次に保守するのが俺でないことを祈る。
SHCにmakeコマンド付いてる?
チャタリング除去はどうやってやってる?
>>10
HEWのSHCのことを言っているのならついてる。






凄まじいバグ月だけどナ。

日立に直してくれ、、と言ったら、ソースがないので直せない(;´Д`)、と
言われた・・・・
日立のコンパイラってincludeのパスとかってまともじゃなくないか?
なんでSTLついてないんだ?
HEW3っていきなりおちるぞ。(makeがまともならどうにでもするけど)

そんなわけで、KPITのgnushってどう?
1410:03/08/01 12:38
VSのNMAKE使おうかな。
>>11 ソフトタイマ張って変化後nミリ同一なら、とかやってる。
タイマ張るのがめんどうなら数十〜数百回同一、とか。10mSインターバル
処理でポーリングしてn回同一、てのもあったな。
16山崎 渉:03/08/02 02:12
(^^)
組み込み向けのハードで勉強兼遊びで使えそうなハードって何かない?
GameBoyぐらいの液晶が載っててビットマップフォントくらいはついてる奴がいいな〜
#T-Engineは遊びで使うのにはちょっと高いし・・・
もう売ってないかもしれんが、ワンダーウィッチとか
だったらGBA。
でも、ハードの勉強にはならないねえ。

液晶をとやかく言わなければ、秋月のボードがお手軽かなあ。
2017:03/08/03 23:56
どうもありがとう。
そうか、携帯ゲーム機なら解析情報等豊富にありそうですな。
モノもGBAなら豊富にあるし結構いいかも。
制御系PGってなんか工場労働者みたいだよね。
まぁ、工場で仕事している奴はいるだろうな。
組み込み用GUIでSHにも対応しててフリーのものは無いんでつか?
>>23
SHといっても1/2と3/4でえらい違いがあるが。
3/4なら適当なOS乗っければなんとかなるだろう。
2523:03/08/05 15:20
>>24
SH2でつ。適当なOSが無い状態やITRON状態でのウィンドウシステム希望。
2617:03/08/06 00:24
GBAってCPUは専用カスタムCPUじゃなくてARM7TDMIなのね。
ARM7TDMIならTOPPERSもうごくのかしら?
>>26
誰か移植すれば動くんでは?
eCosは既に動いてるらしい。
28デフォルトの名無しさん:03/08/07 11:30
自動車業界の組込制御って、他の業界に比べて、どう?
信頼性にうるさい=テストが大変、最新のCPUより、枯れたCPUと言ったイメージなんだけどさ
ってか外注に出るのか?全部自前で抱え込むんじゃないか?
>>29
自動車メーカー→縁のある電機メーカー→一次受け→二次受け→プロパ
チャタリング取りは色々こだわりがあると思うけど、
まあ20〜30msでサンプリングして2度同じなら採用というのがシンプルな上にメモリも取らずかつ確実だ。
何度もというのはあんまり意味がない。

過去ログではコンデンサと抵抗1本で マイコンの端子をシュミットトリガにしてしまう方法も紹介されてる
これは中間電位が出てくるような信号に対して有効だね
32デフォルトの名無しさん:03/08/08 01:46
>>31
コンデンサと抵抗1本で、シュミットトリガになるのか?
ただのLPFだと思うのだが・・・
メンブレンSWのチャタ取りなら31の程度でいいね。
トランシーバーのPTTなんかだと1mSのオーダーで見なきゃいかん。
何度もというのは特に回数に意味はなくて、起動時まだタイマを生かして
ないが、0.5秒とか1秒とかの押下を検出したいときにアバウトに使う。
LPFってな〜に?
LowPassFilter
高周波をカットするフィルター回路やね。
キャパシタと抵抗で所謂C-Rフィルタっていうごく簡単なフィルタで
チャタリングを消すのだ。
>>32
違うよ。
前回の読み込み値を出力しておいてから読み返す事で入力スレッシュルドをコントロールするんだそうだ。
CRとこの出力時間で特性をコントロール出来るという事。

たとえば 前回Hだったら ポートを出力ポートにしてHを出してコンデンサにチャージしておいて
その後入力ポートにすると CRで決まる時間でスレッショルドがH側に移動出来るという仕掛け

-R-C-R-
   |
  ///

この構成でADCにするなんて話もあったね。
>>35
入出力兼用ピンでないとできない技だね
38689:03/08/08 09:40
PLCはどこの目0かつかってますか?
>>35,36
ここらへんの話は結構おもろかった。
なかなか思いつかないよねー。
>>34 3クス:ローパスフィルタの概念は聞いたことあります。チャタを高周波成分と
みなしてレベルにまで還元するフィルタになるわけですね。
ソフトで「n回前の値から今までを重み付けして平均をとる」手法も
似たような意味があるのかな?
41デフォルトの名無しさん:03/08/09 17:35
チャタリングの周期は一般的にはどれくらいになりますか?
CR回路で組むと、けっこう時定数大きくなりますよね
数ミリから数10ミリだから、
一般的にはどれくらいというよりは その都度観測する習慣をつけたほうがいいだろうね。
といっても、新品の間はそんなにチャタが出なかったりするから気をつけないといけないが

チャタリングというのはようするにバネが跳ね返る現象で起きるから、
観測しながら動作音を聞いてればある程度見当がつくようにもなるしね。

チャタリング対策として、ローパスを入れるなら、入力ポートをシュミットトリガにしないと
意味がない。 そういう意味ではソフトウエアでシュミットを実現する方法は1チップ
マイコンではコストパフォーマンスが良い。 見かけはローパスフィルタと変わらないからね。
43デフォルトの名無しさん:03/08/09 22:10
8bitで150円くらいで、開発環境がやすくて、
Flash2kラム200バイトくらいで、タイマーなんかの機能が
豊富で、PIC、アトメル以外で何かいいCPU知らない?
 モトローラの68Hxxxなんかが機能値段的にはいいんだが、
開発環境が、、、、
NEC7890xxシリーズ、H8/300シリーズ、三菱とかSONYの8bitシリーズ
東芝の家電向け8bitシリーズ・・・俺がやったのは8K,512Bで\190ぐらい
だったから、2K,256ならその位かもしれないね。そのサイズならアプリも
小さいだろうから、ASMだけなら只でダウロできるのでは?
45デフォルトの名無しさん:03/08/10 12:50
>>42
スイッチの経年劣化まで考えるんだ・・・
自分は、経験(勘?)で、マージンとって決めてるけど。
品質にうるさい組込だと社内基準とか、普通あるの?
なんか、仕事の進め方に不安を覚えてきたよ。
46デフォルトの名無しさん:03/08/10 14:21
ぼ、僕の性欲を制御する方法を教えてください。
>>46
制御不能。
そのままメルトダウンしてください。
ソフトの側ではxx設計書の記述様式などには社内基準を設けるが、
ハードの特性なんかに関しては基準なんて決めようがないぞ。
お行儀良く書かれたソフトなのに、LCD表示ドライバに100mS単位の
タイムアウトを設けてあったり・・・今いじってる奴。
49デフォルトの名無しさん:03/08/11 11:23
自己保持はわかった

インタロックって何だ?
50デフォルトの名無しさん:03/08/11 12:10
ちょっとおききしたいのですが

USBキーボードのコードが長すぎということで
ハサミでちょんぎろうとおもっているんですが
どうやってつだいだらいいですか?
>>50
ちょん切るだけなら悩む必要はない、すぱっとやりたまえ。
あぁそうそう、事務用鋏を使うと刃が痛むぞ。
5250:03/08/11 12:26
さぁ切った きっちゃった
どーつる
>>52
半田付けしたら?
>>52
新しいキーボードを買ってくるべきだと思うな。
赤と赤
白と白
緑と緑
黒と黒
を半田で繋げ!!!!!


>>45
うちは社内基準あるよ。何ミリでサンプルするとか、結構いろいろと。
ハードの特性もキーボード周りはかなり決まってる。スイッチは内製の
導通ゴムキーが多いからね。

一応、量産規模が何十万台クラスだから、これぐらい決めてないとマズヒ。
context switchの間隔ってどれくらいなの?0.1usecぐらい?
0.1 uSec というのは10メガヘルツって事だぞ 16bit以下のCPUの殆どが1命令も実行出来ない
59山崎 渉:03/08/15 15:45
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン
レジスタ待避の時間もないのか。
61デフォルトの名無しさん:03/08/15 20:24
現在 641 保守のためにあげます。
62切実な質問:03/08/15 21:04
すみません、こちらで質問していいのかわからないのですが、質問いたします。
あるファイルをPC起動時にMOにバックアップを取りたいと考えています。
OSはXP HomeEdition です。
そこでバッチファイルを作ってみたいのですが、まったく知識がありません。
ネットで調べたのすが、知識がないので、書いてある内容が理解できないのです。
どうやらAUTOEXEC.BATを編集してバッチファイルを起動させるようですが、
XPや2000の場合はコンピュータのプロパティの環境変数に設定するみたいな事が書いてあるような気がします。
バッチファイルの内容はコピーコマンドだけでいいのだと思いますが、
そのバッチファイルをどこに置くのか、またはバッチファイルを好きなところに置いていいのなら、
どこにそのファイルを実行するという命令を書いたらいいのかわかりません。
どなたか、心の広い方、ご教授ください。宜しくお願いします。
63切実な質問:03/08/15 21:09
上の質問、切実なので
***すれ立てるまでもない質問はここで 第42刷***
スレッドにもレスします。
数クロックサイクルという理解でよろしいのでしょうか?
(このクロックサイクルはCPUの速さに依存)
あ、厨な57です。
66デフォルトの名無しさん:03/08/16 06:00
>>62
Autoexec.bat? スタートアップフォルダに入れればいいじゃない。


>>64
何か何をどうしたいのよ?
タスクの切り替えは単に、
スタックポインタを切り替えるだけだけど 、
そのスタックにレジスタを保存する必要があるんだからさ、
数クロックサイクルって何の話よ
そんなレベルの人には聞いていません
>>57
> context switchの間隔ってどれくらいなの?0.1usecぐらい?

context switchの所要時間ではなく、間隔についてですよね。この間隔の定義
がわかりません。
さらに、context switchというのは割り込みハンドラへの切り替えではなく、
マルチタスクでのタスク切り替えのことと考えてよいのでしょうか?

あるタスクが実行可能状態になってから実行状態になるまでの最大時間という
ことであれば、OSの実装やタスクの優先順位等の環境に依存している問題なの
で回答は出来ません。

システム内でcontext switchを行うか否かを判断する処理するイベントが行わ
れる周期ということであれば、割り込みが発生する間隔を調べるのが良いと思
います。プリエンティブなマルチタスクであれば、割り込み発生時に実行する
タスクの切り替えを行います。タスクの切り替えを行う割り込みの種類と、そ
の割り込みが発生する周期を確認すれば、それが答になるはずです。
69デフォルトの名無しさん:03/08/17 02:06
僕は、回路のことはあまり詳しくないので、
思ったように動かないとき、回路が悪いのか、ソフトが悪いのか、
見極めるのに時間がかかってしまい、結局、回路が悪いこともあるんだけど、
回路設計者に、そのことを言うと、かなり腰をひくくして言ったつもりでも、嫌な顔をされることがあります。
みなさんは、回路設計者と仲よくやってますか?
>>69
見極めが難しいときは1人で悩むべからず。
どっちが悪いか判断つかないから一緒に調べてくれ!
と、行動を共にすれば、そのうち仲良くなるよ。
人間的に合わない場合はしょうがないけど…
71デフォルトの名無しさん:03/08/17 02:53
>>69
回路屋は、基板を作り直さないといけないからね。
ソフトでできることは、だまってソフトで対処してくれることを基本的に望んでいるのよ。
72あぼーん:あぼーん
あぼーん
73sage:03/08/17 08:03
メカ屋がPLCのシーケンサ使ってるんだが、バグが多くって
すぐに機械が止まってしまう。センサーやらエアシリンダーやら
モーターやら、上位のPCとの通信なんかで100点くらいのI/O
になってるわけだが、C++で書けば簡単なのにと思いながら、指を
くわえて見守っています。
こんな機械の制御は、何か良い方法はないのでしょうか?
小さくしたいとかなら PIC とか4ビットマイコンというのもあるけどさ、
機械の制御はPLCが一番だよ。
値段もこなれているし壊れたときのメンテもシステム化されているしね。
75デフォルトの名無しさん:03/08/17 18:25
>>71>>73
メカ屋のチョンボ、回路屋のチョンボのしわ寄せが全てソフト屋に来るのは世の常?
理由「タダやろ?」
>>75
密かに勉強してさ
設計段階から口出せるようになれば、そこらへん緩和されるよ。
77デフォルトの名無しさん:03/08/17 19:22
CPUの選択はソフト屋がやるもんなの?
ソフトのサイズの見積もりなんかやったことないから、
どの程度のROMを内蔵したワンチップマイコンを選んだらいいのか、
全然見当がつかないんだけど。
仕様も作れないのか、と言われたってねぇ。
困っちゃうのよ、ホント。
78直リン:03/08/17 19:29
>>77
見積もりは技能の一つだからさ 普段の鍛錬が必要だよ。

たとえばあなたは 気温をあてる事が出来ますか?
出来ないなら、
温度計見る前に気温を予測してから温度計を見るという練習を続ければ出来るようになるというのは想像出来るよね?


見積もりも同じで、普段の仕事で 仕事の前に予測する事、 かならず後で予測との差を見ておく事が必要だよ。
80デフォルトの名無しさん:03/08/17 19:46
>>73
PLCはソフトウェアに詳しくない機械設計者でも、制御ができるように開発されているわけだから、
そういう場合は、よほど複雑なプログラムでもない限り、機械設計者にラダーの腕を上げてもらうしかないでしょう。
ちなみに、シーケンス型のプログラムは高級言語が得意とする分野だけど、組み合わせロジック型のラダー向きのは、
やっぱりPLCの方がきれいにかけるので、高級言語で書いても、極端に制御が簡単になったという記憶はありません。
>>77
うちはソフト屋がやってる。
て言うか、ソフト屋がやらないで誰がやるんだ!?
82デフォルトの名無しさん:03/08/17 21:24
CPUの選択やROMサイズの見積もりは、この仕事を5年くらいやっているのに、
未だに経験したことがありません。
作るものの個数が多くても数十個で、機械に合わせて微妙に動作が違う程度なので、
ほとんどプログラムのサイズは同じだし、かなり違うときがあっても、大は小を兼ねるで、
大きめに作っておけば問題ないので、だいたい共通のマイコンと基板で通してます。
たかだか十個程度のもののために、いちいちマイコンを変えて、基板からデザインし直していたら、
そっちの方がよほどコストがかかるので、ほとんどマイコン周りはいじりません。

何十万という数が流れる量産品ならば、基板から設計し直して、一つの部品当たり数十円のコスト見積もりまでして、
相当シビアな世界なんでしょうけど、同じ組み込み制御と言っても、いろいろあるという一例です。
>>82
そりゃ、ソフト屋/ハード屋の職分の問題じゃないだろ。

 作る個数が少なくて専用設計してたら費用が回収できないから
流用して手間をかけないってだけだろ?

それにしたって最初に誰かが設計したわけで、見積もった奴がいるはず。
84デフォルトの名無しさん:03/08/18 01:09
シリアル通信プログラムの話題はこちらでよろしいんでしょうか?
8573:03/08/18 04:11
PLCでメカ屋が腕をあげるのを待つのは仕方がないとして、
入出力のログを長期間取ることは、PLCでできるのでしょうか。
24時間稼動している機械で、週に数回トラブルが発生しているが、
ログがないため原因究明ができていない模様。
>>84 いいよ。いろんな体験してるから相談に乗れるよ。
87デフォルトの名無しさん:03/08/18 06:54
・・・・・。
やっぱり他で聞きます。
>>85
なんとかリンクとかいう機能を持っていない?
それがあれば、232Cでパソコンでもつないでおいて、全状態をログ取る事も可能だよ。
ただ、パソコンから全状態をコントロール出来るから、コントロールしたくなるだろうけどね。
>>82
それでもこんな時代だから転職の事も考えて、自分で見積る習慣をつけた方がいいよ。
どっちにしても それが出来ないと管理職側にはなれないわけで
90デフォルトの名無しさん:03/08/18 14:02
ROM詰めってやってる?
>>90
具体的には?
すいません。このエラーの意味を教えてください。
Assert Failed
Exeutable: VIEWER.EXE Pid ff07782b Tib ff077fcd.
MODULE QEDIT.DLL, 3 objects left active! At line
317 of d:\builds\nt32_chk\multimedia\published\d
xmdev\base\dllentry.cpp Continue? (Cancel to Deb
ug)
[はい] [いいえ] [キャンセル]
>>92
激しくスレ違いではないか?
94デフォルトの名無しさん:03/08/18 21:14
>>90
最近はほとんどしてない
95デフォルトの名無しさん:03/08/18 21:52
うちの会社では、ROM詰めしないとならないほど、余裕のない選択をすると、
そういう選択をした人が恨まれる。
それにしても、最近はほとんど見なくなったな<ROM詰め
ROM内にコードを圧縮しておいて、RAMに展開して実行するってのは書いたことがあるな。
#圧縮って言ってもランレングス圧縮だが。
システムトラップとはどういうものでしょうか?
割り込みとは違うのでしょうか?
スレッドセーフでしょうか?
数十万個の単位のコストの話になると、政治力とかの要素も重要でつ(w

取りあえず、うちの部長は担当にコストを石屋と折衝させるけど、最後は本人
が出てくる罠。単に、あの担当でX円なら、ここまで下がる、とかの指標にしてる
だけ。部長が話に入ると、なぜかそれまでの半額近くに・・・(w

あと、石屋にしつこくダイサイズやプロセスを聞いて、歩留まりから原価を推測
して、どこまで下げられるか予測するとか(一応、フルカスタムでLSIを石屋に起こ
してもらうこともあるので、ここらへんは結構わかる)。
そんなことをしてる。
すみません。質問させて頂きます。
今度、大学で行っている研究で
私はシリアルや赤外線のドライバ開発を担当する事になり
研究が始まる前に予習をしておこうと思ったのですが…
どんな事を勉強すればいいのでしょうか?
OSはITRONらしいです。
今までVCで簡単なWINアプリしか作った事がないので、
何をしていいのやら…。
ITRONでドライバ?

いや、言いたいことはよく解る。
>>99
まず使うH/Wの情報を集めろ
Chipのデータシートや回路図モナー
10299:03/08/21 23:25
>>100
言いたい事が解っていただきありがとうございます。
今日は、TECH Iの「リアルタイムOSと組み込みの基礎」
の本を読んで、自分のやることが少し解りました。


>>101
了解しました。
ハードの連中に早速聞いてみます。
103デフォルトの名無しさん:03/08/22 02:23
>>98
ソフト屋の割りに詳しいね。
10484:03/08/23 14:36
>>86
趣味で携帯電話のメモリ編集ソフトを作っているのですが、
DoCoMoに関しては資料も公開されているので何とかできたのですが、
J-PhoneとAuに関しては資料が見つからずに困っています。

そこで市販の携帯メモリ編集ソフトがPC<->携帯間どのようなデータを
送受信しているのかを解析しようと思うのですが、どのように調べれば
いいのでしょうか?

なるべく安く簡単にできる方法があればいいのですが・・・
よろしくお願いします。
>>104
ラインモニタ持ってる?
ないのなら買う。金がないのなら作る。
シリアルポートを2ch備えたコンピュータがあれば、
そんなに難しいソフトでもない。
(フリーソフトかシェアウエアで、そんなのあるかもね)
106デフォルトの名無しさん:03/08/23 16:33
>>103
ハード屋なのに、ソフト屋の板を覗いている人かもよ
(純粋ソフト屋なら、石のコスト計算なんか縁がないもんね。でも、大変そう・・・)
>>104 作るよりは買ったほうがいいよ。イチキュッパぐらいで底底の性能のが
買えるはず。「人のふんどしで相撲を取る」のがソフト屋の原則でしょ。
>>104
J-Phoneの場合、各社で共通な部分だけでは機能が少なすぎるので、
編集ソフト作っても意外に使い難いものにしかならなかったりする罠。
>>107
>>84>>104 で「趣味で」と言ってるよ。
ふんどし作るのが楽しいと言う奴もいるからな。

(そもそも、市販のソフトの話なら普通こんなところに相談に来ないと言うことぐらいちょっと考えたらわかるだろうに...。)
110104:03/08/27 00:49
>>105
ラインモニタですね。ちょっと調べてみます。

もう1つ疑問なのですが、
今PCと携帯のシリアル通信にはCOMポートに繋ぐタイプのケーブルを
使っているのですが、市販のソフトで使われているUSBタイプのケーブルを
使うとうまくデータの送受信ができません。
USBタイプのシリアルケーブルを使う場合は少し勝手が違うのでしょうか?
それとも単なる相性の問題とか。
USBタイプのシリアルケーブルについてはあんまりいい印象ないなぁ。
同じような現象に悩まされた覚えが多々ある。
想像だけど、
USBタイプだとパソコン ->USB->マイコン->232C と、いったんマイコンが入るんで
1、微妙な時間調整が必要な場合に問題が出る
2、CTS/RTSのようなポートをビット操作して信号をやりとりしようとした時に問題が出る
>>112
一昔前は、EZ-USBとか使ってたぽいけど、
今はUSB−シリアルのブリッジチップのが多くない?
>>113
ブリッジチップも中身にマイクロコントローラが使われていると思うが?
±12Vキッチリ振ってないから
それをいうなら規格は  -5〜-15V +5〜+15V  だから15V振らないといけないぞ
>>116
別に5Vでもいいんじゃないのか?
>>117
そうだよ。 
実際PICのポート2本をパソコンの232Cにつないでシリアル送信してもちゃんと受信出来るよ。
だから12Vに意味は全くないって言ってるんじゃないか
119デフォルトの名無しさん:03/08/27 21:34
8ビットマイコンで(32ビット÷16ビット)計算をやりたいです。
ライブラリ使わないで。
なんか良いロジック無いかな。
120119:03/08/27 21:36
ちなみにC言語で。
RS232CのRTSとかを電源に使うハードだと、それなりに電圧が
出てて、電流が引けないと動かないということはあるけどね。
>>119
アセンブラの本をみて、Cで同じような動きをするプログラムを書くしかないけど、
キャリーやボローのフラグに相当するものがCには無いから、ちょっとめんどくさい
かも知れない。
123122:03/08/27 23:53
でも、素直にアセンブラで書いて、Cから呼び出したほうがいいんじゃない?
>>119
ココとか
ttp://www.tensyo.com/urame/prog/ALGO.HTM#UDIV
他にも基本ロジックは本とか読めばあるけど
さらに多倍長だから面倒だね
>>123
素直にインラインアセンブラで
どうせ、32bitの足算 引算(比較も)はアセンブラで書いてるんでしょ?
だったら、 >>124のロジックで書けばいいじゃない。
   while(cnt--) {
    a <<= 1u; //足し算に変更
    if( x & maxbit ) a |= 1; /*a の MSBを cのLSBに */
    x <<= 1u;//足し算に変更
    b <<= 1u;//足し算に変更
    if( a >= y ){ ++b ; a -= y; }; //++bはLSBを1にしてるだけ 比較は引算に
    } 
127104:03/08/29 21:49
市販の携帯メモリ編集ソフトではUSB形式のシリアルケーブルでも
何の問題もなく動いているので何かやり方があるのでしょうね。
COMポートもUSBポートのように手軽に増設(ハブみたいなもの?)
できればいいんですけどねぇ・・・
>COMポートもUSBポートのように手軽に増設(ハブみたいなもの?)
>できればいいんですけどねぇ・・・
そりゃCに多態がないって文句言うようなもんだ。

USB形式のシリアルケーブルの問題が、ハード的なものでなく
プロトコル的なものであると仮定して、市販のソフトはその辺りを
より低レベルなコードでカバーしているんでないの?
>>128
単純にフロー制御が腐ってるに1票

>>127
RS-232Cは電気的な規格が1:1の接続しか考慮してないから無理
シリアルの切り替えスイッチみたいなのならあるよ
いろいろやってみたところ、以下のような感じです。
USBシリアルケーブルでも、COMポートとして認識されていれば
普通のシリアル通信ができるということでしょうか。

・デバイスマネージャーの「ポート(COMとLPT)」を見ると
 COMポートとして認識されていない。
・デバイスマネージャーの「USBコントローラ」の方に追加されている。
・COMポートを開くことだけはできるがデータの送受信はできない。
・USB→RS232C変換アダプター経由でシリアルケーブルを使用した場合、
 データの送受信が可能。
131デフォルトの名無しさん:03/09/04 15:26
仕事でRS323-Cで大型装置にデータを転送させねばならんのだが
俺は学生時代98OSにC言語でメモリを指定してビット単位で書き換えた
ことしか経験がない。
そこでギモンなんだがRS232-Cで通信するときはOSがかわってもアドレスは
同じなのだろうか?(質問あってる?)
132デフォルトの名無しさん:03/09/04 16:00
>>131
質問の意図って、
「シリアル通信の初期化をするとき、どのようにすればよいか?
PC98では、メモリ空間のある決まった絶対番地にデータを書き込んだのだが、
他のOSでも、同じようにできるのだろうか?」
と、いうこと?

だったら、答はノー。アドレスが同じかどうか、どころか、そもそも
『メモリに書き込む』ということさえ、他のOSでは違うかも知れない。
>メモリを指定してビット単位で書き換えた
PC98BIOSのワークをいじったのか、8251もしくは8253のI/Oアドレスを叩いたのかな

OSがあってOSにRS-232CのAPIが用意されていれば、手続きに従って呼び出せばよのでは
メモリとかアドレスとかの概念はOSが隠蔽していることだし
134デフォルトの名無しさん:03/09/04 17:53
CPUはH8S、開発環境はHEW2です。

プログラムを2個作成し、一つは起動用(ブートプログラム)、もう一つは通常
処理用(アプリケーションプログラム)という風にします。

これを実現するためには、HEWのプロジェクトを2個(ブート用とアプリケーショ
ン用)作成し、ブートプログラムからアプリケーションプログラムのmain関数
(相当)をアドレス指定で呼び出せば可能でしょうか。
その2個は「名前インディペンデント」にしとくほうがいいよ。
どういうことかというと、ブート側は「アプリXXの入り口アドレスへGo!」
とか書きたいだろうが、そうするとブートとアプリのリンケージが必要に
なるでしょ。それじゃブートとアプリをいつも一緒にリンクしなけりゃいかん
こういうことを避けるために、ブートは「例えば10000h番地へジャンプ」とか
いう形で、「アプリとは名前によるリンケージをしない」ことでアプリとの
独立性を保つことが多い。アプリとの接点は「何番地(ex:10000hとか)から
実行が始まる」というルールだけにとどめる。ま、長短あるけどね。
136デフォルトの名無しさん:03/09/04 21:58
制御系のプログラムではメモリ管理部というものがあると聞きました。

話によると、あるプログラムが利用したメモリを、他のプログラムが再利用できるらしいのです。
で、それを仲介しているのがメモリ管理部とか・・・

メモリ再利用の具体的な考え方を教えていただけないでしょうか?
>>136
それはスタックの事ではないのか? それともヒープの事なのか?
小規模の制御系ではスタック以外メモリの動的管理はやらないほうがいいよ。
alloc/freeを繰り返した結果メモリが細切れになったらそれっきり。
ガーベジコレクションなんて気の利いた機能は自作以外ないし、作ったと
してもそれを動かすCPUパワー/メモリの余裕もないのがふつう。
139136:03/09/05 07:40
>>136
ヒープです

>>138
簡単なコードを教えてもらえないでしょうか?
メモリを再利用するための・・・
>>139
だから、制御系では殆どヒープは使わない。 購入したライブラリがalloc関数を使うから
仕方なく呼び出し番地に応じて固定番地を帰すようなallocを書いたりするのは良くある事だけどね。

制御系ではなく組込系になると色んなアプリを動かす事もあってパソコンに近くはなるけどね。

ヒープの実装は比較的簡単だ。空領域をリスト型のチェインで管理するだけ。
ただ、mallocで確保した領域もサイズをどこかに記録する必要があるから
一般的にはポインタより上位に、サイズを記憶する。
alloc領域もデバッグの容易性の為に、やっぱりチェインで管理している事が多い。

どうしてもヒープを使いたい場合は、メモリが細切れになると連続運転してる制御系では致命的だから、
・ヒープの最低確保単位を250バイトとかにして256バイトブロック化して確保する
・大きな連続ブロックを確保しない。せいぜい3ブロックに収める
・いっそ、ヒープはサイズを全て同じにしてしまう
とか規約を設けてメモリの細分化を防ぐ必要がるね。
141131:03/09/05 08:37
>>132
>他のOSでも、同じようにできるのだろうか?」 と、いうこと?

YES。既存のシステムでは特有C言語とそのマシンのRS232Cパッケージ
(ライブラリ)を利用しているようだが、俺はメモリで指定するはずだ
と固定概念があったようだ。

そのマシンごとのOS単位で通信方法が異なるということ?
じゃWindows2000によるRs232Cとかで考えればよいの?
>>141
Windowsの場合は 16bitの頃からシリアル通信は CreateFileしてWriteFile/ReadFileするだけだ。
シリアル[通信] でハードウエアに直接アクセスする必要はまったくない。
これはパソコンがNEC-PC9801-9821 PC98NX/AT互換機でも全て共通で使える
(もちろんPC9801の同期通信機能はAT互換機にはない)

なお、メモリ指定? というのは何の事か判らん。SIOは通常I/O空間にマップされている。
大昔に9801用でインテリジェントSIOなんてのがあって、メモリマップI/Oに書き込むと
勝手に通信するなんてのもあった記憶はあるが・・・・
143デフォルトの名無しさん:03/09/05 09:26
>>135

134です。
ありがとうございます。追加で教えてください。
グローバル変数についてですが、ブート側、アプリ側両方で使用する
グローバル変数は両方で定義してやらないといけないでしょうか。
(ブート側で定義したグローバル変数にアプリ側からアクセスできるか)
144131:03/09/05 10:10
>>142

>シリアル通信は CreateFileしてWriteFile/ReadFileするだけだ。
APIを使うだけでいいということ?

>なお、メモリ指定? というのは何の事か判らん。
これは俺の記憶ではC言語で98??でinp()とoutp()を利用して
アドレス指定(?)と命令コードをパラメタに指定したと思う

また、ネットをあさっている内にアセンブラで書いてあるものもあった
asm(",,,,,,,,,,,,,,,,");(本当に使えるのか?)

一般的?にはAPIを利用しろということでよい?
一般的というか Windowsなら API を利用しない方法の方が難しい
>>143
そりゃ可能だけど…
宣言の方法は使っている言語に依存する。
それ位で悩むなら、分離しない方がよくないか?
混乱するだけだぞ。
147デフォルトの名無しさん:03/09/05 15:45
>>131
なんだか釣りみたいな気がしてきたんだが

一応これな
WindowsでRS232Cを使う
ttp://members.jcom.home.ne.jp/0434383301/vc10.htm
>>143 (ブート側で定義したグローバル変数にアプリ側からアクセスできるか)
135です。146の言うように、できるけど、その外部参照が解決されるには
ブート+アプリ一体でリンクしなくちゃだめでしょ?そしたらブートされる
アプリの一部にブート自身と同じ空間にロードされる実コードが含まれる。
「自分の居るエリアに何かをロード」するとたいてい悲劇が起きるよ。
これを避けるにはお互い排他的な空間を使い、もしも参照するなら絶対番地で
ということにならざるを得ないのね。例えばアプリがブートのVersionを知りたい
とすると、extern char ver[16];を参照するのではなく、char *pに0x1000を
設定して、p[0〜...]を参照するとか。この場合versionは1000h番地にある、
という約束が必要になる。くどくてスマソ
>144

inp()/outp()はI/Oポート操作だな。
で、そこで言っているアドレスとは恐らく、8251などのチップ内のアドレスのことだな。
今時、WindowsなどのOSで直接ハードウェアを叩くなんて手間を掛けるのは論外。
150デフォルトの名無しさん:03/09/05 22:16
制御系って資格は関係ないってよく聞くけど、
さすがに基本情報は取ってないとやばいよね?
>>150
取って無くても仕事は出来るが
取れないようじゃヤバイ

何でもいっしょだろ

>>140
制御系と組み込み系が逆では?
サーバやPCから機器を制御するのも
制御系って呼んだりしなかったけ?
>>151
業界用語として定義があるかどうかは知らないですけど、
『組み込み系』というと、文字通り家電製品とか事務機に組み込まれている
という感じがしますね。

制御系も組み込み系を含むけど、PCで何かを制御するときも、そう呼んだり。
あんまり深く考えたことないですけど・・・
153デフォルトの名無しさん:03/09/06 00:01
>>144
> 一般的?にはAPIを利用しろということでよい?

イエス。そもそも、OSが触らせてくれないと思う。デバイスドライバとして
書くなら話は別だけど、普通のシリアル通信なら、APIから呼べば十分
だと思う。
154デフォルトの名無しさん:03/09/06 01:22
>>140
>ヒープの実装は比較的簡単だ。

回答ありがとうございます。
具体的にはどのようにするのでしょうか?
コードを書いていただけないでしょうか?
もしくは参考となるような、HPがあれば教えていただきたいです。
お願いいたします。

>>154
K&Rに書いてある。
156デフォルトの名無しさん:03/09/06 03:27
ジャイロセンサで温度ドリフトをソフト的に回避する方法はないでしょうか?
ドリフトのコツは尻で感じるんだけど
ソフトにいくならシュミット鳥がおー
>>154 32Kのメモリのうち30Kぐらいを動的管理するコードを自作したことが
あるよ。H8/300のc。140の言うように最初に固定サイズの線形リストにする
やり方。スレに書けるよりは長いが大した長さじゃないからよければメールで
送ってあげるよ。
159140:03/09/06 07:50
そりゃたしかに比較的簡単だよ。
サンプルコード書けと言われたらここに書けるくらいの短いの書いてもいいよ。

でも そういうふうにコード書いてくれと言われると妙にムカツクのはなぜだろうな・・・
そりゃあれだ、こちとら仕事でそれなりに苦労して書いたか
調べたりしたことを、あっさりねだられているわけだからね。

味で評判のお店でレシピ教えろって言うもんなんじゃね
>>161
これからiTRONを覚えようとしてたのにな
163デフォルトの名無しさん:03/09/06 12:00
坂本教授って「eCosはTRONそのものだ」とか言っちゃう人。
>>163
まあ実装のひとつということで大きく間違ってはいないが…
>>163
映画の音楽やってる人のことですか?
166デフォルトの名無しさん:03/09/06 13:52
それじゃ、LinuxにTRONのAPIを実装したら、そのOSは
TRONそのものになるですか?
167デフォルトの名無しさん:03/09/06 13:53
168158:03/09/06 19:22
>>154 158,159を見てビビってるかもしれないので再確認。俺はあんなコード
誰でも書けて当然と思うから只であげても罰はあたらんとおもう。
貰って理解できるか/自分のシステム用に手直しできるかは君次第。
月曜あたりに会社からカキコがあるかなあ?メルは158からね。
数や頻度が少なければ、こっちの方が楽だけどね・・・
struct {
struct tbl_tag {
int flag;
char buf[BUFSIZE];
} tbl[MAX];
} data={0};
int malloc()
{
int i;
for (i = 0;i < MAX;i++) {
if (data.tbl[i].flag == 0) {
data.tbl[i].flag = 1;
return i;
}
}
return -1;
}
free(int no)
{
data.tbl[no].flag = 0;
}
>>168
140の説明で理解できないのならどうしようもないと思うが。

あれだけ丁寧に注意点まで書いてあるのに、コードもくれとか言うと、自分
だったら、オメー、氏ねよと思うけどな。
>>169 そうすると、malloc毎に 平均 MAX/2 のループが回る事になる
メンバにflagではなくChainを追加しておいて、
for (i = 0;i < MAX;-1i++) { data.tbl[i].Chain = i+1;}; と初期化
data.tbl[i].Chain=-1; //Chain=-1が末端

グローバル変数
int FreeTop = 0; //初期値

malloc では
 帰り値 = FreeTop
 if 帰り値 <0 then メモリ不足
 FreeTop = data.tbl[FreeTop].Chain;
 data.tbl[帰り値].Chain = -2; //使用済マーク

free では
 data.tbl[引数].Chain = FreeTop;
FreeTop = 引数

とするのが最低限ではないかな
>>171
> 数や頻度が少なければ
と書いてあるのが見えないのかな ?

下手な最適化して痛い目見るタイプなの ?
>>172
数や頻度が少なくとも、この程度の事やらないと厳しいと思うよ。

それに、これは最適化というより、これが普通でしょ?
動的にメモリが必要な場合はその領域全体を一つのB木にしてるけどな
葉っぱにデータを詰め込んで、検索ハッシュキー付けて検索も早くなるよう工夫してる
175デフォルトの名無しさん:03/09/07 12:38
よその板で、こちらを紹介されて、初めて投稿します。
よろしくお願いします。マイコンソフトについて質問があります。ご存じの方が
みえましたら、教えてやってください。

質問は、ウオッチドッグタイマー(WDT)についてです。
 ハードウェア WDT ICを外付け、タイマ時間は50mS(実測)です。
 ソフトウェア Cの、main内で、WDTを叩く関数を1回呼んでいます。
        この状態で現在うまく動いています。
質問
 ・WDTを叩く関数は、mainでのみ呼ぶべきだと思っていますが
  この考え方は間違っているでしょうか
    WDTを叩く関数をタイマ割込中に置けば、main内で
    WDTを気にしなくても良いのですが、それではmainで
    暴走したときに それを検出できないと思うのです。
    main暴走で、タイマ割込も停止すればいいのですが、
    「タイマ割込はハードでありmainとは別物」だと
    思うのです。タイマ割込内使用は不可だが、
    その他の関数内ならWDTをたたいても良いのでしょうか。

 ・mainから関数に行って、戻ってくるのがWDTの時間を超える
  ような場合は、どのように対応すれば良いでしょうか
    上記の考え方が正しいとすれば、WDTのタイマー時間
    以上に時間がかかる関数は呼べない(=作れない)
    ということでしょうか。例えば、ブザーを1秒
    鳴らしたい場合、関数内で1秒時間を潰すことに
    なりますが、そうするとWDTで引っかかるのです。
はたと困ってしまいました。
どうぞよろしくお願いします。
>>175
>関数内で1秒時間を潰すことに
オイオイ・・・
177175:03/09/07 13:54
さっそくのご回答 ありがとうございます。

>関数内で1秒時間を潰すことに
>オイオイ・・・
はい、これが「普通こんなことしねーよ」というのは
理解しています。例えばの極端な例です。
でも従来のソースと互換を持たせようとすると
このようなことが起こってしまうんです。
1秒はオーバーでも 0.2秒とかは結構あるんです。
通常は、ブザーon、タイマー起動として、
タイムアップしたらブザーoffにしています。
>>175
> ・WDTを叩く関数は、mainでのみ呼ぶべきだと思っていますが
>  この考え方は間違っているでしょうか
間違ってない。理由もあなたの考えている通り。

>上記の考え方が正しいとすれば、WDTのタイマー時間
>以上に時間がかかる関数は呼べない(=作れない)
普通は、メインループが周るべき時間+αをWDTのタイムアップ時間に
するんだが、今回の場合はWDTのタイマ時間は変えられないのかな?

>関数内で1秒時間を潰すことに
精度がそんな高くないなら、mainループの周期でブザー時間をカウント
そうでないなら、タイマ割り込みでブザー制御
>>173
そうか ? まあ、あんたがそう思ってるなら別に反対する必要はないけど。
世間はあんたが思ってるより広いと言うことだけ言っとくよ。

>>177
> 1秒はオーバーでも 0.2秒とかは結構あるんです。
> 通常は、ブザーon、タイマー起動として、
> タイムアップしたらブザーoffにしています。

そんなことしたら、その間他の処理がすべて止まっちゃうと思うが、それでいいのか ?
それでいいなら、WDT のタイムアウトを相応の値に変えればいいだけだと思うけど。
180175:03/09/07 14:29
>>178
ご回答ありがとうございます。

>> ・WDTを叩く関数は、mainでのみ呼ぶべきだと思っていますが
>>  この考え方は間違っているでしょうか
>間違ってない。理由もあなたの考えている通り。
安心しました。(ヨカッタ)
その後考えていた(=実験した)のですが、mainから呼ばれる関数
(ハードウエァに関係ない関数)の中でWDTを叩くのは、
悪くないのではないかと思えてきました。
その関数でコケればmainもコケることになるので、WDTの動作
としては間違っていないような気がするんです。
main(){ ..... }の中でないとWDTを叩いてはいけないのでしょうか

>普通は、メインループが周るべき時間+αをWDTのタイムアップ時間に
>するんだが、今回の場合はWDTのタイマ時間は変えられないのかな?
いえ、コンデンサ1つですので、1秒程度まで延ばせます。
しかし、WDT ICのスペックを見ると、コンデンサの容量にも
限界があります。(充放電回路の能力によるものだと思います)
このWDT時間の決め方もよくわからないんですが、
全体のプログラムができたときに、main一周の時間を計り
それ+alphaで時間を決ていいものなんでしょうか。
よく「マイコンなら長くても数十ms程度だよね」という話も聞くので、
WDT時間が1秒ともなると「設計思想」的に変なのではないかと
心配しています。

基本的に、PIC〜H8までのプログラムはメインプログラムは一定時間毎(20〜30ms)にぐるぐる回るスタイルが多い

で、メインに帰ってくるのが0.2秒もかかるような手続きというのは作らないもの
どういう処理で0.2秒もかかるの?

ただ、シーケンシャルな処理を状態遷移的に書いた場合、
mainの代わりに、一定時間毎(20〜30ms)に処理する入出力サブルーチンを作る場合はある
その場合は、当然その入出力サブルーチンに仕掛けるわけだ
182デフォルトの名無しさん:03/09/07 15:36
ラダーを覚えたいと思うんですが、
Windowsで動くフリーのラダーエミュレータ(?)のような
ソフトってあるでしょうか?

>>182
というか、どうせ実機が必要になるんだから実機買えばいいじゃない。
M16CとかPICで動くラダーシーケンサみたいなのがあったと思うよ。
184デフォルトの名無しさん:03/09/07 16:55
ラダー作成ツール込みで、個人で買えるものってあるでしょうか?

とりあえず、直近でシーケンサーを使って制御する事は
ないので会社では買えないのですが、
パソコンの信号をデジタルI/Oボードでシーケンサに
渡すようなことをしょっちゅうやってて、以前から覚えてたいと
思ってるんです。
>>184
ISAGRAFってちょーマイナーなのかな?
個人を特定されるくらいマイナーだったら言いたくないけど、
5万円位かな。個人では難しいかな。
インタロジック \1,100,000
http://www.ilc.co.jp/Products/intalogic.htm

インタロジック\30,000
http://www.oaks-ele.com/oaks16-plc/oaks16-plc_htm.htm

れんり ¥97,000
http://web.parknet.co.jp/renri/
187デフォルトの名無しさん:03/09/07 18:06
>>181
そう、そこで質問だ
なんか処理するのを一定周期でやるときの
「一定周期」 をどうやって作ってる?

タイマで割り込み使ってカウンタ作って
sleepして起こされてカウンタ見てまた寝て
ってやってたんだけど、みんなそんなもん?
そんなもんでいいよ。それにシリアルが混じると寝てる暇が無くなるから
「寝る処理」は実質動かなくなるね。
>>186
> れんり ¥97,000
これってフリー版もあるんだ。本質問者じゃないけど
情報Tnx!
>>187
タイマ割り込みでカウンタ回してメイン処理側で
その値見て分岐するように作ればsleepなんてイランよ。
君が言っているのはリアルタイムOS使う時の処理だな。

ただ気をつけなければ行けないのは、その一定周期の処理が
どんな状況でも周期が保証されるように作ると言うことだな。
191吉田:03/09/08 02:22
javaをやっている者なのですが、組み込みソフト開発などの制御系では何語がいいんですか?
やっぱりCとかアセンブラなんでしょうか?
現在職に就いているわけではないので、結局javaで探すわけなのですが制御系に限定して探します。
どなたかアドバイス下さい。ちなに多少の電子回路は分かります。
192吉田:03/09/08 02:23
×ちなに→○ちなみに
>>190
sleepつかうのは、「ちょっぴりだけ消費電力抑えて」という
上層部の意向を汲んだり汲まなかったりでして。

あとは、タイマをちょっと長めにとってループにゆったり感を持たせて
ひとつひとつの処理が少しくらい遅くてもなんとかなるように とか
やってるんだけど、今のところうまくいってるけど、どうなんだろ。

OSとか勉強してその辺の基礎というか背骨部分をパクリたいな。
WDT叩くのをmainではなく10mS毎の割込処理でしたことがある。
この場合、mainではループ毎にあるカウンタをクリヤし、割込処理で
そのカウンタをインクリメントしてある敷居値(数秒〜1分位)未満なら
WDTリセットを出す。この手法の利点はどっかでループに陥っても
タイマ割り込みが動いてれば検知できること。内蔵WDTは数十mSで効くのが多い。
>>187
一定周期というのは、8bit以上なら数10ミリの周期を守るのに何の苦労もないけど
4bitとか16bitでも省エネモードだと結構厳しい。
時計の時間の変わり目とかね。 そこで、割り込みでカウンタをinc
メインではカウンタが0以外なら処理をしてdecとする事が多い。
これで数回多少時間オーバしても全体としての頻度は回復出来るようにしておく


Sleepを使って省エネはどうかな。それするくらいなら周波数下げた方がいいだろみたいに思ってしまうが・・・
まあ、それぞれの事情に応じてだね。

電池で使うような場合は、たいていデュアルクロックにしていて、普段のキー入力とかのループは時計水晶で動かしてる。
#32.768Kだから100〜300命令以内に収めなければいけない。
#だから、>>169みたいなコード見かけるとムショーに直したくなるんだ

そしてスタンバイ状態に入ったら時計水晶だけ動かして1秒おきに割り込み内で時計だけ動かす。
この時の 消費電流 1/10〜1/100 mA が目標
>>193
OSって言っても組込だと中身は便利ルーチン

タスクの切替はコルーチンと同じ、単にスタックポインタを切り替えてるだけ
コンテキストを現在のスタックに保存してから、スタックポインタを切り替えて
コンテキストを新しいスタックから取り出すという、1画面に収まるような処理。


なんだけど、最近、コルーチン使ってる奴もみかけないな。
8bit以上でアセンブラ使うなら昔は普通だったんだけどな
>>177
>通常は、ブザーon、タイマー起動として、
>タイムアップしたらブザーoffにしています。

ブザーを鳴らす処理をする場合は
普通、たとえば4KHzで鳴らしたいならタイマー割り込みは4KHzでかける。
タイマが一つしかないなら、それを割込内でソフトで分周して メインのループ時間を作る。
ブザーは メモリ上のフラグが on してる間 出力を反転するだけだ。
こういうフラグはbyteを取って0か0でないかとする場合が多い。
0でないならブザーが鳴るとするわけだ。
そして、メイン1周期毎に このカウンタをみてゼロでないならdecする。

これで細工は流々仕上げをごろうじろ。

あとは1秒鳴らしたいなら  メインを20mS周期としたら  このカウンタに50を代入するだけでいい。
そんなの、ハードでやってくれ
>>198
どんなハード使えばできるの?
>>199
タイマーの出力に 電圧をかけたら勝手になるブザーを取り付ける
201PID制御アルゴリズムを教えて:03/09/08 13:36
このスレに始めて書き込みます。
よろしくお願いします。
このたびセーケンサでPID制御プログラミングが必要になってきました。
PID制御理論をチョットかじった程度なんですが、アルゴリズムが解かりません。
C++でも結構ですアルゴリズムが解かった方、よろしくご教示ください。
ソフト屋の都合で部品の値段は上げられないな
>>201
PIDのアルゴリズムって、CとかC++とかの話じゃねーだろ
コードクレクレはなあ・・・・学校行くか本買って読んでクレよ。
>>197
実際に、CPUのI/Oでブザー鳴らしたら音がぐちゃぐちゃになるよ。
一度試したことあるから確か。
素直にタイマの出力つなぐのが一番。
>>205
実際に、CPUのI/Oでブザー鳴らしてるけど、何の問題もありませんが?
さすがに音階を出すとなると色々工夫も必要ですけどね。

タイマー割り込み内で処理してるなら、割り込み禁止長すぎるんじゃありませんか?
207PID制御アルゴリズムを教えて:03/09/08 15:06
>>203
スレ違いでした。
ごめんなさい・・・
208デフォルトの名無しさん:03/09/08 15:34
CreateFile()、SetCommState()、WriteFile()、ReadFile() 等々
でシリアル通信やりたいのだがRS23-Cの物理ポートないパソコンで通信
テストする場合仮想ポートはどうやって準備したらいいでつか?
209205:03/09/08 15:35
>>206
う〜ん、割り込みだと明らかにハードで鳴らしたのに比べて音が歪んでんだけど・・・
確かに、音階つけてたんで幾分条件分岐があったりして時間はまちまちに
なってたんだろうけどね。

んでも、その程度でダメになるんだったら結局のところ実用的じゃないよね?
>>208
USBの変換ケーブル使うってのは?
211デフォルトの名無しさん:03/09/08 16:03
>>210

>USBの変換ケーブル使うってのは?
http://www.ibsjapan.com/SSP-100.htm
たとえばこうしたらってことでつか?
ちょっと予算が、、
>>209
音階つけるとなると、割り込み頻度は 100K以上にしないと厳しいでしょう。
それに、周波数の実現で条件分岐なんてやったらそりゃダメでしょ。
もしかして、fs/N でやってませんか?
N/M*fs つまりDDS方式でないと厳しいですよ
>>211
USB - 232C のみの変換ケーブルなら5千円でおつりがくる筈だ
214デフォルトの名無しさん:03/09/08 16:57
>>213
サンクス
物理的に購入するのがいいようでつね

ホント初心者なんですが、やりたいことはJISコードを送るだけです
いろいろわからないことがあります
・RS232-Cの企画はどのピンが電源でとか決めてる企画?
・じゃデータ送信用のピンは自由に使っていいの?
・通常STX、ACK、とかのプロトコルは送信用のピンを使ってるの?

質問が無数にあるんですが、質問はあってるでしょうか?
>>214
ここで質問する前に、RS-232Cの仕様について書いた本をちょっと読んでみた方が
いいと思うよ。こう言っては悪いが、質問がちょっと基本的すぎる。
今、RS-232Cに使われてるコネクタは、9ピンのものと25ピンのものがあり、PC的には
9ピンが主流だとは思うのだが、頭に入っているのが25ピンだけなので、25ピンの方で
答える。

>・RS232-Cの企画はどのピンが電源でとか決めてる企画?
 電源を供給するようなピンは無い。
>・じゃデータ送信用のピンは自由に使っていいの?
 んなわけない。当然決まっている。
代表的なもの。
1 FG Frame Ground 筐体接地
2 SD Send Data データ送信(出力)
3 RD Receive Data データ受信(入力)
4 RS Request To Send 送信要求(出力)
5 CS Clear To Send 相手先受信可(入力)
7 SG Signal Ground 信号コモン
(4と5は逆だったかな〜〜)

>・通常STX、ACK、とかのプロトコルは送信用のピンを使ってるの?
 その通り。
>>196
>>なんだけど、最近、コルーチン使ってる奴もみかけないな。
>>8bit以上でアセンブラ使うなら昔は普通だったんだけどな
OSのっけるのがデフォな時代になってしまったからね〜
俺もOSなし8bitのコルーチンをライブラリ化して簡易マルチスレッド
環境作ってからは、使ってない
>>194
どこのループで永久ループ(長時間ループ)になってるかが
分かるってこと?
えーと、皆さんは、
イベントドリブンなマルチタスクシステムでの
WDTリロードは、どのような方法(方針)で
やってますか?
219デフォルトの名無しさん:03/09/08 23:08
ブチっと電源が切れる、
Real Time Linuxはないでしょうか?
220214:03/09/09 00:42
>>215

>RS-232Cの仕様について書いた本をちょっと読んでみた方が
書籍も遠出すれば読めるのだが休みにでもいくよ

俺はRS232-CについてはIEEEが規格した電気的規格と認識している
確かに質問できるレベルではないが先ほどの3つの質問で少し開けたよ
送信用でプロトコルを実現しているとすれば9ピンで送信用ビットが
3つあれば9パターンか3パターンの信号を認識できるということ?
すると受信用に3ピンあれば半二重というより全二重が可能?
シリアル通信というぐらいだからプロトコル用ピン以外の1ピンで送信?
調歩同期のスタートビットとかパリティ、ACKなどのプロトコルは
APIに制御をまかせるということ?(自作プロトコルは必要か?)
もし、送信中に(受信ピン)に待ったぁという信号がきたらAPIで制御できるのか?

って具合に創造を膨らましてるんだがちゃんと勉強するよソマソ
221215:03/09/09 01:08
>>220
>>220 二つ目の質問については、意図を勘違いしてたみたいだ。すまん

んで、
>9ピンで送信用ビットが3つあれば
RS-232Cはシリアル通信。送信用のピンは一つしか無い。
当然受信も。
ACKピンなどは無い。ホスト同士の通信プロトコルは、上位プロトコルで実装する。
RS-232Cとしては、フロー制御としてRS/CSが使える程度。(あと、モデム制御用の
信号線がいくつかあるけど、多分使わないでしょ)
いわゆるプロトコルは、WindowsのAPIとしては、いっさい実装されていないから、
ACKを送るのも、受け取ったENQ伝文を解析するのも、それらは全部アプリの責任。
スタートビット、パリティとかは、APIでそのように設定してやれば、自動で出来る。
(つか、それはハードがやることだ)

CreateFile/ReadFile/WriteFile/DCB/GetCommState/SetCommState/
SetupComm/SetCommTimeouts/SetCommMask/WaitCommEvent/
EscapeCommFunction
あたりを調べて。
>>219
FileSystemをROでマウントする。
223215:03/09/09 01:20
書き忘れ。
>もし、送信中に(受信ピン)に待ったぁという信号がきたらAPIで制御できるのか?
フロー制御は、DCBに設定することで、OSに制御させることは出来るよ。
でもまあ、簡単なプロトコルなら、バッファを多めにとって、
RS(RTS)は常時ONでやっちゃうけどね。
釣り臭せーGPIBあたりでネタフリすりゃええのにw
>>217 「どこ」までは判らない(´∀`) mainで叩いてると数十ミリ以上の
長時間処理はWDTに引っかかっちゃうけど、この手法なら敷居値の値次第で
長時間処理は許容でき、敷居値以上のループは暴走とみなせるのがイイ所。
折角タイマー割り込みでやるなら割込からスタック見て実行番地を
リング状にメモリに書き込んでおくといいよ。
それでWD時間きたら別の領域にコピーしておく、そしたら原因探し易いでしょ?

まあ、こういうのは普通にやってる事かな?
いや、俺のほうでは普通にやってなかった。それはRAMがKオーダーである
時にはぜひやってみたい・・・その原因探しは次のリセットの時にできる?
釣りか。やっぱ釣りか。
そうかなーとは思ったけど、
それでもマジレスしたのに。
>>227
次のリセットでそのメモリ消さないようにしたらいいでしょ。
230デフォルトの名無しさん:03/09/09 21:59
邪道を承知でお聞きしたいんだけど

一般的なPCのCOMポートから電源を取りたいとき
どの程度までなら許されるのかな。
>>230
邪道も何も必ずしも電源出てないのにどうやって取る気だ?
まさか”H”信号を電源供給に使うなんて言うなよ
>>230
人に聞くべきじゃありません。 232Cの規格を調べるべきです。
何Ωで何Vとか何mAで何Vとか規格にある筈です。

ソフト側でDSRとかRTSを固定して取るつもりなんでしょ?
ただし、電圧の範囲は広いので規格ギリギリだと5Vも殆ど取れない場合もありますよ。
制御系っていうからシーケンサプログラミングが中心なのかと思ったのですが
スレを読んでみるとそうでもないみたいですね・・・。(´・ω・`)
CとかJavaのプログラムは基本的にアルファベットと記号だけだから
書き込みもできますけどラダー図とかだったらそうはいかないですもんね・・・
>>231
そのまさかです
LED光らせたっていいじゃないか!
236220:03/09/10 15:03
>>225
だいぶわかってきたよーん
WinAPIを利用したらほとんどデータの丸投げという感じでつね
WiteFile()が完了でけたら送信完了と、、
DCBの設定(RS232-Cの規格?)がわかってないと設定できないなぁという感じ

CTS信号
DSR信号
RTSハンドシェイクを指定
俺の場合、産業機械を扱うから上の信号とかの設定するには産業機械の仕様
知っとかなダメということでしょうね?

API使うんだったら下の知識は必要ないと考えていいでつか?
>1 FG Frame Ground 筐体接地
>2 SD Send Data データ送信(出力)
>3 RD Receive Data データ受信(入力)
> ACK,EOTとかのプロトコル
 __∧_∧_
 |(  ^^ )| <ぬるぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄
>>236
相手の仕様が決まってるならそれにあわせれ。

FG/SD/RDは覚えて置くと、はまった時に役に立つかもしれん。
プロトコルはアプリで作り込むものだから、知らなかったら役たたず。
RTS/CTS/DTR/DSRの各信号線の意味。
SD/RDがどのように同期をとっているか、スタートビット、ストップビットとか。

そのくらいは頭に入れておいた方がいいよ。
まぁ、あれだ、「9600-n81x」の意味くらい分かるようになっておけと。
>>238
プロトコルは相手に合わせるもの
ト○コ風呂は相手が合わせるもの
>>238
FGよりSGをおぼえておいたほうがいい
243デフォルトの名無しさん:03/09/12 10:49
>>148
遅くなってすみません。
だいたい想像しているとおりでした。ありがとうございました。

さらに追加で質問をさせてください。
ブート部で割込を使用するため、割込関数を作成します。
__interrupt(vect=82) void sci0_txi(void)
{
(処理A)
}

アプリ部でも同じ割込を使用しますが処理内容はブート部と異なります。
この場合、アプリ部のプロジェクトでも
__interrupt(vect=82) void sci0_txi(void)
{
(処理B)
}
という風に割込関数を作成すれば良いのでしょうか。
244220:03/09/12 13:10
>>238-242
>FG/SD/RDは覚えて置くと、はまった時に役に立つかもしれん
当初、俺はこの3信号だけで通信できると信じていたが違うようだ
>RTS/CTS/DTR/DSRの各信号線の意味。
送信要求、相手受信可能、相手準備可能、自分準備可能という意味だろうか
とにかく、これらの信号をが全部ONになっていないと送信しないらしいが
APIレベルではどう関係あるのか疑問だ、、、、、
>9600-n81x」
ISO?
>FGよりSGをおぼえておいたほうがいい
グランドよりSGって?
245220:03/09/12 13:14
USB−RS232Cで実験しようと思うが
先輩から電圧に気をつけろよと言われた
まだ購入していないが、はたして変換コネクタはドライバさえいれたら
232cネイティブになるのだろうか、、、
>>245
グランドそっちを使っちゃ通信は出来ないね。

232Cの規格の許容範囲は広いからね。 --->電圧

USBをサポートしたパソコン+OSならね
>>243
H8S+HEWか。
ベクタテーブルをアプリ側で変更出来るなら、それでもいい。
まあ普通は出来ないので、ブート側で一回受けてからアプリ側を呼ぶことになると思うが。

ということを前の方で話してなかったか?
>>244
>9600-n81x
9600bps
parity none
data length 8bit
stop bit length 1bit
hand shake by hardware
だっけ?

RS-232cは端末とモデムのように等価じゃない装置同士を繋ぐ規格だから
その辺りをきちんと勉強しないと激しく理解が困難な罠。
説明は省略するけど、間違いだらけだよ。

といいつつ、信号の意味だけ書いてみる。
RTS:Request To Send
CTS:Clear To Send
DTR:Data Terminal Ready
DSR:Data Set Ready
CD:Carrer Detect
FG:Frame Ground
SG:Signal Ground
SD:Send Data
RD:Recieve Data
あ、記憶が曖昧だ〜
249U-名無しさん:03/09/13 00:49
メモリプールについておうかがいします。

いま、メモリプールを作っています。

具体的には、最初に固定バイトをシステムから取得し、
クライアントから要求があれば、固定バイトから切り売りしてやるというものです。

//イメージコーディング

void* operator new(size_t size ){
// ここでメモリを切り売りしたい。
}

void* data = malloc(100000); // 固定バイトを取得する。

Dummy *aaa = new Dummy(); // operator newを呼ぶ。


で、切り売りの仕方がわからないのですが、具体的にはどうすればいいのでしょうか?
そもそも「切り売り」の意味が不明瞭すぎる。
251デフォルトの名無しさん:03/09/13 02:06
制御系で働いている皆さんに質問です。
私は今JAVAを勉強していますが、将来は制御系を
考えています。

現場ではどんな言語を使っていますか?
頻度順に並べて下さい。
よろしくお願い致します。
>>249
なにがやりたいのかよく分かってないけど
malloc()のおソース見るのは、思想・宗教上の理由か何かで禁止されているんですか?
>>251
私ゃ制御系やってるけどc/C++/アセンブリ言語ってところかねぇ。
>>249
void * p = CutMemory(size);
BOOL b = SellMemory(p,size);
>>254
タダなのか?
>>251
頻度は仕事の内容で変わってしまうだろう。

およその感覚として 

コードROM4K  以下 アセンブラ
コードROM128K 以下 C言語
コードRAM128K 以上 C++の場合も増える。

4K とかいて単位を書いてないのはバイトの場合もあるしワードの場合もあるから。

ROM4K未満のものはPIC/4bit〜8bit/組込DSP
ROM128K未満のものはM16/H8/TI-DSP/
なお、今勉強中なら、
組込系の仕事でも、ツール作りを自分で出来ると仕事の効率も上がるし幅も広がる。
出来れば windows系の上でツール作りが出来るよう広く勉強しておくべきだ。
また、コンパイラの基礎くらいは勉強しておくべし、

たとえば、アセンブラやシミュレータがサッと作れると、それは大きな武器になる。
なお、
ROM4K以下の仕事はほぼ日本では壊滅的。
ロット 数100 なんてのを 回路屋さんが自分で書いてるくらい。 あっても非常に安い。
>>231
> まさか”H”信号を電源供給に使うなんて言うなよ

そのまさかをやってるよ。
デスクトップならほとんど大丈夫だが、ノートでダメな (=規格どうり供給してくれない) 奴がある。
まあ、当然予想できたから、AC アダプタでも動作するようにしたわけだが。
ノートは省エネの為に何でもやるからね。
といって、それだけの為にシリアル回線開いて信号パタパタするアプリ動かすのもなあ・・・

ちなみに232CはHでなくてもLでも電源は取れるよ。
261デフォルトの名無しさん:03/09/13 13:20
たいへんです!
フジワラヒロタツの現場検証が な、なんと最終回でした!
>>261
情報遅すぎ
>>260
当然そのデバイスを動かすための専用アプリが同梱されてるよ。
不細工な AC アダプタが不要と言うのでかなり好評だったよ。
まあ、今なら USB だけどね。(つーか、COM なし ノート PC が多くなってきたからな...。)

> ちなみに232CはHでなくてもLでも電源は取れるよ。

何を当たり前のことを...。

>>261
結構好きだったから、単行本にしてくれないかなぁ。
(一回総集編見たいのが付録についたけど、その月の奴買いそびれてしまった...。)
264デフォルトの名無しさん:03/09/14 04:42
リスタートちゃんの同人誌を出しても誰も買わない、世の中のなんとせちがらいことか!
265デフォルトの名無しさん:03/09/14 05:13
http://ocn.s18.xrea.com/
おまいらこのサイトのトリップ鑑定で
#kamiを試してみてください



266249:03/09/14 09:24
>>249
つまり!メモリプールなんです!

いちいちnewとdeleteしていては、時間がかかってしまうので、
最初にメモリをいっぱいとっといて、要求があれば、
そこから割り当てるということなのです。


で、その割り当て方がわからないということです。
>>266
new も deleteも そのメモリープールの実装より普通は早いもんだけどな
>>266
割り当てた場所をメモっておけばいいんじゃない?
>>266
もしかしてmallocが >>169のような実装をされていると思ってない?
可変長の取得がされて断片化されてしまうと、コレと同じく、サイズのあう場所を探す事になってしまうけど
WindowsAPIのような呼び出しを伴うならともかく、
このスレの少し上で書かれてるように mallocは>>140のように実装されている。

リンクリストによる実装なら、
固定長の取得・開放を繰り返した場合なら、いつでもせいぜい10数サイクルの処理だ。

これより速いメモリプールの実装は逆に難しいだろう。
>>244

>グランドよりSGって?

信号線用のグランド信号はあくまでもSGの方ですよ。
FGを信号グランドのつもりで接続しておいても通信できることが多いけど、
それは装置側でFGとSGが接続されているから。
元からノイズに弱いのに、更にノイズに弱くなっちゃう。
まぁ、そもそも20kbps以上で使うのが規格外なわけだが。
FGは接続してない装置もあるよ。
シールド付きケーブルなんてほとんど使われてないし。
273デフォルトの名無しさん:03/09/14 17:28
まあ、某メーカのモータ用エンコーダは2.5Mbpsの調歩同期シリアルだったりするわけだが
信号がEIA422っぽいのでリボンケーブルでも問題なし。
274251:03/09/14 17:39
皆さん非常に有益なご意見有難うございました。
JAVAってこれからも制御系では必要にならなそうな言語なのでしょうか?
別にJAVAに固執つもりは全くないのですが、JAVAで制御系の仕事されている方って
いらっしゃいますか?またその内容等にも差し支えなければ、教えて頂けたら幸いです。
よろしくお願い致します。
251の人じゃないが、CEで組み込みしてるって人もいたら聞きたいな
>>275
やったことあるけど、windowsと殆ど一緒だよ。
組み込み独特の面白さはあんまり無い。
277デフォルトの名無しさん:03/09/14 20:49
組み込みっつったらH8かSH2あたりが組み込みの組み込みたる楽しさの
限界リミットギリギリエッジって感じですかね?
そんな気がするね。トロンOSでも乗ってるとかえってつまらなくなる。
8bitの低脳、メモリぎりちょんという緊張感のほうが面白い。
DesignWaveかったひとー?
おれ、かってみたけどよくわからん。
とりあえず、クロック発信器かわないといけないのかな?

280デフォルトの名無しさん:03/09/16 00:06
>>279
俺もかったんだけど、クロック発信機ってどうやればいいんだろ?
とりあえず、AEL 1201CSM64.000ってかいてある部品を訳もわからず買ってきたよ。
どうすんだこれ?
mallocの実装はdlmallocが有名。けっこう断片化に強い。
単純なリンクリスト&ファーストフィットで実装してたのを差し替えたら
ありがたい効果を発揮してくれたよ。

あと、boost::poolかな?
282デフォルトの名無しさん:03/09/16 01:21
boostをHEWで使いたいなぁ。
mplとかためそうとしたけど、
template<template<typename> class f>がとおらないのよねぇ。
そのまま使えるのはpreprocessorぐらいでしょうか。
HEWはまずSTLぐらい提供しろと。
284279:03/09/16 22:16
CN2-A01に接続するみたいだけど、よくわからんね。
その部品手に入るかな。おれ。

ダウンロードケーブルも必要なんだな。
自作できるみたいだけど、不安定要素がふえるし。
でも、完成品はたかそうだ。
285デフォルトの名無しさん:03/09/16 23:17
>>281
リンクリストは具体的にどのように作るのでしょうか?
参考となる書籍もしくはHPがありましたら、教えていただきたいのですが・・・
>>285
簡単な実装例がK&Rにあるという話を聞いたぜ。
>>285
そんなこと人に聞いてる時点で、プログラミングの
素質はゼロと言えるだろう。
『Cプログラマのためのアルゴリズムとデータ構造 Part2』は?


でも、リンクリストの実装例なんてそれこそ腐るほど見つかると
思うんだけど一体どんな探し方したんだ?
探してないから聞くんだろうなぁ…
リンクリストで探すとみつからないんだろ。

リスト構造 でgoogle検索してみたらいい。

固定長のリンクリストなら >>171 に概要があるじゃないか
それはリンクドリストのことか?
リンクリストって意味がわからんぞ
まあ linked list なんだろうけど、日本語で書くならリンクリストで判るだろ
リンクドリスト
リンクトリスト
>>285 叩かれて凹んでるだろうが、K&R=ISBN-320-02692-6 C3041 \2718 買った当時
「c言語によるアルゴリズム事典」=ISBN4-87408-414-1 C3055 \2330 買った当時
書店で求める暇も無いくらい緊急のことならばメールで助けを求めれば相談に乗るぞ。
296>>285:03/09/17 23:51
みんないい人ですねぇ。

みなさんが幸せになるように、呪っておいてあげます(ジョーク

いや、でも参考になりました。
ありがとうございます。
mallocを実行すると、実際にはどのような処理が行われるのでしょうか?
C言語の参考書には、メモリを割り当てる、とあるのですが、
それは具体的には、どのようなことなのでしょうか?

ハードウェア的な観点からご説明をお願いします。

あと、できれば、freeもお願いします。
>>296
分かるからといって、仮に自分のHPにあなたはそう書くか?
299298:03/09/18 00:24
ごめん、
>>293
300デフォルトの名無しさん:03/09/18 00:55
>>284
ダウンロードケーブルは1万円くらいだよ、たしか。
それにしても、クロックを載せるパターンくらいは引いておいてほしかった。
>>298
うん。だって linled list はリンクリストって発音が一番近いし どうしても書くならリンクトリストでしょ?
といってリンクトリストと書くのはなんだかキドってそうで恥ずかしいし、

という事で検索してみると

リンクリスト + データ構造 359件
リンクドリスト + データ構造 30件
リンクトリスト + データ構造 42件


やっぱりリンクリストが圧倒的に多いようだよ。
ミニ知識: -ed の読み方。
 母音ならd だ。
 語尾が無声音(t/dは除く)の 場合、発音は t だ。 stopped  washed laughed
 ちなみに t/d の場合は 重ねられないので id となる。 ended 
英語の発音について質問するのはこのスレでよかったですか?
304デフォルトの名無しさん:03/09/19 08:43
ようするに、遠まわしに言ってるがリンクドリストが一番恥ずかしいと言いたいわけか?
リンクトゥリストゥ
>>305
小さい「ウ」は、たぶん必要ない。
307220:03/09/19 10:48
USBtoRS232C変換コネクタを買いましたが何も問題ありませんでした
ただ、クロスになっていなくて3時間悩みました

>>248
>S-232cは端末とモデムのように等価じゃない装置同士を繋ぐ規格だから
>その辺りをきちんと勉強しないと激しく理解が困難な罠。

既存のプログラムをみたらフロー制御の設定はなしだったYO
プロトコルも簡易で1バイトづつ送ってたYO
STOP信号がなければバイト送りって感じ

>>270
>>272
SGが真グランドってことですね。
FG,SGは自己決戦されてることが多いと

>>307

いや、真のグラウンドではなくて信号グラウンド。
それが、対地で浮いているかどうかは問題ではない。
309297:03/09/19 23:49
皆さん、見逃しているようなので、
もう一回書き込みまつ。

mallocを実行すると、実際にはどのような処理が行われるのでしょうか?
C言語の参考書には、メモリを割り当てる、とあるのですが、
それは具体的には、どのようなことなのでしょうか?

ハードウェア的な観点からご説明をお願いします。

あと、できれば、freeもお願いします。
310デフォルトの名無しさん:03/09/19 23:50
アライメントとは具体的になんなのでしょうか?
その目的は?

memalignとmallocの違いをアライメントの観点から
ご説明をお願いします。

>>309
ハードウェア的な観点から言うと、何も起こらないことがほとんどだと思ったよ。
313デフォルトの名無しさん:03/09/20 01:01
組込み屋はオブジェクト指向もろくに理解できんバカばかりなのはなぜですか?
314デフォルトの名無しさん:03/09/20 01:20
>>313
オブジェクト指向は戦場では必要ないから。
315デフォルトの名無しさん:03/09/20 03:45
>>314
こういうバカばかりだから組み込みはやってらんねー
たまたま組み込み開発にシフトされたんだが本当にひどいソースの山。

おまいらに警告する。
昔と違って職人技では破綻するほど組み込みソフトの制御内容は巨大化してる事に気づけ。
一方リソースは32bit20MHzCPUとリッチになってきており、充分とは言えなくともコンポーネント開発可能なところにきている。
組み込み職人はちゃんとソフトウェア工学を勉強すれば、もっと楽ができる
構造化コーディングで膨張したコードを必死においかけてパニックに陥る事はない。
というか、組み込み開発は時として人命にかかわる開発となるのだから、この調子では危険だ。
>>315
以下の部分を、そのまま返したいと思う、ム板住人は数え切れないだろう。
> こういうバカばかりだから
>>316
>>315はまだ学生だからしかたないです。
とりあえずそっとしておきましょう。
318名無し@沢村:03/09/20 07:06
おまいらよ、制御系を知るには、まず電気回路や電子回路を知る必要があるぞ。
インビーダンスとかリアクタンスの公式が山のように出てくるから、まずそれを覚えろ!!
319名無し@沢村:03/09/20 07:08
おまいらよ、制御系を知るには、ガウスの定理は不可欠だ。また微分回路や積分回路についても知っておけ!!
320デフォルトの名無しさん:03/09/20 07:10
ワンチップの小規模な場合はオブジェクト指向を
完全に反映させるのは無理だけど、考え方の一部は
使えます。
NT embedded+RTX等を用いた潤沢なハードウェア環境での開発は
オブジェクト指向を実際に使ってますよ。
(ずいぶん前から)
タスクをオブジェクトと考えて、メールとオブジェクトに
対するメッセージと考えるとRTOSでの開発は
オブジェクト指向開発と親和性が高いと思っているのですが...
321名無し@沢村:03/09/20 07:12
おまいらよ、制御系を知るために、まずトランジスタと抵抗、コンデンサを組み合わせて、バイアス回路でも自作してみろ?
322名無し@沢村:03/09/20 07:15
>>320
こらおまえ、オブジェクト指向はいいが、それでNチャンネル接合方FET増幅回路をどう表現するつもりだ?
こら、言ってみろ?
・・・公式が山のように・・・・プログラミングの為に必要な知識に比べりゃそんなもの・・・・
というか、このスレ、おじさん達の唯一の場所なんだからさ、ここで遊ばないで欲しいな。
そういう事するスレ他にあるでしょ?
325名無し@沢村:03/09/20 07:21
>>323
プログラミングの為に必要な知識、オブジェクト指向…プッ、幼稚園か(笑)
一個、一個の半導体、抵抗、コンデンサからPCを自作するのに比べたら、そんなもの幼稚園のおゆうぎよ♪
判ったよ。
じゃあ、簡単な試験からしてあげよう。
1、20KHzの信号を2dBしか落とさないで1次のLPFを設計しなさい。
2、そのフィルタは2MHzの信号を何dB落としますか?
パソコン黎明期は演算速度を稼ぐためにOPampでログ回路作ったりしたなぁ。
328デフォルトの名無しさん:03/09/20 12:55
>>318
その前に、CPUのハードウェアマニュアルを読んで理解できることが大切だ。

うわ。でかい地震だ!!
それほど、でかくは無かったYO
330デフォルトの名無しさん:03/09/20 13:20
328=千葉県民
329=山梨県民
>325よ
喪前のやっているPCの自作とは 「 組 み 立 て 」 だ

リアルライフもラインの君は得意だな
332デフォルトの名無しさん:03/09/20 15:23
>>318
正直、組込みのプログラムを作る上では、そんなの問題じゃないよ。
要はそれらの入出力を如何にこなし、制御するか。それだけ。
333デフォルトの名無しさん:03/09/20 15:33
あと、デンキ屋の書いた図面と実際の違いを指摘できる能力は必須。

プログラミング能力としては、(性能追求時はともかく)保守性の良いコードを書ける能力。
(性能追求時はともかく)読みやすく、再利用しやすいコードを書く能力。
つきつめればオブジェクト指向って事になるのでしょうが、数ms(うっかりすると数100ns)の
オーダで処理をこなさなくてはならないのが制御系の悩ましいところです。
タイミングの苦しいところでは、どうしても泥臭いコーディングが必要になりますから。
逆説的ですが、C++とかで書ける装置は、制御系とは違うような気がします。
制御する点では同じですが、プログラム時の思考の根本が違うんじゃないかと。
334デフォルトの名無しさん:03/09/20 17:45
>>333
確かに違うのかも、C++とか使って開発する部分はメインボード
の部分で、タイミングのクリティカルな部分はCANインターフェイス等
で別のワンチップマイコンのボード群で制御してますから。
制御の中枢部分は周辺制御がどんどん抽象化されて、ネットワークとか
データ管理等のビジネスプログラム色が強くなってますね。
最近は回路を見ることもめったになくなりました。 制御をやってるつもりで
どんどん遠ざかっていたようです。
SystemCなんかがはやったら組み込み系もオブジェクト指向
必須になるのかもね

組み込みで作るファームウェアはオブジェクト指向で言うところの
スーパークラスに当たる部分がほとんどだからな。
その部分で再利用だとか言われても、ターゲットが変われば
書き直す部分は出てくるよ。

って言うかハードに密接な部分はハードが変われば当然書き直すでしょ。
でもまあある程度はなんとかなる

ハード依存部の切り出し追い出しってのは
オブジェクト指向がどうのこうの言う以前に
必須な考えだとは思うけど

むしろ、基底クラス のみ をハード依存な感じで
コードの再利用が出来たりするかも?
たださ、 たとえばタイマー機能が貧弱な1チップで 命令数で時間作ってるような場合はもうどうしようもないだろ。

他にもプログラムの構造そのものがハード依存させにゃならん場合も多いよ。
>>335
そうなるってくると、ファーム屋とデンキ屋の境界がどんどん曖昧になって、
俺らの仕事はどうなることやら。楽しみのような、不安なような。
>>334
その傾向はありますよね。
なんか最近はちょっとした装置でもCPUを何個も積んでたり。
メインは本当にデータ管理とか通信ばっかりで、スレーブが
物を動かす、みたいな。
SHとか便利なのが安くなったので、昔と同じ事をするのにも
安直にCPUを沢山積むのが流行っているのかなぁ。
今やっている装置なんか、昔ならZ80一個で・・・(笑
おかげで、Cで放漫なコードを書きたれてますが。

いいのかなぁ、わるいのかなぁ。
341デフォルトの名無しさん:03/09/22 16:19
こんなカキコを見つけたのですがコレについて色々話してください。
自分は制御系のプログラムやりたいと思っているものなのですが、ハードもソフトもどんな造りか分からないのです。

http://school2.2ch.net/test/read.cgi/job/1062823117/l50
>646で
最近はビル空調( BAS(ビルオートメーションシステム))のBUSで、PC−調節計ー機器のつながりで、
調節計ー機器は調節系の機能(設定)で出力電圧、パルスが決まるから元々の機能だとして、
PC−調節計は物理層がいわゆるLANだから、PCでコントロールするとき、Objectメンバクラスのsocket使わにゃならん。
ただ、その辺のミドルウェアが用意されてれば、コンテキストのカスタマイズと画面入力値やセンサー入力値をミドルウェアとやりとりするプログラムを書けばいいことになる。
>>341
何書いてるかさっぱり理解できない。

そもそも 調節系/調節計 ? ってなんだ ?
>>341
日本語がわからん

こんな仕様書よくあるけど(w
344315:03/09/23 02:56
ms/nsオーダーでリソースがシビアな部分は、ある程度泥臭いコードになるのも仕方ない
しかし組み込み屋は、ともすると、そういった言い訳のもとに無茶苦茶なコードを書く
しかもトリッキーコードなわりには、よくコードを追っていくと無駄だらけの場合が多い

今はどうにかなっているかもしれないが
ソフトが一定の規模を超える時、こんな調子じゃやっていけないよ
そんで「一定の規模を超える時」はもう目の前だと思うよ。

C++でまともにOOPするのは決してちょっと勉強してすぐできるほど
簡単な事ではないから、マジではやく勉強はじめたほうが良い
まあね。 でもさ、ソフトが一定規模になるまえに、ハード分割するような気もするな。
>>345
最近はその傾向ですよね。ワンチップマイコンを部品感覚でつかう、みたいな。
>>342
エアコンの遠隔コントローラーかな?
んで、Etherの口を使ってPCとつないで通信はTCP/IP。
そこらへんは、機械屋さんがシーケンサでやっちゃう領域だから、あんまり制御系というほどでもない事が多いけどね。
シーケンサでも何とかリンクでイーサネットでも簡単に接続出来るからね。
そういうのはExcelVBAでコントロールなんてのもよく見かけるよ。
349デフォルトの名無しさん:03/09/23 15:03
H8SでI2Cバスを使ってEEPROMアクセスをしてるんだけど、マスタ受信を1バイトずつ
連続で何千回とやると途中でバスビジーになったりおかしくなります。
ルネサスのマニュアルも怪しいので、何か情報あれば教えてください。
EEPROMなら、自前ソフトでやるのが一番簡単だと思うよ。 
>>345
コストがあがる
ケースバイケース。
ソフトならタダって言うわけじゃないだろ。
ロット10台みたいな仕事が多いと、色々考えますな。
CPU16bit以下、RAM容量512k以下のハードで
OOPやる奴はただのバカ。
>>354
考え方だけでいいんだよ
言語はアセンブラでもCでもかまわんさ
>>354
単位がbitならその通りだけど 512KbyteならOOPが十分視野に入るだろう。
16bit以下というのは16bitも含むんだよね?
>309
OSによる。火葬記憶がないならmallocの実装としてモマエ樣が書いた
コードによる。
358デフォルトの名無しさん:03/09/24 17:29
便乗ですいません。
mallocとallocはどういう違いがあり、または、どう使い分けるのですか?
>>358
mallocは関数名で alloc.h はヘッダファイル名。

http://www.google.co.jp/search?q=malloc+alloc&lr=lang_ja
すみません、HEW/C++にも、__finallyありますか。
catchも普通に使えますか。
361358:03/09/24 17:52
恥.....

>>359すいませんでした。使ったこともなく...(ry
ちなみに
http://www5c.biglobe.ne.jp/~ecb/c/15_04.html
がメモリ確保について分かりやすかったです。
OOP が理解できなかったバカ → >>354
考え方だけなら、OOPじゃなくOOAやOODじゃないのかと
OOPを覚えた人が手続き思考?を嫌う気持ちはよくわかるが
C言語でOOPの考え方を持ち込む・・といっても、持ち込み方は千差万別になるはず
個人でやるならまだしも、チーム開発においてCでOOPやるとしたら
相当厳密なルール決めをしなければならない。

それはJavaとかでOOPするより更に上のレベルになる。
C言語しかしらない組み込み屋にそれを求める事自体無理があると思う。
oops
>C言語しかしらない組み込み屋
 ってまだ生き残ってるの? 3年前に絶滅したのかと思ってた・・・・
なんかタイトルが大げさというか・・・・
坂村健教授とマイクロソフトが単に共同研究するというだけでしょ。
>>368
大学の1研究成果と巨大資本が共同開発になるって凄くないの?
>>369
産学共同研究なんか、最近何処でもやってるだろ。
いや、今TVやってるニュースじゃ TRON を MSの次世代OSでは組み込みというふうに言ってたぞ
>>370
どれだけの数産学協同研究やったところで、
普通は、OS会社(買収ばかり?)のM$にOS使わせることをなし得ない。
>>371
WinCEを家電製品で使ってもらうためには、RTOSとしての機能も必要だから、
TRONを組み込む、というだけの話。

トロン評議会は出入り自由の団体だし、マイクロソフトが入会金を会費を払って
「私にも資料のコピーを下さいな」と、普通に申し込んだだけなんで、特別驚くような
話ではないと思うよ。
>WinCEを家電製品で使ってもらうためには、
ITRON > WinCE

>RTOSとしての機能も必要だから、
OSカーネルそのもの。

赤帽Linuxの組み込みとも結びついたし、組み込み制覇?
>>371
日経新聞のサイトから、無断コピペ。WinCEを拡張する部品としてTRONを使うということだね。
(それにしても、パソコンOSのMSと機器制御のTRONとの関係って、競合関係でも何でもない
と思うのだが。)

http://www.nikkei.co.jp/news/main/20030925AT1D2500825092003.html
マイクロソフト、「トロン」と家電用OS共同開発

 米マイクロソフトは25日、都内で記者会見を開き、国産基本ソフト(OS)「トロン」の開発団体と
共同でネット家電用のOSを開発すると発表した。パソコン用OSで世界シェア8割以上を握る
マイクロソフトの「ウィンドウズ」と、処理速度が速くてパソコン以外の機器制御に適したトロンを
組み合わせ、ネットに接続できるビデオカメラやデジタルテレビ、ファクシミリなどに向いたOSを
開発して世界標準獲得を目指す。

 トロン開発者の坂村健・東京大学教授が主導してソニー、NTTドコモなど250社が加わる
企業連合「T―エンジンフォーラム」に、マイクロソフトが加盟、共同開発を進める。
マイクロソフトとトロン陣営は競合関係にあり、ライバルが組む形になる。

 具体的には、トロンの発展形である「T―エンジン」の上でマイクロソフトの携帯機器用OS
「ウィンドウズCE」が動く仕組みを12月をメドに整え、家電・情報・通信機器メーカーに新型OS
として採用を働きかける。機器の内部制御をトロンが担い、操作画面はパソコン利用者が
慣れたウィンドウズと同様の構成になる。 (12:05)
>>374
ITRONがWinCEのカーネルになる、というわけではないんじゃないかなぁ
>WinCEを拡張する部品としてTRONを使うということだね。

>トロンの発展形である「T―エンジン」の上でマイクロソフトの携帯機器用OS
>「ウィンドウズCE」が動く仕組み

拡張じゃなくて、WinCEのOSカーネル差し替えじゃん。
ようするに、T-Engineを使っているマシンの上でWinCEを動作できるようにするというだけで、
MSのOS事業本体がどうにかなるわけではないと。

日経の記事は冷静だけど、なにやら、愛国心に燃えるマスコミが『和解』とか何とか、
わけの分からないことを書きまくっていますね。
OSとはタスクスケジューリングとリソースアクセスだろ。

タスクスケジューリング=ITRONだし、リソースアクセスがTエンジンだとすると、
WinCE=ITRON/TエンジンにGUI足したもの。
>>379
おそらく、マイクロソフトのいうOSは、そうではないと思う。
MSからすれば、ITRONはデバイスドライバの一種くらいにしか思ってないのでは?
>>380
OSの定義を変えないで下さい。

M$が何売るか、M$の儲けはOfficeであるとか、は別の話。
まいくろそふとのぷれすりりーす

http://www.microsoft.com/japan/presspass/detail.aspx?newsid=1716
この件はスレたててやった方がいいんじゃないの?

誰かスレたてて

過去ログ
■MSは、組み込み系、RTOSを制覇できるか?
http://pc2.2ch.net/tech/kako/1032/10328/1032860550.html
>>377
http://itpro.nikkeibp.co.jp/free/NBY/NEWS/20030925/135046/

この記事の最後の部分に載っている実装方法を見ると、最初は、
2重構造になるみたいだね。
> (1)割り込みやタスク・スケジューリングをT-Kernelで処理し,
> メモリーやその他ハードウェア資源は2分割する,

ううむ。これを、今から作るのか。
そんなにGUIが欲しいのか
388デフォルトの名無しさん:03/09/26 01:08
なんだかな。こんな2重構造のものを使いたいとは思わんのだが。

http://itpro.nikkeibp.co.jp/free/NC/NEWS/20030925/135051/

T-Engine Forumは、今年3月にT-Kernel上で動作するLinux「T-Linux」の
開発を表明済みで、今年末に成果を公開する予定である。
T-LinuxはT-Kernelの上で動作し、メモリー空間やデバイス・ドライバを
両OSで共有する。

これに対して、今回米マイクロソフトが発表したWindows CEはT-Kernelと
並列に動作し、これらの資源を共有しない点で異なる。「発表までに残された
開発期間が短いため」(古川副社長)であり、将来はより緊密な協調動作を
目指すという。
>1

女を制御する方法教えてくれ。
>>388
いやいや、これが最近の流行だよ。マジで。
でっかいミドルウェア藁
>>364
OSがない環境での
newの実装の仕方プリーズ。
あとVirtualも。
>>391
new も virtual もコンパイラが解決する問題だ
コンパイラ作ってるの?
>>283
続きは、

[TRON] MSに魂を売った男 [坂村健]
http://pc.2ch.net/test/read.cgi/prog/1064501055/

こちらで
>>393
は〜。
所詮PCしかさわってない人の認識ってこんなもんなんだよね。
将来ポケットPCに導入されてC#からTronのAPIが呼べるのなら面白いかも
TronのAPIが呼べてもさほど楽しくないな。
煽りバカは無視するに限るぜ
取り敢えず、BTRON用の(まともな)ANSICライブラリが欲しいと思った。
ちょっとタイミングを逸したけど、経験のあるファーム屋なら、
いまさら気取った言い方のOOPなんてのは、
至極当然のことなのでレスのしようがないんじゃないかな。
ギリギリに削った最小限のオブジェクトを自作のモニタでドライブせにゃ
ならんわけで、クラスとかいう概念以前に当たり前のことなんじゃないのかなぁ。
まあ、ぬるい環境でハードを動かしている人には判らないと思うけど(最近は俺もそう)、
突き詰めればOOPにならざるを得ないのではないのかな。
C++は置いといて、ね(ついでに、自分でモニタすら組んだことの無いやつも除外)。

デバイスドリブンな装置だとなおさら。
401デフォルトの名無しさん:03/09/29 10:02
組み込みじゃあ、catchとか使わんのかな?
エラーが発生したら、即、while(1); //無限ループ で十分でつか?
402初心者です:03/09/29 10:18
助けてください。
PCと、FT8U245を使ったUSB通信を行いたいのですが、
PCからの下りは通るのですが、登りが通りません。何で?
ちなみにFTD2xx.DLLを使っています。
403デフォルトの名無しさん:03/09/29 10:45
volatileってのは、変数宣言に使うべきですか?
それとも、アドレスを参照するタイミングで使うべきでしょうか?
>>401
>組み込みじゃあ、catchとか使わんのかな?

コンパイラやOSのマニュアルを読むなり、吐かせたリストを解析するなりして
例外がどう実現されているのか理解しない限り、怖くて使えん。

> エラーが発生したら、即、while(1); //無限ループ で十分でつか?

序盤はそれでもいい(といってもデバッガから実行の停止ができるならだけど)
ある程度バグが取れたら、管理者に通知するとか、自己回復を図るとかに
差し替えるべきかな。
> エラーが発生したら、即、while(1); //無限ループ で十分でつか?

WatchDog任せにできるならそれでも充分。

>>403
char const volatile * pInputPortAddr;
って感じじゃない?
>>403
暇なんでぐぐってたらこんなの発見。
ttp://www.kumikomi.net/article/explanation/2003/10kumi/01.html
>>402
USBとはどのようなものかわかっていない気がするが・・・
ま、取りあえずUSBプロアナつないでみそ。
>>407
> USBとはどのようなものかわかっていない気がするが・・・

これ使うのに USB をそんなに理解する必要は無いと思うが ?

ま、>>402 はもう少し具体的に書かないと誰も答えられないぞ。
(FT_Read() が帰ってこないのか ? FT_GetStatus() はどうなってるのかとか。)
>>401
エラーが発生したら 即リセット。
悪即斬です。
>>401
c++やjavaなんかのcatchは、正直気持ち悪い
非常に幅の狭い例外対応しか出来ないし、
そもそも例外をコンパイラが拾えるというのも怪しくみえる

無限ループ云々は意味不明
ちゃんとエラー処理作るべき
例外がどうとか行ってる人は、とりあえずC++を勉強した方がいいんじゃない?
?
C++の勉強している/したから、例外がどうこういっているんじゃない?
例外ってのは、コンパイラの実装として、枯れてるの?
>>411
つーか君、割込って知っているか?
例外の仕掛けは

例外ブロックの開始で PC以外のコンテクスト(レジスタ・スタックポインタ)を保存。
  具体的には、レジスタをスタックに保存して、SPと例外処理アドレスを保存するだけなんで
  関数呼び出しとそう変わらない負荷の処理だ。

例外発生でそのコンテクストを復元して例外処理部へ飛ぶというだけ。

割り込みとそう変わらん。
>>411
このスレは全てをコンパイラ任せにしている人間が書くところではない。
コンパイラ任せに出来るものなら、したいんだけど。
そうか、ここは何か問題があるとコンパイラのせいにしたがる
連中が集うスレだったな。
419デフォルトの名無しさん:03/10/05 20:49
>>414はちょっと外している事にきづいたか?
コンパイラのデバッグができるなら、コンパイラ任せにしても
いいんじゃないの?っていうかCってもともとはそういう言語でしょ。
コンパイラを自由にできないから、コンパイラ不信みたいなのが
でてくるだけで。
CPUの例外とC++の例外を混同している人がいる?
例外です
正直、言語ヲタは現場にはいらん!
と、彼らの気持ちを代弁してみるテスト。

まず動くこと。それが大事だ。
と、彼らの気持ちを代弁してみるテスト。

Cも機械語も任せろ。C++なんてどう訳されてるかわからんもんなんて使うな。
(俺が理解できないだろ)
と、彼らの気持ちを代弁してみるテスト。
漏れはC++で組込みの仕事をしたことが無いんで教えてください。

・C++で例外取れると便利なのですか?
  ICEでメモリのウォッチ・トレースをするんじゃダメ?(こういう質問自体間違ってる?)
・呼び出し時のオーバーヘッドは、どうなんでしょうか?
  使ったことが無いんで、無視できる程度なら導入してみたい。
・上記とかぶるけど、クリティカルなタイミングの記述(あと、性能)は?
  Cと変わらない程度なら、とても興味がある。
  自分の仕事で使う処理系はC++もつかえるもんで。

自分で試して見れっ!ってのは有るかと思いますが、教えていただければ、と。
>>424
 変な事言ってると思うよ。
1、C++の例外は、 if  for goto とかの制御構造の一つであって メモリ例外とかの例外とは関係ない
  関係あるようにするには仕掛けを自分で作らないといけない。

2、呼び出しって関数の事? なら C も C++も同じ
  メソッドも、仮想でなければ同じ。 仮想の場合は VMT(ようするにポインタ配列)の分だけ余計になる

3、パフォーマンスも、C++をベターC として使えば同じ。
  というか、この分野で使うなら現状ベターC 程度に使うしかないと思うけどね。
C++はいろんなコーディングスタイルが可能な言語だけど
Perlについてはそういった面は昔から叩かれてきた。
C++はどうして叩かれないのか不思議で仕方ない。
>>426
マルチパラダイム言語だから。
じゃないか?
アセンブラ−>C−>C++と移行してきた人間なら
何にでも使えることはかえって利点と考える。
>>428
何にでも使えるってのがどういう意味なのかわからないが

アセンブラからCへの移行っていうのは、やれることを限定して
生産効率を上げることが出来たが、CからC++ってのは
言語の表現力が上がって、逆にやれることが増えた分、
その事から無用な混乱が生まれた。得られた生産性向上は
僅かにも関わらず。
そもそも汗 -> Cと、C -> C++を同じようには比べられない。

WindowsなどのようなシステムとしてC++を推進しているのでも
ない限り、安易にC++は使うべきじゃないと思うけど。
>>429
できることが増えてなぜ無用の混乱が生まれると考えるのだろう。
なんかネガティブだと思うよ。使わない機能は使わなきゃいいだけだし。
>WindowsなどのようなシステムとしてC++を推進しているのでもない限り、
開発中とかで、データの解析ソフトをWinにして、ソース共有するならC++。
例外機構は便利だと思う。
ライブラリ(対象デバイス)間でエントリ関数の名前を付けるのに苦労した経験からすれば、
C++でクラス化していれば楽だったと思う。
その他諸々、c++だったら楽だったと思うことはいくつかあれど、
c++で困ることは余りないと思う。
#あ、分かってない奴に何を使っちゃいけないか説明する手間が増えるか。
C++でファームウェアを書いている人にアンケート

1) 例外を使っていますか?

2) new、deleteの実装はどうしましたか?
(用意されていたものを使った、自分で書いた、使っていない等)

3) templateを使っていますか?

4) STLを使っていますか?

5) 構造体を使っていますか?

6) クラスを使っていますか?

7) アクセス指定子はどうしていますか?
(publicのみです等)

8) 継承を使っていますか?

9) 使っているデザインパターンを列挙してください

10) OSを組み込んでいますか?
435434:03/10/06 16:23
ちょっと項目が多過ぎた感が…

C++は何年か前に一通り文法を勉強し、
Windowsアプリを作るのに使った程度で、
ファームを書くときに使った経験はないです。
ぶら下がって質問。

ICEとの親和性(っつーか、旨くいえない)は如何でしょうか?
>>425

| 1、C++の例外は、 if  for goto とかの制御構造の一つであって メモリ例外とかの例外とは関係ない
|   関係あるようにするには仕掛けを自分で作らないといけない。

横槍すみませんが、これ、言っていることはわかるけど、ICEのメモリトレースやウォッチで
充分検出できるのではないかなぁ。>424は、そんな仕組み(C++の例外)を使うより、現物で異常の現場を
貼るのじゃ駄目なのか訊いているんじゃないでしょうか。
438437:03/10/06 19:36
自己レス

自分の書いたことは、的外れでしたね。
>424は、例外を張る(BUGの検出)ならICEでいいじゃんと言い、
>425は、例外の仕組みについて解説した。

そもそもDEBUGの手法や例外についての考え方が違ったのですね・・・
>>426
C++はコーディングスタイルはそんなに多くないとおもう。
Perl見たいにifを後ろに書いたりできないしね。

開発スタイル(パラダイム選択)はいろいろできるけど。
あと、叩かれてないこともない。
>>434 の 2) は俺も知りたい。
みんなどうしているのか。
new,virtual使うにはそれ専用のセクション区切って
ヒープみたく割り当てなければならないからね。
RAM 512kbyte程度のワンチップではおいそれと使う事は出来ないよ。
仕様上本当に余裕があると解る場合以外は。
C++を使っているのは
ヒープの瞬間最大サイズを正確に見積もれる人か
そうでなければ、RAMをいっぱい使える環境にある人。
>>441
RAMが512kも乗っているワンチップって、何?

オレも使ってみたいわ。
>>441
おれも知りたい
>>441
俺はあんまり知りたくない。
>>441
どっちかというと、お前を知りたい
>>441
506kbyte分けてくれ
>>441
1kでもいいです
449デフォルトの名無しさん:03/10/07 16:29
pentiumの2時キャッシュは512kBだが、これをRAM内蔵ワンチップとみなしては。。。。。。。。なわきゃーない
でも、そろそろ F-ROM512K RAM64Kで1チップ18PIN 単価100円なんてのを作って欲しいね。

パソコンがHDD-20G RAM 512M で10万の時代なんだから 性能1/1万で値段1/千なら出来そうに思うんだけどね
>>450
18ピンじゃI/O少なすぎ
452434:03/10/07 19:19
C++でファームウェアを書いている人はいないということでよろしいか?
>>452
よろしいようです。書いてみたいひとは沢山いるみたいですが。
>>452
C++のコンパイラでコンパイルした奴なら昔書いたよ。
Better CレベルでC++の機能はほとんど使わなかったが。
スタートアップはアセンブラでゴリゴリとやって、ライブラリは無し。
455デフォルトの名無しさん:03/10/07 20:05
モータの制御をしたいんだけど、ここで聞けばいいの?
>>455
ためしに質問を書いてごらん。
457デフォルトの名無しさん:03/10/07 21:57
DAとADボードを使ってタコメータ付きのモータの制御を
行いたいんだけど、マニュアル見てもボードの使い方が
全く分からないです。
DCモータだと DA を使うより PWM で出した方がエネルギー効率はずっと良くなるよ。
ACモータだとトライアック制御になるね。
>>457
そうですか。オレにはあなたが何を聞きたいのか、
全く分からないです。
460デフォルトの名無しさん:03/10/07 22:39
>>458
DAを使うことになってるので、突っ込まないで下さい。
>>459
C++でMFCを使うのですが、まずDAに電圧を出力させるにはC++の本と
DAのマニュアルのどっちを見れば良いのですか?
>>460
C++の本に電圧を出力するする解説は無い。
するする
463デフォルトの名無しさん:03/10/07 23:20
>>461
C++の本は一通り見たので、それは分かったのですが。
やっぱりマニュアルに書いてあるんですか。
ほんとに馬鹿でスイマセン。
464デフォルトの名無しさん:03/10/07 23:24
Winで制御するPCIのADボードだと、普通は付属のDLLでAPIたたくんでないの?
CONTECのとかだとそうだが…
PC98/DOSのころのCバスボードは、直接IOたたいてレジスタぐりぐりだったけどな
465デフォルトの名無しさん:03/10/07 23:31
>>464
何言ってるか全然分からないです。
466デフォルトの名無しさん:03/10/07 23:48
>>464

通常はボードメーカがドライバとDLLを提供してくれる。
んでもってユーザはアプリケーションでDLLが提供する関数を
使ってボードを制御することができる。

ってことじゃないの。
ちなみにそういうことなら 以下の書物が参考になるかも。

ttp://www.amazon.co.jp/exec/obidos/ASIN/4789836924/249-8503922-8383519
要は、DAボード、ADボードのメーカからライブラリを買ってこい、と。
468466:03/10/07 23:52
>>467

つーか、値段にもよるんだろうけど、普通は「込み」なんじゃないの?
ちがうんだったらヘタすりゃデバドラから作らないといけないかも。

とはいえ、当方ボード制御が専門ではないので的外れだったらすんません。
469デフォルトの名無しさん:03/10/07 23:55
ドライバとDLLは普通はついてる
しかし、VBでやるためのOCXとかは別売りが多い

っていうか、何でマニュアルを読まないのだ?
つ ま ら ん 釣 り か ?
課 題 丸 投 げ か ?
>>467
そもそもボードとは、PCに挿すボードなのか?
独立して動作する基板なのか?
472デフォルトの名無しさん:03/10/08 07:28
>>466
何となく分かりました。
>>471
PCに挿してあるボードです。

この課題出来ないと卒業できないので、本気です。
>>472
なるほどね。 Windowsだから正確な時間管理が出来ないので DA-ADを使うわけね。

この構成でDAで電圧出したらモータ回って、その回転数はADで判る。
あとは、
 1、モータの特性を調べて最適制御を行う
 2、PIDで適当に制御する

のどっちかでしょ。
Win9x系なら直接I/O叩いてもいいけどNT/2000/XPだとドライバとかサービスとかいうのが必要になるね。

自分はDelphiで GWIOPMというのを使ってる
http://www.wideman-one.com/gw/tech/Delphi/iopm/gwiopm_code.htm
これを使って指定したI/O空間がアプリから 直接Inp/Out命令で使えるようになる。
お手軽、簡単。
>>474
漏れは趣味ならgiveio.sysを使っている。
仕事では、デバドラ屋さんが書いて、winアプリを作っている人が使う、みたいな。

>>472
WinでPIDだと制御周期がアバウトになっちゃうからパラメタの決定もおざなりに
なりそうですね(w 正逆と速度制御程度でよいのだったらPIだけでもよさそう。
A/D,D/Aボードのメーカ名と型番くらい買いてくんないとねー

コンテックやインターフェースのならドライバーやサンプルソースが付属して来るし、
メーカのサイトからでも取って来れるでしょ。

回転数はモータコントローラとかからアナログで出てくるの?
パルスで出てくるならカウンタボードなんだけど...
>>476
最近はご丁寧にF-Vを付けているところも多いよ。
逆にV-Fしなくちゃいけないんでひと手間かかったりして、ね。
モータにはDC/AC/ステッピングがあって
DCは電圧-回転数が比例で制御性が良いけど、他のは非直線だからやっかいだね
結局、何をやりたいのか判らんから回答不能だわな。
A/D,D/AでDCモータ回します、だけではなぁ。
>>479
いや、DCモータかどうかも明らかではないと思うぞ。
案外、インバータコントローラに電圧入力で・なんて構成かもしれん
>>480
まあ、A/DはF-VをV-F変換して回転数を知るとして、
D/Aの方はモータの回転数を指示する程度にしか使わないのではないかな。

単純に、ぱここんから指定した速度でモータが回ります、みたいな。

やっぱ、やりたいことの詳細が判らないとどうしようもないな。
482デフォルトの名無しさん:03/10/08 11:41
>>479
>>473に書いてあるようにPID制御します。DCモータです。
>>476
回転数は、タコメータからアナログで出てくるのでAD使います。

インターフェースのTRM-2401を使ってます。
学校にあるマニュアルを読んでもできないから、
マニュアル全部送ってもらおうと思ったら、
2週間以上かかる。(泣
むしろ時間をかけて卒業されたほうがよろしいかと
物事を第三者に伝える能力の習得も含めて
>>482
インターフェースのTRM-2401をウチからググッたところ、単なる端子台しか引っかからなかったよ。
力になれずにスマン。つうか、いまどきwebで資料を入手できない汎用ボードを使うのは、
初手からしくじったね。南無。
486485:03/10/08 11:59
>>484
それしか引っかからないよね。
487デフォルトの名無しさん:03/10/08 12:03
>>483
そういう能力が必要なのは分かるのですが、とにかく来年卒業したいのです。
>>485
すでにPCに接続はされています。
>>487
だから、キミが言ってる型番は単なる端子台。
そこにフラットケーブルでパソコンの中にある基板に型番が書いてあるから見てごらん。
PCI-3xxx とか書いてあるでしょ?
>>487
もしかしたら釣りなのかと思いつつカキコしてみる。

構成として、正直なところはどうなの?

PC->なんかの汎用入出力ボード->TRM-2401->A/D,DA基板->(ドライバ)->モータ

こんな感じ? だとしたら、TRM-3401は、単なる中継役しかやってないはずだよ。
>>487
よかったな、盛大に釣れたじゃないか。
さあ、巣にお帰り。
釣りだろ、このネタ。

ちょっと前のC++の512K内臓ワンチップ君が、仕返しに研究室に転がっていた
端子台の型番を書いただけだよ。

真面目にあいてするだけ、昼休み時間の無駄。
>>491
俺的には、スレ住民の実力を測ろうとしている若者からのジャブだと思うのだけれど、どうか?
ネタ決定、てことで、昼寝でもしますわ。
494デフォルトの名無しさん:03/10/08 12:47
>>489
(ドライバ)のとこが良く分からないけど、そのような感じです。

ネタじゃなくてマジなんですけど。
>>494
まじでTRM-2401とか書いているなら、>483の教えに従え。
1年は、無駄じゃないし、回り道でもないよ、君にとって。
マジか・・・・で、型番を調べてみる気も無いわけだな・・・・・それはそれでスゲーや
497デフォルトの名無しさん:03/10/08 13:32
>>496
今は外に出てるので、型番調べられないです。
>>497
おいおい、そうじゃないだろ?
みんな、色々調べてくれたんだ。 まずありがとうが先だろ? そして、後で調べます だろ?
499デフォルトの名無しさん:03/10/08 13:47
>>498
ありがとうございます。
後で調べます。
どうしても卒業しないといけないので、死ぬ気で頑張ります。
>マニュアル全部送ってもらおうと思ったら、 2週間以上かかる
何処の誰に何と言って依頼されたのでしょうか

「与えられたマニュアルが不足しているのであればそれらが揃うまでは出来ません」
と言えればいいのですけどね

そんな理由で納期が延びたことなんかない。
502デフォルトの名無しさん:03/10/08 15:47
>>488
フラットケーブルに書いてあるE43842(B) AWM2661 105C 300V VW-1
てやつでしょうか?
>>500
ホームページから郵送で申し込みました。
>>502
ネタか・・・・ありがと、とりあえず面白かったよ
そうか?ネタとしては最悪の結末を迎えたような気がするが。
>>502
とりあえず、そのケーブルのつがなってる先の パソコンの中の基板の型番を書け! ゴラァ
506デフォルトの名無しさん:03/10/08 16:06
>>505
パソコンの中ですか? 
今度はマザーの型番を書くに1票
508デフォルトの名無しさん:03/10/08 16:28
>>507
S/NO:020269431
これ違いますか?違うなら教えてください。
おまいら優しいな。人肌恋しい季節だからか?w
俺、なんか見まもるのが楽しくなってきたよ
511デフォルトの名無しさん:03/10/08 16:38
またかよ!あ〜もう!
>S/NO:020269431
それ、Serial No.=Lot No. だろが。
ボードの名前よ名前!
なんだかなぁ。
>>508
ええと、
http://www.interface.co.jp/images/photo/pci3522a.gif
http://www.interface.co.jp/images/photo/pci3523a.gif

こういう格好してるのが、ケーブルの先にあるでしょ?

そして その上に PCI 3523 とか書いてあるでしょ?
とりあえず>>507はハズレ...
Serial No.で来よったわい。
>PCI 3523
これだ!これ!
で、話はどこまで行ったっけ...
PCI 3523Aについて貼っとく。
h
ttp://www.interface.co.jp/catalog/prdc.asp?name=pci-3523a
>>508
お願いだからボードの型番を書いて下さい。
ウソでも良いから書いて下さい。
ごめんなさい。
許して下さい。
>>508
粘着質な釣りに見えてきた・・・
漏れが荒んでるのかな
518デフォルトの名無しさん:03/10/08 16:52
ボードは分かりました。
JCI-S1S,P/006/8-001[11] M
と書いてあります。
いや、モータの制御なら PCI 3522A だろうと思うぞ。
520デフォルトの名無しさん:03/10/08 16:54
>>518
訂正です。PCI-3523Aです。(汗
>>514
キミは質問者なのか?
それともネタの最新情報に飢えた御同輩か?


まあいいや
PCI-3523Aってことで突っ走ろう!
>>520
そうか・・・ 思わずその型番はメモリカードだろと突っ込みそうになったぞ
515が教えてくれたページの下の方にチュートリアルがあるじゃんか。

それ嫁。



それともユーザ登録できない身分なのか?
524514:03/10/08 16:59
>>512
すいません。質問者ではないです。
質問者の方、ごめんなさい。
なかなか進まず、荒ぶってしまいました。
マダマダ、アオイナ。。。汗;
さて、PCI-3523A だとすると、その先はどうなってるんだ?
DCモータで逆転制御ありって事かな?

だとするとDCモータ駆動回路がけっこう厄介そうに思うのだが?
モータのワット数は?
526514=515:03/10/08 17:02
>>524>>512>>521に訂正。スレ汚しスマソ。
>>524
もう遅いな、我々のターゲットは既に定まったのだ。
528デフォルトの名無しさん:03/10/08 17:04
>>525
定格出力[W]のことですよね?
20です。
>>528
そうか 10V 20W となると 2A の電流が必要になる。
ADCの出力に直接つないでも回らないよね?

Q1、電流増幅はどうやるつもり? 
Q2、逆転回路は必要ですか?
530デフォルトの名無しさん:03/10/08 17:16
>>529
A1.アンプを使います。
A2.必要です。
>>530
そのアンプは市販品ですか? 自作既成ですか? これから自作ですか?

モータには2本電線がついてるよね? タコメータも2本だよね?
そのうちモータの配線はアンプとどう接続するの?
>>528
そんな情報を小出しにしないで、モータの規定電圧とか型名とか書いてよー

>489さんが書いたみたいに

PC -> PCI-3523A -> TRM-3401 -> (モータドライバ) -> (モータ)

のカッコ内の詳細情報を書いてほしい。
533デフォルトの名無しさん:03/10/08 17:26
>>530
アンプは市販です。モータから2本、D/Aから2本、
ラジコンバッテリから2本アンプにつなぎます。
タコメータからの2本はアンプにつなぐんですか?
そうか。 じゃ単に電圧出せば回る状態だね。

普通はDCモータならタコメータなくても回転数検出出来るもんだと思うんだけどなあ
535デフォルトの名無しさん:03/10/08 17:31
>>534
マクソン社で買った時にタコメータもつけてもらいました。
タコメータからの2本はA/Dに直接つなぐんですよね?
>アンプは市販です。モータから2本、D/Aから2本、
>ラジコンバッテリから2本アンプにつなぎます。
なるほど、これで駆動か...
>タコメータからの2本はアンプにつなぐんですか?
タコメータには電源がない。PCI-3523A の入力端子から直流電圧もパルスもでていない。
PCI-3523Aの入力端子にタコメータのパルスをかける電源が居る

だから
>タコメータからの2本はA/Dに直接つなぐんですよね?
はダメ。

>>534
>普通はDCモータならタコメータなくても回転数検出出来るもんだと思うんだけどなあ

レゾルバ付ってことかな?
537536:03/10/08 17:39
>タコメータには電源がない
は訂正。タイプにもよる。
コイルになってて誘導起電力発するのもある。(レゾルバ)のように...
タコメーカの品名は分かるかな?同じマクソン社の品?
質問者はトリップ付けてくれ、偽モンが紛れる
539デフォルトの名無しさん:03/10/08 17:43
>>536
タコメータて回転数(電圧)を測るだけじゃないんですか?
PCI-3523Aの入力端子にタコメータのパルスをかける電源は
どうすれば作れますか?
さて、次はモータの型番の予測か。 けっこう面白いね。

http://www.maxonjapan.co.jp/products/datasheets/dc/074_RE25.pdf
541536:03/10/08 17:45
タコメータがロータリーエンコーダだったりすると
「タコメータからの2本はA/Dに直接つなぐ」
では、PCI-3523Aの入力にパルスが来ない。
いや、俺の予測では DCタコだと思うな
これだろ?
http://www.maxonjapan.co.jp/products/datasheets/tacho/213-214_DCT22.pdf
>>536
>レゾルバ付ってことかな?

DCモータで回転数検出をする場合は、
DCモータなら負荷をかけなければ精度の良いタコメータになる。
つまり、スイッチングで無負荷状態を作って読み返すわけ
544536:03/10/08 17:51
>>539
もし、電源が要るタイプのタコなら
PCI-3523Aの入力片端ータコの片足ー+10V以内(電池で6Vとか9Vとかの+)
PCI-3523Aの入力片端ータコの片足ーGND(電池のー)
10Vはバッテリーでも良いし、電池でも良いし。
モータの型番が 118749  9Vとして 無負荷 1.01万RPM
出力電圧:0.52V/1000rpm だから1万RPMで5.2V 丁度よいじゃない。


さて、あとはアンプの型番の予測だ。
546536:03/10/08 17:56
>>542さんのところに書いてあるようなDCタコだったら電源は要らないよ。
ムービングコイル付と書いてあるから。。。
547 ◆kPmitmMo1A :03/10/08 17:57
>>540>>542
ビンゴです。モータが一番左のやつで、タコメータが軸径3ミリのです。
548536:03/10/08 18:00
>>543
なるほど、そうやってフィードバック掛けるのですか。
549 ◆kPmitmMo1A :03/10/08 18:00
>>546
電源要らないようですね。
じゃあアンプはこれか?
http://www.maxonjapan.co.jp/manual/lsc/250521_j.pdf

DCタコは並列につなぐのか? pci-3523aはアイソレーションアンプは入ってないから危険な感じもするな
>>549
ウーム。で、プログラムしたけど、現状動かないと・・・。
552 ◆kPmitmMo1A :03/10/08 18:10
>>550
アンプは、TITech Driverの製品です。
小さいものです。
じゃあ、まずは
VBかDelphiのトラックバーを動かしたらモータが回るようにする事ですね。
554536:03/10/08 18:16
555536:03/10/08 18:21
PCIカード出力端子を>>554のVRに付けて・・・?
556 ◆kPmitmMo1A :03/10/08 18:24
>>554
アンプにはPC-0143-2と書いてあるのに、説明書はそれを持ってます。
>>553
Visual C++を使ってもできますよね?
557536:03/10/08 18:25
VRに付けて→×
VRの代わりにつけて→○
>>554のじゃなかったらスマソ。
558536:03/10/08 18:28
>>556
おお、ビンゴであったか...
これで分かりやすくなった。
で、>>554の図のVRを外して、DESとGND間にPCIカード出力をつないでいるのだろう?
559 ◆kPmitmMo1A :03/10/08 18:29
>>557
PCIカード出力端子、VRが分かりません。
560536:03/10/08 18:33
PCIカード出力端子=PCI-3523Aの出力端子
VR=図左の可変抵抗
でどうかな?
PCI-3523Aの出力端子からでた2本は、それぞれDESとGNDにつながってる?
また極性はどうなんだろう。
561536:03/10/08 18:40
>>558>>560>>554のFig.1のことだよ。
左側+10と書いてあるところには何もつないでいないね。
だから、左側の付属部分は全く無しということ。
562 ◆kPmitmMo1A :03/10/08 18:42
>>560
今持ってるアンプは図と若干違っていて、左側から15本線が出ています。
PCI-3523Aの出力端子から出た2本は、アンプの左上の2本につなげます。
残りは使わないです。
左上のところを逆にするとモータが逆回転します。
宿題は自分でやれ
564536:03/10/08 18:46
>残りは使わないです。
>左上のところを逆にするとモータが逆回転します。
OK,良いね。
>PCI-3523Aの出力端子から出た2本は、アンプの左上の2本につなげます。
そこにDESとGNDと書いてあればOK。
回路、接続に関しては問題ないようだ。
565 ◆kPmitmMo1A :03/10/08 18:55
>>564
今持っているのは、JW-0143-2という製品だと思います。
そのマニュアルには、左上0Vで、2番目がREFと書いてあります。
JW -0143-2
http://www.justware.co.jp/japanese/pdf/tdrv_m_pc-0143-2.pdf
これネ。問題なさそう。
しかも、>>562
>左上のところを逆にするとモータが逆回転します。
とあるから、すでにプログラムで回すところまではできてるみたいだね。
とすると、何ができないんだろ?
567 ◆kPmitmMo1A :03/10/08 19:11
>>563
もちろん自分でやろうとしました。
けど、時間が残されてないので、助けてほしいです。
568 ◆kPmitmMo1A :03/10/08 19:15
>>566
プログラムができてないのです。今のところD/Aの変わりに電圧源を使って
モータの特性を調べてるだけです。
時間ないなら ExcelVBA とか 無料のDelphi6パーソナルでやっつればいいのに
それはダメなの?

VC++を使うのが課題なのか?
570 ◆kPmitmMo1A :03/10/08 19:30
>>569
私がVC++を使ったことがあるだけです。特にVC++という指定はないです。
ただ、どっかから持ってきたと分かるようなものマズイです。
>>570
VC++/Delphi/VBのどれでもサンプルコードは用意されてるようだしね。
ボードの制御の面で苦労はしないと思う

俺はGUIで表示しながらやれるのがやっぱり便利だとは思うけど、VC++なら簡単と思うならそうすりゃいいよ。
572デフォルトの名無しさん:03/10/08 19:39
おまえら優しいやつらの集まりなんだな。
もれ、2chを誤解してたよ。
573 ◆kPmitmMo1A :03/10/08 19:44
>>571
まずは、D/Aに出力するところから始めるので、
サンプルあるのなら参考にしたいです。
どういうところ載ってますか?
あと、GUIてJAVAのことですか?JAVAは全く分からないので無理です。
574デフォルトの名無しさん:03/10/08 19:47
こりゃー

575リーフ:03/10/08 19:48
[email protected]
ブラクラ送って下さい。どういう風になるか知りたいんです!!
576デフォルトの名無しさん:03/10/08 19:53
ぶらくらって送るものなのか?
>>573
VB/ExcelVBA/Delphi なら、まず
http://www.interface.co.jp/catalog/utility_soft/bpa0504/bpa0504.asp
が使える。

これは、お手軽、簡単だ。
578 ◆kPmitmMo1A :03/10/08 19:59
>>577
ありがとうございます。感謝します。
579 ◆kPmitmMo1A :03/10/08 20:28
>>577
これは、Visual C++は無いのですか?
このネタ、まだ続いていたのか・・・(w
581デフォルトの名無しさん:03/10/08 21:48
http://www.interface.co.jp/catalog/tutorial/tutorial_vc.asp

ほんとにVC++つかえるんだろうな?
582 ◆kPmitmMo1A :03/10/08 22:23
>>581
他の言語に比べるとマシです。今、その本のD/Aをやってますけど、
どう生かせばいいか分からない。
583デフォルトの名無しさん:03/10/08 23:09
今、downloadのために登録したらkey届くまでダメらしいから、D/Aの本の内容分からないんだけど
ActiveXは使うんだよね?
その辺は大丈夫なのかな?
だとして、ActiveXのコントロール作る→メンバ変数に値代入→制御の素になるデジタル2進数生成→D/Aでアナログ変換→電圧値
という流れだろうから、メンバ変数に値代入までをやってやれば、とりあえず電圧値はでるでしょう。
とりあえず、一定電圧を出すような(変数の値一定)プログラム組んでみれば。
584:03/10/08 23:14
>メンバ変数に値代入までをやってやれば、とりあえず電圧値はでるでしょう。

は、すなはち、メンバ変数に値代入してやれば、後は自動的に電圧出るの意味。

というより、そんなことはわかってたね。。。;;
585デフォルトの名無しさん:03/10/09 05:29
今度実験でA/D・D/Aボードによる波形の取り込みのプログラムを
VC++で作らなくてはならないのですが、VC++を触った事が全くないので
どなたかプログラミングについてお助け願えないでしょうか?

ボードはNational Instruments社のPCI-6024Eを使えとの事です。
よろしくお願いします。
586デフォルトの名無しさん:03/10/09 06:07
>>585
何でVC++なの?
NIのボードなら,Labviewでいいじゃん
587585:03/10/09 08:15
早速返事ありがとうございます。
実験の趣旨が「VC++を用いた取り込みプログラムの作成」なので
Labviewとか他のは使っちゃいけないことになってます。

ちなみに、Labview使ったことないんですが、
それ使えばそんなに簡単なんですか?
俺たちは確かに触った事ない道具でも使うスベを知っている。
どうやってるか判るか?
簡単さ、それについて努力すればいい。

だからオマエに教えてやれるのは一つ。 努力しろ
つーかさ、旨く動かせなかったモノを 納期や期日に間に合わせるべく、
脂汗を流して解決してゆくってのが、やっぱり基本のような気がするオレは、
もはやオッサンなんだろうなぁ・・・。
>>585
ボードのマニュアル見てみようとしたけどなんか落ちて来なかったからどんなツールがついてるのか知らんのだけど
実験の趣旨がそうなら、
>>474 >>475 のサービスを使ってI/Oを許可した上
VC++のインラインアセンブラを使って In/Out命令を書いて作るか
あるいは、自分でドライバを作って、割り込みによるサンプリングまで行わせたいという事かもね。

自分で勉強するしかないね。

>>589
技術は人に教えてもらうものじゃないってねw
まあ 若いんだから、1ヶ月頑張ればそこらのデバイスドライバは作れるさ。
C++の範囲じゃなくCの範囲だし
逆にMFCアプリ作るより覚える範囲は少なくて楽だと思うな。
>>591
だからと言って、「盗むものだ」とか言われちゃうと、いつの時代なんだかわからなくなるし(w
そうか? けっこう盗ませて貰ったから、盗ませてもらったぶんは盗んでもいいよという気持ちだけどな。

教えてなんかはやらないよ。
595585:03/10/09 19:48
皆様、厳しい意見含めありがとうございます。
>588
分かりました。、努力します
>590
せっかく書いてくださってるのに9割理解できないです。
やはり、自分で勉強するしかないようです。
ごめんなさい。ありがとうございます。
>592
そうですね。Cの範囲ですね…
ちょうど提出期限も10月中なので1ヶ月頑張ります。
596DB2:03/10/10 01:21
.
597DB2:03/10/10 09:26
>>595
10月中ってもう3週間しかないじゃん。
レポートも書くんでしょ?

このペース間に合わないぞー

そのものズバリの正解を教えるのもナニなので、
ヒントくらいなら出せると思うので、次に質問する時には
内容を具体的に書いてみてね。

今までのあなた”と思われる”書き込みを見ていると、断片的な
記述が多く、あなたが

1.何を知りたいのか
2.どこまで理解しているのか
3.どうしたいのか

という内容が何人かが聞いて初めて明かされるパターンなので、
今まではウチら(漏れだけ?)はそれを変に楽しんでいたんだけど、
もう、あなたにそんな時間的余裕は無いと思うよ。

デスマ突入おめでとー
585=595は、モーター君とは違うような気がするが。
600585:03/10/10 12:02
>598
えっと、実験で何をするのかもっと具体的に書けという事ですよね?

歪みゲージをつかった力センサをまず作らされました。(昨日完成)
それを、AD/DAボードと接続して歪みゲージを動かした時の電圧の変化を
PCにdat形式で取り込むという実験です。
力センサは作成済みですし、端子台や接続するケーブル、ボードは全て
NIでそろえてあります。

私が知りたいのは
@VC++を使ってdat形式でPCに取り込むためのプログラムなんですが、
AVCどころか、C初体験なので、全く理解していない状況です。
Bで、どなたかAD/DAボードを使って、アナログデータを取り込むプログラムを作った事の
 ある方がいれば、サンプルになるようなプログラムを教えてほしいなぁ、と思ってカキコしました。
>>600
600おめ。
>>600
先輩に「質問は箇条書きにした方が見やすいぞ」とか言われて
仕方がないので番号振りましたって感じだな。
603585=600:03/10/10 12:21
あ、600だったんですね。ちょっと嬉しいw

>602
え?いや、>598で番号が振ってあったので、
その回答部分を見やすいかと思ってやったんですけど…
逆効果ですか?
>>603
取りあえずAD/DAボードのマニュアル読めって感じじゃないの?
>>600
まず、
・PCI-6024Eのマニュアルをざっくり読め。
・NI-DAQは君の研究室?のパソコンにインストールされているか?
・VC++用のサンプルがインストール用のCD-ROMに入っていないか?
上記を確認しろ。

オレはPCI-6024Eとやらは使ったことがないが、通常ボード単体だけでの
販売は少ないはずだ。win用のドライバは付属していないか?

ドライバがあるならしめたもんだ。マニュアルには叩き方が載っているだろう。

それをそのままパクれ。
定周期でサンプリングするのは、書き込みを見る限りでは無理そうだから、
for( i = 0 ; i <= xxxxx ; i++) a = a ;
見たいに書いて、時間を稼げ。
あとは取り込んだ値を、dat形式とやらに変換しろ。

老婆心(ジジイだが)ながらいっておく。dat形式と言っても、決められたフォーマットがあるわけじゃないから、
自分たちの範疇だけの用語を使わないほうがいいぞ。
>>605
>for( i = 0 ; i <= xxxxx ; i++) a = a ;

いつの時代だよおっさん。
>>606
685のレベル合わせたつもりだったのだが(Cも覚束ないらしいし)。
タイマの登録も無理そうだったんでな。
>>607
今の性能だとunsigned long数えきるのに数秒もいらないような気がした。
609585=600:03/10/10 12:31
>605
ありがとうございます。
研究室でやってるんじゃなくて、実験室という週に決められた時間しか
入れないところで作業しています。
NI-DAQはインストールされてますが、これって何なんですか?
それも分からないレベルです。

マニュアルとCD-ROMは先生管理なので、おそらく見れないです。
とくにサンプルプログラムとかは絶対に…

皆様、本当に色々ありがとうございます。
もっと自分も頑張りますので、どうぞよろしくお願いします。
>>608
サンプリング周期が不明だから、unsigned longを数えきるのに秒かかるなら
充分じゃないか?
A/Dの取り込みに秒単位でかかるボードなんか、存在意義もないだろ(w
>>609
まず、その先生とやらに昼休みが終わったら、すぐに言え。

「マニュアルも読めない基板を動作させることは出来ません」

サンプルプログラムは、まあ、置くとして、ドライバの叩き方が
判らなければ(マニュアルが見られないならば)、世の中の誰も
その基板をつかうことはできないぞ(開発者を除けば、な)。
今回のA/D君もネタっぽいなぁ。
>>611
激しく同意。

ああ、パラレルに繋がってるから適当に取ってよ。とかならまぁ、アレだけれど。
この板じゃ、オカ板のマウンテンバイクみたいな、伝説のネタ氏が出てくるのは
難しそうだね(w
NI-DAQで即レスできる時点でネタ確定だろ。
>>605
せめてSleep()ぐらい教えてやれよ。

精度の問題はあるかもしれんが。(いや、ありすぎ)
職訓はAD/DAが旬なのか
AD/DAならコンテックのボード使え。
Webにサンプルプログラム上がってなかったっけ?
>>618
ネタなんだから、おおらかに行こうぜ。
ネタ氏は、わざと英文ドキュメントしか落とせないボードを狙ってるんだから(w
>>614
詳細キボンヌ
621 ◆kPmitmMo1A :03/10/10 15:37
>>583>>584
今、サンプルプログラムを書いているのですが、
保存したプログラムはどうやって開けばいいのですか?
プログラムの一部しか出ず、プロジェクト全体を出したいです。
 
はい、ネタ、ネタ〜♪
624デフォルトの名無しさん:03/10/10 16:26
自分もおととい>>581さんのサイトに登録したのだが、
IDはもらえたが、KEYが自宅に届くまで、ダウンロードできないらしい。
だから、自分には分からんのだよ。
誰か頼みます。
ところで、何の言語で書いたの?
VC++なら、どんなクラスライブラリ使ったの?
その辺、もっと具体的に書けば、色々話が出てきそうなんだけれど。

625↑624=583=584:03/10/10 16:28
分かりにくくてスマナイ。
>>621さんへのレス。
>>600
の話だと 単にコンソールアプリとして作ればいいようだね。
なら、IDEの使い方覚えるより メモ帳とコマンドラインでうやった方が速いんじゃないの?

単に電圧だしては測定して取り込みながら コンソールに CSV で出せばそれでいいんでしょ?
627 ◆kPmitmMo1A :03/10/10 16:37
>>625
トリップつけたほうがいいよ。
インターフェースに直接電話すれば、ログインできるようにしてくれる。
俺はVC++。クラスライブラリは分からない。
今は、D/Aボードに電圧を出すプログラムを書いてます。
>>626
インテリセンスを知らないのか?
629626:03/10/10 16:56
>>628
>>626>>621を見た感想ね。
630626:03/10/10 16:59
ああ、でも kPmitmMo1A は別人で、そういやこっちはモータ回す方だったか

モータ と 歪みゲージ をそれぞれトリップ前に付けてくれ。 わけわからんから。
631デフォルトの名無しさん:03/10/10 17:04
>>629
ちょっとまった、>>621>>600は別の人だろう。
同じD/A-A/Dボード使ってるが、
>>621はDCモーターコントロール(後々DCタコメータからフィードバック掛けたい)で、
>>600のはストレンゲージ(歪みゲージ)を用いて、A/D変換して測定したいのだろう。
すみません。光センサなんですが仲間に入れてもらって良いですか?
植物プラントで光量を一定に保つためのフィードバック制御です。
633モータ ◆kPmitmMo1A :03/10/10 17:10
>>631があってます。
これでいいでしょうか?
引き続きお願いします。
>>632
ネタなんだろw
いいよ、仲間に入りなよ。

こうなったら、なんでも来いだ
>>632
いいと思うんだが質問者はトリップ付けてくれよ。
後から来た人ワケワカメだぞ。

トリップだ!トリップ〜!
637633:03/10/10 17:16
今デジタルマルチメータR6551を2台繋いで同時に電圧を計測する
プログラムをVisual Basicで作っています。
そこで質問なのですがとりあえず一台繋いで計測することは出来ました。
問題なのがもう一台繋ぐと認識しないで計測が出来ません。
色々考えてみたのですがDLL(標準モジュール)にもう1台分のプログラムを
入力しなければいけないのでしょうか?
VBは分かるんですが計測器を繋いだインターフェースに詳しくないので
お願いします。
638モータ ◆kPmitmMo1A :03/10/10 17:16
D/Aに出力するプログラムを書いたら、以下のエラーメッセージ出ました。
構文エラーじゃないので分からないです。

LINK : fatal error LNK1104: ファイル "Debug/step.exe" を開けません。
?????
>>633はモータ君でVC++じゃなかったのか?
それとも>>637=>>638なのか?
640モーオタ ◆F2Ui.1iwg6 :03/10/10 17:24
安田タン・・・
641637 ◆C0R1wrfdzk :03/10/10 17:27
すいません633て書いてしまいました。
どなたか分かる人はいませんか?
642モータ ◆kPmitmMo1A :03/10/10 17:28
>>638
633=638≠637ですよ。
>>637 ◆C0R1wrfdzk
は植物プラントの光センサーの人?
モータ、ヒズミ、ヒカリとかのトリップないと分からんよ。
回答者も
>モーター
>歪みゲージ
>マルチメータ
>光センサ
を本文の先頭につけるといいかも
モータ ◆kPmitmMo1A
に基本的なことを聞いてしまうのだが、
LINK : fatal error LNK1104: ファイル "Debug/step.exe"
とでたとき、ファイルはどうやって開いた?
VC++立ち上げて、ワークスペースを開く、で開いたのかな?
そうしないと、関連づけがおかしくなって、そのようなエラーがでることがあるのだが。
プログラムには問題なさそうだぞ。
646デフォルトの名無しさん:03/10/10 17:39
step.exeが実行中なんだろ。
647モータ ◆kPmitmMo1A :03/10/10 17:46
>>645
いったん保存して、ワークスペースで開いたら実行できました。
ありがとうございます。
648643だが:03/10/10 17:53
もういちど。
>>643でワケワカらんこと書いてしまったが、
>>637は歪みゲージの人なのか?植物プラントの人なのか?
>>638
今更言うのもなんだが、死ね糞マルチ
>>605
for( i = 0 ; i <= xxxxx ; i++) a = a ;

VCよく知らないけど、最適化が怖くないか? 初心者だと逆にはまりそう。
ネタ師にひとこと言っておきたい。
完成までネタを引っ張ってくれよ、と。
>>650
volatile int i;
653モータ ◆kPmitmMo1A :03/10/10 18:05
>>645
また同じエラーが出ました。ワークスペースで開いたのにうまくいきません。
何がいけないのでしょうか?
>>653
たぶん、最初に失敗した時点で、フォルダに変なファイルができてしまっていると思う。
自分でプログラミングしたところをコピーして新しくVC++作ってみなよ。
これが一番早道。
ちゃんと終了出来てないんじゃねーの?
マルチ野郎には何も教えてやらん。
デジタルマルチメータR6551はとりあえず
アドバンテストのヤツらしい。
h
ttp://green.advantest.co.jp/techinfo/www/product/R6552_L_T_T-R.html

>>637がどうつないでいるのかが分からんとこだが。。。
659モータ ◆kPmitmMo1A :03/10/10 18:22
>>657
スミマセン。板違いだと思って向こうで質問しました。
期限も迫って慌ててるので教えてください。
同じ板で板違いか(^_^;)
アドバンのR6552だと、GP-IBとRS-232の2種類のインターフェイスが用意されているみたいだな。
RS-232Cで2台つなぐと、それぞれを認識できるか分からんが、
GP-IBボード経由なら、GP-IBボードの性状に拠りそうだ。
GP-IBボードがMBに複数枚させて、別々に認識できるなら、うまく行きそうだが。。。
662モータ ◆kPmitmMo1A :03/10/10 18:58
テスタが無いんですけど、
D/Aのどの端子から電圧が出力されてるか調べる方法はありますか?
>>662 >モータ

1、テスタ買いなさい。 秋月で2千円くらいの買うくらいの小遣いあるでしょ?
2、LEDがあるなら1Kオーム程度の抵抗を直列に入れて点灯させてみなさい
3、それも無いなら舐めなさい。 味で確認しなさい。
( ゚Д゚)・・・ネタ?ネタだよな?
665モータ ◆kPmitmMo1A :03/10/10 19:57
出力電圧は普通CH1から出るんですよね?
>>665
ん、?他CHでモータ回ってるのかい?
(もしそこまで、できているのなら、もう、速度制御はすぐそこだ。
出力させるパルスの間隔の式等を作って代入してやればいい。)

667モータ ◆kPmitmMo1A :03/10/10 20:14
>>665
そこまで行ってません。(泣
プログラム書いて実行したけど、何も反応がありません。
この場合、プログラムがちゃんとできてないか、
D/Aの電圧を拾う所を間違えてるかどっちかですよね?
>>667
自分には、どういうプログラムでどう動くものか分からんからもう一度貼っておこう。
他の方のアドバイスがあるかもしれん。
PCI 3523AというD/A-A/D-BOADであったな。
http://www.interface.co.jp/catalog/prdc.asp?name=pci-3523a
669モータ ◆kPmitmMo1A :03/10/10 20:31
>>668
PCI 3523AのD/A-A/D-BOADで、
http://www.interface.co.jp/download/tutorial/tut0022_10.pdf
↑の本を使ってステップ波を出そうとしてます。
本を参考に↓のようなプログラム書きました。CH1で5V出ると思うんですけど。
INT nCount;
WORD wMax;
WORD wMin;

wMax = 0xffff;
wMin = 0;

for(nCount = 0;nCount < 200;nCount++){
if(nCount < 100)
gwSmplData[nCount] = wMax;
else
gwSmplData[nCount] = wMax;
}
>>669
ウーン、アクセス権がないようで、開かないみたいだな。

nCount<100なんて、あっという間じゃないのかな。
一回、無限ループにしてみたらどうなる?
止めるときはCTRL+ALT+DELで。。。
>>670
ctrl+cでいいじゃん。
シ---------ン...
ドキドキ・・・・・・・・・
訂正:ループはnCount < 200ダッタネ。
シ---------ン...
>>669
gwSmplData の定義はどうなってるの?
C++ で [] 演算子をオーバロードされてるの? そうじゃないと、代入だけでは出力されないでしょ
>>669
もし配列への代入が出力命令だとすれば PCI ボードへの書き込みは
PCIバス速度だけで制限されるから 33MHz として 100じゃちょっと不足だね。

セトリングタイム: 10μs  とあるから 最低その倍くらい回した方がいいんじゃないの?

で、そんな一瞬で閉じてしまったら確認にならないから gets() とか 入れてキーボードを押すまでの操作にしたらどう?
>>675
GBAのプログラミングをさわってみたんだけど、ディスプレイへの出力は配列への代入(特定のメモリへの書き込み)だったよ。
>>677
VC++は Windows上のプログラムを作るツールで、たぶんアプリケーションを作ろうとしてるようだから
メモリマップI/Oのアクセスは出来ないと思うよ。
>>678
へぇ。
>特定のメモリへの書き込み
なるほど...、やはり、>>676さんが述べているように
もし配列への代入が出力命令で、
メモリへ入れられたパラレル2進数がPCI 3523AのD/Aconverter ICでアナログ変換されて何Vかがでるわけか。
>>678
そういう話か。じゃあ多分配列への代入じゃ無理だな。
演算子の多重定義でもしていない限り。
>>680
いや >>676 で書いたのは配列参照演算子がオーバロードされてる場合の話なんだ。
メモリマップI/O は デバイスドライバしか参照出来ない。
アプリで参照するには仮想メモリ上にマップしてもらわないと・・・

それに インターフェース社のPCIボードだからたぶん I/O命令でアクセスするんだと思うよ。
>>682
> 仮想メモリ上にマップしてもらわないと・・・
UNIXのmmapとか?
>>683
多分メモリマップドファイルじゃないの?

いくらC++で頑張ったところで非デバイスドライバは非デバイスドライバだけどなぁ。
>>680
配列に波形パターンを入れて、それを引数に関数を呼び出せば、
その波形が繰り返し出力される、

というような仕様のライブラリらしい。
686680:03/10/10 21:50
>>682
なるほど。
モータ ◆kPmitmMo1Aさんの使ってるsampleプログラムにはオーバロードが記述されているのだろうか。
>>685
その関数呼び出しの部分を省いたわけね(^_^;)
http://www.interface.co.jp/catalog/prdchelp/japanese/gpc3300/FunctionList/FunctionList1.htm

DACについては
DaOpen -> DaSmplConfig; -> DaOutputDA が一番シンプルな使い方のようだね。

>>688
★=====(゚∀゚)キターーー=====★

DaSetSamplingData()
ってのに、
>>669で作った、gwSmplData[] を渡すと、その波形が
出力されるようだ。

しかし、制御で使うのは、DaOutputDA() の方だろうな。

オンラインヘルプがちゃんとあったよ

入力用
http://www.interface.co.jp/catalog/prdchelp/japanese/gpc3100/Help.htm

出力用
http://www.interface.co.jp/catalog/prdchelp/japanese/gpc3300/Help.htm

1件のアナログ出力を行う

HANDLE hDeviceHandle;
DASMPLCHREQ DaSmplChReq[2];
WORD wData[2];
hDeviceHandle = DaOpen( "FBIDA1" );
DaSmplChReq[0].ulChNo = 1;
DaSmplChReq[0].ulRange = DA_5V;
DaSmplChReq[1].ulChNo = 2;
DaSmplChReq[1].ulRange = DA_5V;
wData[0] = 0x800;
wData[1] = 0xC00;
DaOutputDA( hDeviceHandle, 2, &DaSmplChReq[0], &wData[0] );

//入力
HANDLE hDeviceHandle;
ADSMPLCHREQ AdSmplChReq[2];
WORD wData[2];
hDeviceHandle = AdOpen( "FBIAD1" );
AdSmplChReq[0].ulChNo = 1;
AdSmplChReq[0].ulRange = AD_5V;
AdSmplChReq[1].ulChNo = 2;
AdSmplChReq[1].ulRange = AD_5V;
AdInputAD( hDeviceHandle, 2, AD_INPUT_SINGLE, &AdSmplChReq[0], &wData[0
>>669のどちらかのwMaxはwMinの間違いなんだろうな。でないとifの意味がない。
#if使わないで二回ループしろよ・・・
一定時間毎に処理したいなら、入力か出力のどちらかをイベントにすると良いみたい。

while( true ){
DaOutputDA( hDeviceHandle, 1, &DaSmplChReq[0], &wData[0] ); //アナログ出力を行う
DaSetSamplingConfig( hDeviceHandle, &DaSmplConfig ); // アナログ出力更新条件の設定
DaSetSamplingData( hDeviceHandle, &wSmplData[0][0], 1 ); // アナログ出力データのセット
DaStartSampling( hDeviceHandle, FLAG_ASYNC ); // アナログ出力更新の開始(非同期)
WaitForSingleObject(hEvent, INFINITE); // アナログ出力更新終了のイベントがシグナル状態になるのを待つ
} :
てことは、SmplConfigていうクラスがドライバソフトに作られてるってことになるのかな。
>>695
クラスって言うか外から見ればオブジェクト的なものだな。
697695:03/10/10 22:23
あっ、ごめんなさい。
DASMPLREQ SmplConfig; // アナログ出力条件設定構造体
って書いてある。。。
698694:03/10/10 22:33
>>694は間違い。
 
・ 最初の DaOutputDA は AdInputAD
・ それからASYNC で WaitForSingleObject するより FLAG_SYNC で同期にした方が楽だったね

699モータ ◆kPmitmMo1A :03/10/10 23:53
>>670-698
家に帰ったら、こんなに書き込みが!ありがとうございます。
>>693
本当はwMinだけど、ステップなので、wMaxにしました。
>>670
テキストにはオシロスコープで波形が確認できると書いてあります。
10msだから短いですね。

他は、考えてからレスします。
700585=600:03/10/11 08:21
すんげぇレスが…
>611
ですよね。マニュアルは何とか手に入れたいと思います。
データシート(英語)しか手元に無いんで、わけ分からないです。
>612
ネタじゃ無いですよ。むしろネタであってほしいぐらいです(泣)
>618
そのボードのほうが楽なんですか?でも、学校側ですでに
用意されているものなので、ボードは変えようがありません。
701歪みゲージ ◆8x780QSFss :03/10/11 08:30
>631
えっと、これでいいですか?
>634
え?誰??

とにかく、サンプルプログラムをなんとか手に入れられれば、
あとはそれをいじるだけで出来ると思うんですよ。
702歪みゲージ ◆8x780QSFss :03/10/11 08:31
あ、600に続き700げとw
>モータ
 サンプルコードも判ったしCも使えるという事だからもう問題はないね?

>歪みゲージ
 そのデータシートの型番のマニュアルは米サイトから落とせないのかい?
 どうも俺のところでは米サイトからファイルが落ちてこないのだが


704歪みゲージ ◆8x780QSFss :03/10/11 16:49
>703
えっと、私が落としたのはここからです。
ttp://sine.ni.com/apps/ja/nioc.vp?lang=JA&cid=1064
ここの中断くらいに書いてあるデータシート(英語)を落としてきました。
たしかに、すぐ表示されないので、右クリックしてファイルを保存しましたけど。
705703ではないですが:03/10/11 17:25
>>歪みゲージ ◆8x780QSFss
ダウンロードしてみたよ。時間掛かるから、確かに 右クリックしてファイルを保存 の方が良いね。
ただ、sampleコードは他から探してこなければならないようだね。
たしか、>>585=>>587=>>600さんだったよね。
National Instruments社のPCI-6024Eを使って、VC++を用いた取り込みプログラムの作成で、
現状は
>歪みゲージをつかった力センサをまず作らされました。(昨日完成)
>それを、AD/DAボードと接続して歪みゲージを動かした時の電圧の変化を
>PCにdat形式で取り込むという実験です。
>力センサは作成済みですし、端子台や接続するケーブル、ボードは全て
>NIでそろえてあります。
という状態で、VC++どころかCも初体験で、sampleが欲しいってとこだったよね。
おそらく、MFCは使わないが、オブジェクト指向のプログラムにはなると思うんだけれど。
だから、使うのは WIN32 Console Applicationになるかな。
706デフォルトの名無しさん:03/10/11 17:44
へいオメーラ
組み込み用に、浮動小数点を除いたprintf、ほしくないですか?
>>706
ターゲットのCPUもLCDも書かずに組込用printfとは良い根性してるな。
708デフォルトの名無しさん:03/10/11 17:55
フォーマットからアスキー配列を生成するだけならターゲット関係ないわけだから、sprintfだね。
>>706
何に使うの?
秋月基板用?
>>706
持ってるから要らない。
711デフォルトの名無しさん:03/10/11 18:01
えーと、じゃあターゲットはH8あたりで。
sprintfっつーか、SCIとかに1文字ずつ出力?
出力ルーチン使い分ければ
printfでもfprintfでもsprintfでも

というか基本部分はvsprintfなんだろうけど
とにかく、ROMはいいからRAM節約しよーゼ
>>707
CPU ?

*printf() ぐらいだったら、アセンブラ使う必要も無いんじゃないのか。
よっぽど変な CPU を除けば、C とかでポータビリティある関数書けると思うけど。

出力ルーチンは、outchar() とかの名前の関数呼ぶようにしておいて、ユーザーに定義させればいいだけだと思うし。
>>712
(゜Д゜)
714歪みゲージ ◆8x780QSFss :03/10/11 19:10
>>705
あ、はい。全くその通りです。ありがとうございます。
とりあえず今日、VC++.net(アカデミック版)を購入してきました。
で、よく分からないまま、とりあえずWIN32コンソールアプリの空のプロジェクトを
作るところまでは何とかできたんですが…
.netややこしい…(俺が無知なだけなんですが)
君が無知なだけじゃなくてMSNがこすっからいのもありとおもう。
おまいら変数の型名は何派? とりあえず俺が見たことあるもの…
(1) char, short, long, unsigned char, unsigned short, unsigned long(ふつー)
(2) char, short, long, u_char, u_short, u_long(unsignedって長いよね)
(3) BYTE, WORD, DWORD, UBYTE, UWORD, UDWORD(たまに見る)
(4) SBYTE, SWORD, SDWORD, BYTE, WORD, DWORD(これもたまに見る)
(5) BYTE, SWORD, SDWORD, UBYTE, WORD, DWORD(けっこう多い?元ネタあったような気がする)
(6) S8, S16, S32, U8, U16, U32(極たまに見る)
(7) s8, s16, s32, u8, u16, u32(SHIFTキー押したくなかったのか?)
(8) B, H, W, UB, UH, UW(ITRON流)
DWORD は LONG と書く人も多い。ちなみに俺は(8)派。理由は色っぽいから。
>>716
俺は、「ファンタジーと呼ばれるものをする派」
俺は(2)で'_'無し:uchar,ushort
なんでここで聞いているのか分からないけど、俺は(1)。
こういうことにtypedefは使いたくない。
720デフォルトの名無しさん:03/10/12 04:45
>>718
オレはさらに、(2)に int32, uint32 及び in16, uint16 が追加される

だってしょうがないじゃん
書いててわかんなくなるんだもん
>>719
君はヨーロッパの車業界では爪弾きにされる
>>721
君は日本では村八分にされる。
漏れは、基本的に仕事先にあわせている。
>720に近い感じかな。

趣味で書くのなら(1)。変数の判別は頭にucとかiとか付けるって感じ。
cUnko
ucUnko
iUnko
uiUnko
lUnko
ulUnko
みたいな。
>>722
俺は日本の仕事してないから別にいい
>>724
俺はヨーロッパでは仕事をしていないから別にいい
>>724-725

仕事してない学生さんに決定。今、オレがそう思ったから、そう決定。
PCのときは(1)
ワンチップのときは(8)or(1)
728デフォルトの名無しさん:03/10/12 11:14
制御系っていうと、厳しいカツカツの資源を利用してプログラム
しなきゃいけないというイメージがあるが、富豪プログラミング的
な贅沢なリソースを使うことを許されたことってあるかい?
入出力信号のパルス幅とか、セットアップ、ホールド時間とかかぁ。
デバイスとドライバによって大きく影響するだろうな。
>>728
そりゃまあ、PCを制御で使うと自動的に富豪プログラミングになるわな
731728:03/10/12 11:44
組み込みスレと勘違いしてもた。
すまそ。
やっぱり
>>728
最近の LBP とかは、64MB メモリとか CPU に PowerPC750CX-400MHz とか使ってたりするから、かなり富豪的なプログラミングができるんじゃないか ?

(LP-9500C のカタログ Web で見たんだけど、最大搭載メモリ 1,024MB、オプション HDD 18.4GB って俺のメインマシンを超えてんじゃん...。鬱だ...。)
でも、ここのスレタイには、コンピュータ制御とは、書いていないから、
別に、ワンチップマイコンのPICなどや、ROMのアセンブラ、Cのプログラムも含んでよいような気がするけれど。。。
>>1はどう考えているのだろ。
>>733
レーザープリンタ?
736733:03/10/12 12:36
>>734 このスレは3番目だけど、1−2番目くらいまでは くみこの組み込み相談室 というのが別にあったんだよ。

NECの古いポストスクリプトプリンタのOSがUNIXだという噂を聞いたが本当だろうか?
プリンタコントロールのサンプルソースだね。↓
http://more.sbc.co.jp/download/samplesoft/print.asp
LHAなんかで圧縮するなよ。。。
>>731
この板で制御系といったら組込みの話かと思って気軽に参加していた俺って・・・?

# やっぱ馬鹿?
>>728
今の仕事は、なぜか潤沢に外部メモリだけは乗ってる(w
おかげで4CPU構成で、余分なCPU間通信をせにゃあかん・・・。
マイコンにそれぞれ外部RAMを1Mも与えて、一個あたりモータ3・4個の面倒しか
見ていないのは、何か根本的に間違っているような気がする昨今。
ラクチンでいいんだけど・・・。
>>738
そういう機種はあったと思った。

>>733
例えば業務用のFAXなんかも10年位前の機種でもGBオーダーのHDD積んでたよ。
それはHP-UX使ってたと思った。
>>741
いや、このスレは統一スレだから。
もし別けてると、すぐにデータ落ちしちゃうと思うしな
>>637
2台ともGPアドレスが同じとかー
>>742
でもさ、やっぱH8とかワンチッポウで済ますと考えると
メモリってやっぱ少ないよ
いや、昔に比べたら全然多いんだけど
富豪的プログラミングするには足りん
M16Cなら俺には富豪的に感じられたな
RAM32K FROM256K 文字フォントも入れ放題、プログラムもRAM上に入れて実行可能
>>747
となると、システムLSI(HDL設計)かカスタムLSI使って、メモリとROMとこれらを調停するバスアービタ(HDL設計)乗せたボードが要るようになるのかな。
バス要求かけるハードなど目がくらむくらい富豪だな>>749
H8をBREQプルアップでしか使ってない
ほうほう、H8をカスタム的に使って、RAM、ROMを積むという感じかな。
そのタイプの組み込み機器はHが工場自動制御ラインのコントローラとして使ってましたよ。
これとPCでインターフェイスとって制御端末にするというやり方で。
某有名計装制御機器会社のYなりTなりの様にPen積んだりすると石油王なみの大富豪かな。
でもさ、MSXのころとかの時代って
64KBで豪邸のような印象をもっていたわけだし
それから考えたらH8なんて東京ドームだよね
753637:03/10/13 04:24
R6551についての質問です。
インターフェースを作り、GPIB で接続しています。
1台だけの時はちゃんとマルチメータを認識して計測してくれる
VBのプログラムは出来ています。
2台接続して(GPIBで2台接続)計測しようとすると
エラーが出て1台も認識してくれません。
ここで皆さんに聞きたいのはDLLをモジュールに入れて作る時
R6551のマルチメータ2台分を認識させるDLLが必要なのでしょうか?
1台だけなら完璧なのですがどうしても2台繋げただけでどれも認識
してくれず困っているところです。色々試しましたがまずR65512台を
認識してくれないと追加のプログラムも入力出来ずが現状です。
ADμC831 っつー割と新しい8bitやってます。コアは8051だが、17MHz、FROM4KB、
プログラム用FROM62KB、RAM256B+2KB、A/D8CH D/A2CH PWM2CH これ全部
オンチップ(´∀`) これらI/Oを皆使ってるアプリもすごい。
17MHzとはいうが命令は12clkか24clkなので、だいたい5Mで動かす78C11ぐらいの
性能は出せそうです。
>>753
>>745 は確認したのか ?
そもそもどこのどんな dll 使ってるかわからんのに答えられるわきゃ無いと思わないの ?

(やっぱり、前々スレのテンプレート...

> この世界は処理系依存はあたりまえだから、処理系明記するのを忘れるなよ!

は必要なんだろうか...。)

>>754
日記や開発メモは、ご自分の日記帳か大学ノートに書いてください。
>>753
>>745がらみで、GP-IBカードにロータリースイッチは着いていないの?
>>754
おお、なるほど。ちょっと興味湧いてきた
調べてみるか。サンクス
758デフォルトの名無しさん:03/10/13 20:50
>>757
ワンチップなら、バス制御用のIC、システムLSIをHDLでPLD、ASIC、FPGA使って作らずに済むし、
富豪チップならペリフェラルのRAM、ROMも要らないし、HARDがムチャ楽だね。
外部電源と、三端子REG、クロック用にセラロックとコンデンサ、パスコン、PINの出力ではボード外インターフェイスの出力電力取れないだろうからIF-IC、外部リセット回路にR、C、Di、
これだけあれば、ユニバーサル基盤に乗っけてできるね。
あっ、あと肝心のマイコン用のライターかエミュレータ。これないとアセンブラ焼込めん。
ADμC831てAnalog Devicesのマイコン?
検索したけど分からなかった...
評価ボードか何かあるのかな...
あれば足りないIF採るためのICを外付けボードで付け加えてできるんだけど。
本格的にやりたいなら、付加IC分を付け加えた基板パターンを基板用CADで作ってノイズシミュレーションして、基板屋さんに作ってもらえばよいんだけれど...
これかな ?

http://www.analog.com/Analog_Root/productPage/productHome/0%2C2121%2CADUC831%2C00.html

分類は、Converter になってるから、MCU 付の AD/DA コンバータと言うことらしい。
がーん、8051は最早AD/DAコンバータのおまけになってしまったのね。
そのうち、DRAM 付属のCPUとか も出るかもね
763759:03/10/14 00:37
>>760
有難うございます。
一応リファレンスを↓微妙に重いです。
ttp://www.analog.com/UploadedFiles/Technical_Documentation/340059445831qref0.pdf
A/D、D/A内臓ですか。モータドライバICつければD/A出力でボードで直接モータコントロールできますね。
後、センサーの方はPINダイレクト接続できるかも知れませんが、チップ保護上、バッファIC仕掛けた方が良さそうですね。

>>761さんのようにフルカスタム指向の人にはちょっと残念かも知れないですが。
ただ、P0.0〜P0.7、P2.0〜p2.7というバスラインは残ってますね。
タイミングチャートは載っていませんが、8051らしく、パイプラインの基となった、アドレスラインとデータラインの共有は引き継いでいるようですね。
(P0.0〜P0.7がAD0.0〜0.7となっているので)

764デフォルトの名無しさん:03/10/15 00:30
>>762
DRAM内臓のCPUが、過去にはあったけどね。 メーカーは三菱だから、今はルネサスか、
調べてないけど、もう残っていないだろうな。人気もなかったみたいだから。
ルネサスと言えばSH3とROMとDRAMを一個のパッケージに入れたものもあったな。
まだ作ってるんかな?
766デフォルトの名無しさん:03/10/15 11:34
RS232-C通信の仕様を調べてるのですが
フローコントロールでRTS/CTS、DTR/DSRの違いがわかりません
前者は、受信バッファの状態を監視するようですが
後者は、どのようなときに使用するのでしょうか?

767デフォルトの名無しさん:03/10/15 12:36
>>766
それは使う機器によって変わってくる。
タイミングチャートがあるはず。
ただし、モデムの場合には手順が決まっている。
@PCはデータを送信することをDTRからモデムのDSRに知らせる。
Aモデムは準備ができていることをDTRからPCのDSRに知らせる。
BPCはデータを送信することをRTSからモデムのCTSに知らせる。
Cモデムは送信を許可することをRTSからPCのCTSに知らせる。
DCDは、キャリア側(モデムーモデム間)でキャリア信号をモデムが受信するとモデムのCDからPCのCDに受信準備を知らせる。
EPCがデータ送信
モデム間通信しない場合は
http://activecell.cool.ne.jp/easycomm/funac12ma.PDF
のように自分自身の入出力にCDをつなげてCDを殺していることが多い。

切断手順は調べてみないと自分には分からない。
768766:03/10/15 12:37
フローコントロールでXON/XOFFがまたもや不明です

1 ピンがない
2 XonCharはプロトコルで送信しているのか
3 XonLimによるバッファ制御とRTC/CTSと並行して使用するのか

フローコントロールは相手とすべての状態でマッチしてはじめて
意味があるとみなしていいでしょうか?

今のところフローコントロールは使用しませんが後学のためと思いまして・・
769↑訂正:03/10/15 12:42
Dの送信側モデムからのキャリア信号の送出はBとCの間に入れてください。
>>767
無茶苦茶なこと書くな!!
>>768
1.無くて当然
2.Yes
3.普通はXON/XOFFとRTS/CTSを並行しては使いません。
771766:03/10/15 12:57
>>767
モデムの場合はその手順ということですね

>>770
>2.Yes
XON/XOFFを使用した場合制御がややこしそうですね
データ送信中にXonCharが紛れ込むことがあるのではないかと想像します・・

>3.普通はXON/XOFFとRTS/CTSを並行しては使いません。
では、RST/CTS DTR/DSR XON/XOFF のいづれか1組を使い分けるということですね

シェイシェイ
>>767
モデムのDSRとか、モデムのDTRってなんだ?
言いたいことが分からないでもないが、そういう言い方は混乱を招くだけだよ。

773デフォルトの名無しさん:03/10/15 14:47
精密位置決めの制御プログラムでどのようなプログラムソフトを使用するのが良いでしょうか?
お勧めのものがあれば教えていただきたいです。
>>771
DTR/DSRをフロー制御に使うのはどうかと。
>>773
Tron
DTR落としたら、モデムだったら回線切っちゃうよな。
777歪みゲージ ◆8x780QSFss :03/10/15 18:37
>>600-700で質問していた者です。
今日、何とかCDからサンプルプログラムを入手しました。
ですが、全く意味が分かりません。
アナログ入力を読み取るという事でAIというフォルダーの中に入っている
物と、ヘッダーファイルはすべて持ってきました。
この先はどうすればいいんですかね?
ためしにコンパイルしたんですが、エラーが出ます。
778歪みゲージ ◆8x780QSFss :03/10/15 18:38
あ、777ゲトw
779歪みゲージ ◆8x780QSFss :03/10/15 18:39
サンプルプログラム
#include "nidaqex.h"
void main(void)
{/*
* Local Variable Declarations: */
i16 iStatus = 0;
i16 iRetVal = 0;
i16 iDevice = 1;
i16 iNumMuxBrds = 1;
i16 iChan = 1;
i16 iGain = 1;
f64 dVoltage = 0.0;
i16 iIgnoreWarning = 0;
/* This configures the DAQ device for use with one AMUX-64T. */
iStatus = AI_Mux_Config(iDevice, iNumMuxBrds);
iRetVal = NIDAQErrorHandler(iStatus, "AI_MUX_Config",
iIgnoreWarning);
/* NOTE: If you have a device with more than 16 AI channels, make
sure you call the MIO_Config function and set the 'useAMUX' paramter
to 1 at this point. */
/* The 'iChan' here refers to the channels on the AMUX-64T. */
iStatus = AI_VRead(iDevice, iChan, iGain, &dVoltage);
iRetVal = NIDAQErrorHandler(iStatus, "AI_VRead", iIgnoreWarning);
/* CLEANUP - Don't check for errors on purpose. */
/* NOTE: If you have a device with more than 16 AI channels, make
sure you call the MIO_Config function and reset the 'useAMUX'
paramter to 0 at this point. */
/* Reset number of AMUX boards. */
iStatus = AI_Mux_Config(iDevice, 0);
printf(" The voltage at AMUX AI channel %d is %lf volts.\n", iChan, dVoltage);
/* End of program */
780デフォルトの名無しさん:03/10/15 18:40
>>777歪みゲージ ◆8x780QSFss
そのサンプルプログラムをアップローダか何かで晒さ汁!
781780:03/10/15 18:42
>>779
スマソ!、亀った!
782歪みゲージ ◆8x780QSFss :03/10/15 18:44
間違えた。こっち。
#include "nidaqex.h"
void main(void)
i16 iStatus = 0;
i16 iRetVal = 0;
i16 iDevice = 1;
i16 iChan = 1;
i16 iGain = 1;
f64 dVoltage = 0.0;
i16 iReadingAvail = 0;
i16 iReading = 0;
f64 dGainAdjust = 1.0;
f64 dOffset = 0.0;
i16 iIgnoreWarning = 0;
i16 iYieldON = 1;
/* This clears the AI FIFO. */
iStatus = AI_Clear(iDevice);
iRetVal = NIDAQErrorHandler(iStatus, "AI_Clear", iIgnoreWarning);
iStatus = Select_Signal(iDevice, ND_IN_CONVERT, ND_PFI_2,ND_HIGH_TO_LOW);
iRetVal = NIDAQErrorHandler(iStatus, "Select_Signal",iIgnoreWarning);
/* Setup for external conversions. */
iStatus = AI_Setup(iDevice, iChan, iGain);
iRetVal = NIDAQErrorHandler(iStatus, "AI_Setup", iIgnoreWarning);
printf(" Apply a pulse to the 'external conversion' pin when ready to read a voltage.\n");
↓続く
783歪みゲージ ◆8x780QSFss :03/10/15 18:45
続き
while ((iReadingAvail != 1) && (iStatus == 0)) {
/* Wait until reading is available. */
iStatus = AI_Check(iDevice, &iReadingAvail, &iReading);
iRetVal = NIDAQYield(iYieldON);
}
iRetVal = NIDAQErrorHandler(iStatus, "AI_Check", iIgnoreWarning);
iStatus = AI_VScale(iDevice, iChan, iGain, dGainAdjust, dOffset,iReading, &dVoltage);
iRetVal = NIDAQErrorHandler(iStatus, "AI_VScale", iIgnoreWarning);
/* Set PFI line back to initial state. */
iStatus = Select_Signal(iDevice, ND_IN_CONVERT, ND_INTERNAL_TIMER,ND_LOW_TO_HIGH);
printf(" The voltage at AI channel %d is %lf volts.\n", iChan, dVoltage);
}
/* End of program */
>>777
どういうエラーが出るの?
>>777歪みゲージ ◆8x780QSFss
>ためしにコンパイルしたんですが、エラーが出ます。

で、どんなエラーがでるのかな?
786歪みゲージ ◆8x780QSFss :03/10/15 18:57
おお!こんなに人が。皆様ありがとうございます。
error LNK2019: 未解決の外部シンボル _AI_VScale@36が関数_mainで参照されました
error LNK2019: 未解決の外部シンボル _NADAQYiekd@4が関数_mainで参照されました
error LNK2019: 未解決の外部シンボル _AI_Check@12が関数_mainで参照されました
error LNK2019: 未解決の外部シンボル _AI_Setup@12が関数_mainで参照されました
error LNK2019: 未解決の外部シンボル _Select_Signal@16が関数_mainで参照されました
error LNK2019: 未解決の外部シンボル _NIDAQErrorHandler@12が関数_mainで参照されました
error LNK2019: 未解決の外部シンボル _AI_Clear@4が関数_mainで参照されました
fatal error LNK1120:外部参照7が未解決です
以上です。意味が分からないんですが・・・?
787歪みゲージ ◆8x780QSFss :03/10/15 19:05
やっぱりヘッダーファイルとかも必要ですかね?
全部zip(pass付き)でどっかにアップしたほうがいいですか?
>>786
ライブラリをリンクしてないでしょ。

>error LNK2019: 未解決の外部シンボル _AI_VScale@36が関数_mainで参照されました
「AI_VScale()と言う関数をリンクしようとしたんだけど、どこにあるか分からない」って言ってるの。

サンプルと一緒に、ライブラリファイル(普通、拡張子が lib )が配布されているはず。
それをリンクしなければ、解決しないよ。

790歪みゲージ ◆8x780QSFss :03/10/15 19:34
え?ライブラリですか・・・?
それはどうやってリンクするんですか?
791歪みゲージ ◆8x780QSFss :03/10/15 19:38
あ、わかりました。すいません。リソースファイルっすね。
で、ビルドは成功したんですけど、開始すると下のエラーが出ました。
'test.exe': 'C:\Documents and Settings\Administrator\My Documents\Visual Studio Projects\test\Debug\test.exe' を読み込みました。シンボルが読み込まれました。
'test.exe': 'C:\WINDOWS\system32\ntdll.dll' を読み込みました。シンボルが読み込まれていません。
'test.exe': 'C:\WINDOWS\system32\kernel32.dll' を読み込みました。シンボルが読み込まれていません。
'test.exe': 'C:\WINDOWS\system32\nidaq32.dll' を読み込みました。シンボルが読み込まれていません。
'test.exe': 'C:\WINDOWS\system32\msvcrt.dll' を読み込みました。シンボルが読み込まれていません。
'test.exe': 'C:\WINDOWS\system32\user32.dll' を読み込みました。シンボルが読み込まれていません。
'test.exe': 'C:\WINDOWS\system32\gdi32.dll' を読み込みました。シンボルが読み込まれていません。
'test.exe': 'C:\WINDOWS\system32\advapi32.dll' を読み込みました。シンボルが読み込まれていません。
'test.exe': 'C:\WINDOWS\system32\rpcrt4.dll' を読み込みました。シンボルが読み込まれていません。
792歪みゲージ ◆8x780QSFss :03/10/15 19:39
'test.exe': 'C:\WINDOWS\system32\wsock32.dll' を読み込みました。シンボルが読み込まれていません。
'test.exe': 'C:\WINDOWS\system32\ws2_32.dll' を読み込みました。シンボルが読み込まれていません。
'test.exe': 'C:\WINDOWS\system32\ws2help.dll' を読み込みました。シンボルが読み込まれていません。
'test.exe': 'C:\WINDOWS\system32\nipalu.dll' を読み込みました。シンボルが読み込まれていません。
'test.exe': 'C:\WINDOWS\system32\nipalut.dll' を読み込みました。シンボルが読み込まれていません。
'test.exe': 'C:\WINDOWS\system32\niSTCu.dll' を読み込みました。シンボルが読み込まれていません。
'test.exe': 'C:\WINDOWS\system32\nibffru.dll' を読み込みました。シンボルが読み込まれていません。
'test.exe': 'C:\WINDOWS\system32\nimdsu.dll' を読み込みました。シンボルが読み込まれていません。
'test.exe': 'C:\WINDOWS\system32\NIScale.dll' を読み込みました。シンボルが読み込まれていません。
'test.exe': 'C:\WINDOWS\system32\nirpc.dll' を読み込みました。シンボルが読み込まれていません。
'test.exe': 'C:\WINDOWS\system32\nicfq32.dll' を読み込みました。シンボルが読み込まれていません。
'test.exe': 'C:\WINDOWS\system32\nipsm.dll' を読み込みました。シンボルが読み込まれていません。
'test.exe': 'C:\WINDOWS\system32\ole32.dll' を読み込みました。シンボルが読み込まれていません。
デバッガ :: ハンドルされていない続行不可の STATUS_DLL_NOT_FOUND 例外がプロセスの読み込み中にスローされました
プログラム '[896] test.exe: ネイティブ' はコード 128 (0x80) で終了しました。
>>791
DLLが見つからない。

libと同じ名前のdllファイルが、配布されているはず。
それを、パスの通ったフォルダにコピーしときな。
(分からなかったら、実行ファイルのあるフォルダにコピー)

それ、ちゃんとインストールしてるか?
794歪みゲージ ◆8x780QSFss :03/10/15 20:02
えっ・・・と?
ちゃんとインストールってどういう意味ですか?

それに、同じ名前のdll無いです…

ちなみに、いまボードつけてないパソコンでテストしてますが、関係ありますか?
CDにinstallとかsetupとかの実行ファイルは無い?
796歪みゲージ ◆8x780QSFss :03/10/15 20:07
ありますよ。
ただ、CDではなくCDからコピーしたフォルダーの中にあるやつですけど

…馬鹿ですいません。
>>772
つーか、単なるアフォだろ → >>767
モデムと PC はクロスケーブルでつなぐとでも思ってるんだろ。(藁
>>796
ただの教えて君になってるぞ。
自己解決の努力のカケラも見えてこない。
それでもダメなら聞いてみな。
>>782
>#include "nidaqex.h"
動かないのは、このヘッダが何か良からぬことを企んでいるからなのか?
>>794
そのCDの中にセットアップに関する説明が書いてあるファイルはないのかな?


コンパイルしている時点ではボード無くても大丈夫でしょ。
実行させる時にないと、エラーを出してはじかれるか、
システムが落ちるかは、あなたの作り方次第。
昔のMacはDSR/DTRでフロー制御するんじゃなかったっけか?
たぶん、その関係だと思うが・・・
MacはRS232CじゃなくてRS422だったような気がするが。
>>771
一応補足。
Xon/Xoffを使用した場合、バイナリデータの送受信は通常できない。
そこで、バイナリデータの場合はXmodemなどのプロトコルを併用することになる。
因みに、Xon/Xoffは別な表現をすればCtrlS/CtrlQ。
telnet端末などでCtrlSを送出するとエコーされなくなるのはXon/Xoff制御が掛かるため。
804771:03/10/16 13:29
>>774
DTR/DSRの意味は調べきれてません
(勝手にフローコントロールだと思い込みです)

>>803
RST/CTSは、
 1 いわゆるフローコントロールとみなしていいようですね。
 2 制御は作りこまず、使用することを宣言するだけ
XON/XOFFは、
 1 バイナリデータの送受信に通常使いにくい
 2 プロトコルはXmodemライクにするといい
 3 使い道は会話処理だろうか・・・・

謝謝
805デフォルトの名無しさん:03/10/16 13:45
806歪みゲージ ◆8x780QSFss :03/10/16 15:47
またまた、失礼します。
なんとかビルドに成功して、エラーも出なくなりました。
でも、このプログラムって一点の情報しか取り込めないんですよね?

ファンクションジェネレータで正弦波を発生させて、それをボードで取り込んで
ファイルに書き出すようなプログラムにするにはどういう命令を足す必要がありますか?
>>806
せめてそこから先ぐらいは自分でやれ。

制御系とか関係ないし。C言語の初歩的な話だし。
>>806
完成品ソースを晒汁!
&実行結果がどうなったかも。
お、完成品ソースは>>782-783で良いのだな。
なら、実行結果と
>>782
/* This clears the AI FIFO. */
iStatus = AI_Clear(iDevice);
iRetVal = NIDAQErrorHandler(iStatus, "AI_Clear", iIgnoreWarning);
iStatus = Select_Signal(iDevice, ND_IN_CONVERT, ND_PFI_2,ND_HIGH_TO_LOW);
iRetVal = NIDAQErrorHandler(iStatus, "Select_Signal",iIgnoreWarning);
/* Setup for external conversions. */
iStatus = AI_Setup(iDevice, iChan, iGain);
>>783
iStatus = AI_Check(iDevice, &iReadingAvail, &iReading);
iRetVal = NIDAQYield(iYieldON);
}
iRetVal = NIDAQErrorHandler(iStatus, "AI_Check", iIgnoreWarning);
iStatus = AI_VScale(iDevice, iChan, iGain, dGainAdjust, dOffset,iReading, &dVoltage);
iRetVal = NIDAQErrorHandler(iStatus, "AI_VScale", iIgnoreWarning);
/* Set PFI line back to initial state. */
iStatus = Select_Signal(iDevice, ND_IN_CONVERT, ND_INTERNAL_TIMER,ND_LOW_TO_HIGH);
の意味は何?
printfで出してリダイレクト汁
>>806 歪みゲージ
そっから先が結構大変だよ。
1、まず、ファンクションジェネレータは外部にあるの?
2、それとも購入したボードをファンクションジェネレータとして使うの?
3、インターフェース社のドライバのようにデータを用意したら自動的に連続出力・連続サンプルするコマンドはあるの?
   これがないと自前で処理するのは今の技量だと難しいかもね。
812たすけて:03/10/16 20:26
ノートパソコンとPIC間においてのIR通信に関してわからないことがあるんですが、
Cプログラム上でkbhit関数を使い、ノートパソコンのハイパーターミナル
上からPICにキーボード操作での命令を実行し通信しようとしてるのですが、
どうもうまくいきません。何かよい方法ありませんか。
>>812
何が言いたいのかさっぱりわからん
814デフォルトの名無しさん:03/10/16 21:11
汎用機系の質問なんですが、
1トランザクション当りの処理分割値(スライス値)を1000レコードから
100レコードに小さくしたにも関わらず、
DBへの物理I/O数やバッファサーチ数(バッファに目的のレコードが存在したレコード数)が
大幅に増加しています。

処理分割値を小さくすれば1トランザクション当りのSQL命令の発行数が
減少すると考えられるので、物理I/O数やバッファサーチ数は少なくなると
思うのですが・・・

原因が分かる方がいらっしゃいましたら教えていただけると助かります。
815デフォルトの名無しさん:03/10/16 21:20
>>812です。
すいません
説明不足でした。
簡単にいうとPCのハイパーターミナルを用いて
PCからCOMポートをたどり、PICと文字のやり取りを
したいんです。
>>815
COMポートの各信号のタイミング条件とか手順とか満たしてるのかなぁ。
特にPICのPIN出力条件なんかで。。。
IR通信が自分が知らないとこなんだけれど、I2Cみたいなものなのかな?
COM使って赤外線なんてことないだろうし。
817デフォルトの名無しさん:03/10/16 21:54
>>812です。
PICのPIN出力条件などは、問題なく条件は満たしています。
ただkbhit関数のことが全くわからなかったので、
質問したんです。
>>817
kbhit関数ってPC側のDOSプログラムとしてだよね?
conio.hにヘッダ書いてあるやつのこと?

これってキーコードを返してくれるヤツじゃないよん。
getch()とかBIOSコールしなきゃ
819宿題スレの594:03/10/16 22:27
>>818
PIC用のCコンパイラの中にはライブラリに
kbhit()というRS232C I/O関数があるようです。
820デフォルトの名無しさん:03/10/16 22:34
>>818さん
ありがとうございます。今からバイトなので
また解らないことがあったら明日カキコしますので
よろしくお願いします
IrDA の受信ICに何使ってるの?
ピンダイオード直結だと RZIだからソフトで復調が必要だよ。
物理層については RZI以外の変調方法もある(まあPICで受信するならRZIと思うけど)
http://www.irda.org/standards/specifications.asp
ここからIrData.zip を落として IrPHY 1.4 .pdf を見るといい。 直接は
ttp://www.irda.org/standards/pubs/IrData.zip
RZIをソフトで処理するとしたら、割り込み端子に信号を入れて
1、タイマー割り込みをボーレートの2倍でかけて タイマー割り込み中に割り込みフラグを見ては落とす
2、INT端子割込中に命令サイクルで時間を作って 最初1.5T 次からT毎に割り込みフラグを見て落とす

1は9600bps程度まで、 2はそれより高速に受信したい時に
なんだか初歩的というか自分ワールドの質問で恐縮なのですが、

 「仕事でPICを使っている人って、いらっしゃるのですか?」


自分の身の回りででは、小さくてもH8で、ちょっと大きくなるとSHシリーズなのです。
仕事の性質上、PICとの親和性は低いのですが・・・。
>>825
PICじゃないけどSX28なら使ったことがある。
これ http://www.ubicom.com/products/sx/sx.html

ちょっとお利口なパラレル→シリアル変換器を作った。
>>825
いらっしゃる

(´・ω・`)H8高いよ
うちは今まで PIC使うような場面ではTMP47使ってたんだけど
あまりの小ロット・短納期化に、フラッシュのPICに乗り換えようか検討中。

汎用基板的に作っておいてROM書き換えで対応出来るから
829デフォルトの名無しさん:03/10/18 21:45
趣味で昔よく見かけた「ボタンを押すと銃撃音やサイレン音が鳴る玩具」を
作りたいのですが、どこか参考になるサイトなぞありませんでしょうか。
音声を作る部分がいまいちよくわからんのです。
ボタンを押すと音が出るICのジャンクを探すのが簡単だと思うけどね。

このスレでとなると、
 小さく作るとなるとPICで出来る範囲で頑張るしかないけど
 PICのROMサイズでは録音手法は使えないから、合成で出来る範囲で頑張るしかないだろうな
831829:03/10/18 21:58
>>830
PICで音声波形を作る場合、具体的にどの機能を使うのが筋なんでしょうか?
PWMとかCCPとかですか?それだけでも教えて頂ければなんとかがんばれそうです。
832デフォルトの名無しさん:03/10/18 22:15
>>829
そういう椰子なら、秋葉の秋月とか千石に売ってる。
PICがついてない椰子なら音声発信部分だけ流用して、
PICに繋げてみては?
833829:03/10/18 22:26
>>832
レスありがとうです。

ただ、後学のためにもあえてPICや類似の小型MPUで
音声再生を試みようと考えています。

無謀でしょうか?
音声波形を作るには
1、ポートをOn/Offして PWM/DDS/ΔΣ
△ただし、ROMサイズ上の問題からどうやって合成するかという大きな問題があるね。

2、ハードウエアCCPでPWM 
3、ポートを4本くらい使って抵抗を使ってDACを作る(DDA手法で4bit以上に拡張する)
4、外付けDACを使う
△結局、これも、信号をどうやって合成するかという問題は残ってしまう。
 簡単なのは、外付けにPROMを付ける事かな
AT24C1024 みたいに8binで128Kbyte程度あれば、音も入るね。
 パソコンでwavファイルを作っておいて、パソコンのプリンタからEE-PROMにデータ書いて って感じで頑張れ

5、外付けサウンドジェネレータを使う
△手に入るならこれが一番簡単で音も綺麗だと思うよ
>>834
御指導ありがとうございます。勉強になりますです。
色々と試行錯誤してみます。
836デフォルトの名無しさん:03/10/20 01:14
制御系システム(特にファームウェア)開発の方が目指されている資格ってどんな感じのですか?
学生なのでぜんぜん詳しくないのですが、どなたか教えて下さい。

そんなもの無い
838デフォルトの名無しさん:03/10/20 01:21
何か関連性が高いのってないんですか?
>>838
アマチュア無線免許
>>838
代表的な物と言えばテクニカルエンジニアのembeded
実際会社で役に立つかは知らないが。

http://bookstore.tac-school.co.jp/shikaku100/sikaku/0711.html
841デフォルトの名無しさん:03/10/20 12:29
ET2003ってコンパニオンたん居る?
>841 そりゃいるだろ

OS-9ガールズは期待できないが…
843デフォルトの名無しさん:03/10/20 22:06
H8S&HEWでアプリを作ります。

BOOT処理部、実行部という風にアプリを分け、実行部のみファームウェアをアッ
プデートできるように作成したいです。

BOOT部と実行部を完全に分割された状態にしたいと考えています。
BOOT部から実行部に処理を移す場合、絶対アドレスでジャンプすれば実行部に処
理は移ると思いますが、実行部用のグローバル変数などの展開や初期化はそれだ
けでは行われないと思うのですが、どうすれば良いのでしょうか。

_INITSCT()関数を呼んでもダメでしょうか。
>>843
HEWは使ったことないが、

実行部側で、グローバル変数などの展開や初期化をすればよいだけでは。
そうだな。 今まで主に使ってきた環境は、だいたいCOFFの展開処理は自前でやってたぞ。

今も、妙な会社のDSPの .outファイルを分析して自前でローダ作ったところだ。
>>843
それでいいと思うけど。
割り込みの扱いが面倒臭いことにならない?
847841:03/10/20 22:53
(´-`).。oO(展示会見学の申請出した。。。)
848デフォルトの名無しさん:03/10/21 05:19
>>843 0番地からのセクタにブート部を置かないようにすれば>>846みたいな悩みも解消。
「ベクタ部は実行部の一部である」と決めれば、ブート部と実行部との接点は、
「実行開始番地」だけになるよ。
ブート部はリセットベクタ以外の割込は一切使わないで書かなくてはいけない。
ブート部も実行部と一緒にリンクして上書きする方法と、ブート部自信のアドレス空間は
実行部をロードするときにはガードして書かせない方法とどちらかを選べる。
>>847
激写 & うp頼むな

ところで誰かこれ読んだ奴いるか?

C言語でH8マイコンを使いこなす
http://www.amazon.co.jp/exec/obidos/ASIN/4274079643/250-1341527-4095461

HEWについての実例が多いらしい。
おいらの開発環境HEWだからちょっと気になる。
H8/SってSHシリーズとは違うよね。俺はH8/300 H/500 H8/3000シリーズは使ったけど
H8/Sってどのシリーズのことをいうの?
>>850
H8/300→H8/300H→H8S→H8SXですな。
んで3000シリーズってなに?
852デフォルトの名無しさん:03/10/21 20:00
質問です。

H8/300Hについてですが
SCIデータ受信処理は割り込みで行いますよね?
この時受け取ったデータをバッファに貯めているのですが
このバッファからデータを読み出す時の処理はどのような方法があるのでしょうか?

受信バッファをリングバッファにして書き込みポインタと
読込ポインタを記憶しておいて書き込み、読込するたびにそれぞれのポインタを
インクリメント。最大値に達したらポインタ0クリア。
書き込みポインタと読込ポインタが一致する場合はデータなし

このアプローチであってます?
これ以外の方法ってあるのでしょうか?
>>852
リングバッファすか。それでいいんでないの。
漏れはそれ以外使った経験がない。
アドレスを適当に配置しておくと、ポインタに&マスク掛けるだけで済む。
こういう実装は昔よくやったもんだ。
>>854
「適当」って書くと、いいかげんに配置してもいいように思えるので、「適切」って書くほうが適切かと...。
856デフォルトの名無しさん:03/10/21 23:10
ブート部・実行部の質問をした者です。ありがとうございます。

割込はブート部・実行部の両方で使用する必要があります。

・ブート部は普通にゼロ番地から作る。
・内蔵RAMの先頭に関数ポインタを void ( *Vect )( void );とい
う形で作成。(ブート部・アプリ部で同じアドレスを使用)
・この関数ポインタを割り込みベクタで呼び出すようにブート部で
設定
・ブート部・実行部それぞれの先頭付近で関数ポインタに割り込み
処理用の関数ポインタを設定
・アプリ部は0x10000番地を先頭アドレスとする
・ブート部で0x10000番地にジャンプすることにより、実行部に遷


という感じで大丈夫でしょうか。

>>844
実行部で使用する変数の展開というのはどういう事をすればいいで
しょうか。

初期化済み変数はROM(F-ROM)からRAMに展開される...というのは
プロジェクトリンク時に行われるから意識しないでいいのでしょう
か。
const定数は元々ROMに展開されていると言うことで合ってるでしょ
うか。
いい加減に配置できてるならいいじゃないか。
858デフォルトの名無しさん:03/10/22 00:54
>>839-840
亀レスですが、ありがとうございました。
>>856
君はまずこの本を読め

C/C++による組み込みシステムプログラミング
発行所=オライリ−・ジャパン
ISBN=4873110130
>>859
えー
その本オライリー史上最悪じゃん
すれ違いだったらスマソ
自分の部屋の温度(と湿度)をリアルタイムで計って、
それを1年ぶっ通しでパソコンに取り込む、というのを自作でやりたいと思っています。
本屋で立ち読みしてPICってのを使えば出来そうな感じなのですが、
お勧めの本かサイトがあったら教えていただけませんか?
>>861
温湿度を取り込むことが目的ならば、温湿度ロガーで計測して、
RS-232CとかUSBでコンピュータに取り込むのが、簡単。

自作が目的なら……がんがれ。
863デフォルトの名無しさん:03/10/22 11:43
>>861
これを買ってみるのはどうかな?
http://akizukidenshi.com/catalog/items2.php?c=kit&s=popularity&p=1&r=1&page=#K-00108

そのままきみの要求にこたえるし。
PIC使ってるのでその勉強にもなる
安いし
>>861 今売ってるインタフェースにセンサー付けてシリアルで
温度計測する記事が載ってる.25日に次号出るから急げ.
ttp://www.cqpub.co.jp/interface/default.asp

湿度は水温から出せるんじゃなかったっけ?
おんどとり使えばいいじゃん。
自作なんてマンドクセ
866861:03/10/22 21:04
>>862>>865
温湿度ロガーを使えば簡単に取れるんですね。
ただA/D変換とかPICとかって面白そうなので一度やってみたいのです。

>>863さん、
やっぱりあの秋月電子なのですか〜。
たくさんあって目移りしますがもう少し勉強して秋葉行ってみようと思います。

>>864
明日本屋で探してみます。

みなさん、ありがとうございました。
>>866
秋月をなめちゃいけない。
あそこのH8ボードは、密かにいろんなところの組み込み基盤として、
大活躍している。
H8以外の80系とか60系などのカスタムLSIでもいろんなとこから評価ボード出てて、それを元(チップレイアウト、基板パターン)に色々拡張機能を持たせるためにチップやパターンを継ぎ足してゆく。
評価ボードって言うのは、信号がスムースに流れるようにチップレイアウト、基板パターンがしかれている。
だから、評価ボードはハードの有力な目安になる。それは秋キットでも同じ。
秋月のマイコンボードっていろんな会社から卸してるでしょ。
どこぞの有限会社のマイコンボードが秋月のキットとまったく同じだったりする。
870デフォルトの名無しさん:03/10/22 23:51
>>866
目移りも何も・・・そのものずばりだろう
あ、そのままクリックだとだめだ。
コピペしる
871デフォルトの名無しさん:03/10/23 09:52
秋月とかから出てる評価ボードを
そのまんま載せたりして、出したりしてる人いる?
ロット100以下ならあるんじゃないの? 
>>871
ごめん。30枚ほどやった。
874デフォルトの名無しさん:03/10/23 18:08
同じく20枚ほど。秋月じゃないけどね。
オレも使った、H8/3052基板2枚、I/O等はユニバーサル手配線
展示のギミック動かすのに2週間動けばイイと言われて…
>>851 H8/3006,3007というシリーズを使ったことがある。8bit上位クラス。
>>852 ringバッファで実装するなら、ライトポインタとリードポインタの他に「ring内滞留数」も持つのが
 標準的な手法だね。H8だったらTXBUFが空いた割込とシフトレジスタが空いた割込とが別
 というアーキテクチャだから、TX書いてよ割込の処理でこの滞留数がゼロならTIE off, TEIE ON
 とすることで次のTEIE割込でTE offとすれば「最後のバイト送出完了を待って送信機能を
 止める」というコードが簡単に書ける。
>>873-875
みんな使ってるねえ。
自分で作るより全然安いからなあ。

>>876
それは300Hシリーズですな。ちなみに16bitでつ。
878デフォルトの名無しさん:03/10/24 13:02
>>877
手間かかるし。
仕様決めて、部品選んで、アートワークして、できあがった基板の動作確認しないといけない。
ほんの少しだけなら、買ってきた方がマシ。
879新規鯖立て:03/10/25 22:56
.
880デフォルトの名無しさん:03/10/26 23:34
H8/2000系のgdb-stubどっかねぇ?
882880 :03/10/27 04:58
あんがと>>881
883デフォルトの名無しさん:03/10/27 09:31
SHのスタートアップの定番みたいのはないですかね?
みんなどうしてる?
>>883
Interface の別冊とpdfでやってる。

 ちなみに私の場合は趣味プロです。
 いまはJavaer(T-T;
>>881
スタートアップと言われても漠然としすぎてないか。

とりあえずクミンズからおとせるHEWの吐くやつではダメ?
http://www.kpitgnutools.com/
886デフォルトの名無しさん:03/10/28 01:21
上に出て来たWDTの事でお聞きしたいです。
WDTのカウンタレジスタが8ビットの場合、
オーバーフローまでの周期は、コントローラーのビットの
設定でも変わると思いまつが、
30msに設定した場合、×256でオーバーフロー、
リセットの計算は間違いなのでつか?

>>886
初期値の設定がなければ、そうなると思うが。
データシートに時間の計算方法書いてない?
>>886
たぶん30msってのはその8bitが溢れる時間じゃないのかな?
889886:03/10/28 23:23
>> 887, 888
ありがとうございまつ。
計算違いですた、33MHz 分周比1/4096で、x256で
30msですた。
890歪みゲージ ◆8x780QSFss :03/10/31 18:00
お久しぶりに書き込みです。
今日提出日だったのですが、出してプログラムを見るなり一言
「はい。再提出」
コールバック関数などの知識が無かったため、>>779を適当に
for文でまわしたのがダメだった…

取り込み周期0.1msで取り込むプログラムにするにはどうしたら・・・(涙)
卒業できるのかな、俺。
取り込み周期0.1ms を windows でとなると、特殊なドライバーが無ければ無理だと思うよ
>>890
0.1msecは、コールバックでやっても、厳しいかもなあ。
最近の速いコンピュータなら大丈夫なのかな。
(そこら辺の感覚が、PC98のDOSでプログラムを作っていた頃から、進化してない)

そういうときは、インテリジェントなボードとか、バッファのあるボードとか使うけどねえ。
単に取り込むだけなら、そのボードにタイマー割り込みの機能があって
どらいばがあれば大丈夫だと思うよ。たかが 10KHzでしょ?
コールバックで処理させたいとなると、プロセスの壁を乗り越えないといけないから 0.1ms は厳しいよ。
ああ、そうか。
0.1msec間隔で取り込んでも、0.1msec間隔でコールバックされるわけじゃねーわな。
あかん。ボケとる。
895デフォルトの名無しさん:03/10/31 20:41
厨質問で申し訳ないです。
今度組み込み系の仕事やることになりそうなんですが
ハード系の知識はほとんど無いソフト屋だと
回路図読めるようになるのって難しいですか?
チラッと見ただけだとサパーリ訳わかんなかったんですけど…
勉強すれば1年もすれば読めるようになると思うよ。


ただ、今は、今の技術に対応してる電子回路系の良書が無いんだよね。
897デフォルトの名無しさん:03/10/31 22:06
>>895
デジタル回路図だけでなくタイミングチャートを見ることも必要なんじゃないかな。
デジタル回路なら、各ピンには、例えばRS-232Cのような、通信の確立を行うのと同等の機能のコントロール信号ピンが幾つもある。
例えばA0〜7はアドレスピン、D0〜7がデータピンだとして、CS(チップセレクト)0〜2(とか)でやり取りするデバイスを選択、このときに出力確立されているアドレスが有効アドレス、
次にR/W(0/1)で読み込みか、書き込みか選択、数クロック後データ転送を相互で確立、
また、INTで割り込みとか、
思いっきり単純な例だけど。
練習台としてPICなんかお勧めだけどなぁ。
それともアナログ回路?それなら本格的にやる必要があるかも。
898デフォルトの名無しさん:03/10/31 22:32
「CS(チップセレクト)0〜2(とか)でやり取りするデバイスを選択」
で、CSpin0〜2の2進出力3pinでどうやって選ぶデバイス(相手デバイスにもCSpinあり)を決めるかって言うと
例えば
     __
     |  |
CS0---|  |-----デバイスAのCSpin
CS1---|  |-----デバイスBのCSpin
CS2---|  |-----デバイスCのCSpin
    .|  |
      ̄ ̄
というバスブリッジがあって、CS001と入力がくればデバイスAへの出力をアサート、
CS010と入力がくればデバイスBへの出力をアサート、CS011と入力がくればデバイスCへの出力をアサートというように、
2進を10進(振り分け)に変換する。このデバイスは汎用チップでも製品としてあって(74シリーズ)
、デコーダと呼ばれている。
逆に10進→2進(コード化)をエンコーダという。

あるいは似たものにセレクタというものもある。
詳しくは、CQ出版のトランジスタ・IC規格表を見てみて。
899デフォルトの名無しさん:03/10/31 23:13
>896-898
ありがとう
ソフト屋の漏れに話しがあった位だから多分アナログ回路では無いと思います。
色々調べて勉強してみます。

昔も制御系っぽい仕事した事あったけどその時は
ハード屋さんにレジスタマップやポートマップを作って貰ってた。
今思うと恵まれてたのね。
ハードのリリース遅せーぞとかバグをこっちに尻拭いさせんなゴルァとか
思ったりしてごめんよ
おまえら死ねよ。
>>893
ご自身の問題意識や興味次第だと思います。

つまるところ、組み込みのソフトは、デンキ屋さんの設計したハードを
いかに動かすか、だと思いますので、回路図以前に各種ポートに
つながった(自分で制御する)ブツを理解することが大事です。

回路図は二の次で、自分の制御しなくてはならないモノの仕様を
押さえましょう(仕様を満たすためには・・・どのポートに何を書くとどうなるetc)。

ある程度までは、回路図が読めなくてもデンキ屋さんの出してくる
ポート割付表とかが理解できるなら、問題はないはず(デバイスの使用法は自分で探そう)。
逆に回路図しかくれないデンキ屋のいる会社なら、大いに問題があると思う。

組み込みはソフト屋的アプローチとして、(CPUの理解は当然として)周辺につながっているブツを
どう動かすかって事なので、今現在に直面している周辺(USBとかRAMとかのLSI含む)の
使用方法を学ぶ方が、回路図を読むことよりも大事だと思うぞ。
ソフト的に見れば、周辺回路はどこかのポートやメモリマップドI/Oにぶら下がっているわけだから。
>>895
オームの法則が分かってりゃ何とかなるよ。
微分積分 と演算子法(ラプラス変換)あたりの基礎もいるな
設計が順調な時は回路図など読めなくとも極論よいかもしれない。
だがバグが出てHW,SWどちらの問題か分からない時、
回路図読めるとHW屋と戦える。だが時々自分で調べることができる分
余計な仕事が増えていると思う今日この頃。
>>901
もっと基礎的な部分で、sin,cosも頼む。
それから英語も。チップのマニュアルが英語だったりすることは多いからね。
英語は必要だなあ。
日本製のはずなのに、英語の資料しか無い石とかあるもんなあ。
「日記書くな」って怒られた、μ80381とか使ってる者です。日記じゃない情報を報告。
A/Dを読むのに「チャンネルセレクト,start」を書いて一回ADI(変換完了割り込みbit)
を立つのを待っても、A/Dの値が完全には読めません。もう一回startしてADIを待つと
ちゃんと読める。お客様がメーカに問い合わせてくれて、「1回ではコンペアが完了しない。
それはCPUのバグで、将来のモデルでは解決されるであろう」という答を引き出して
くれました。お客様が研究所クラスの方だからできたのだろうけど、しがないコーダーの
おれじゃ絶対解決できないよ、こんなの。((((((;゚д゚))))))ガクガクブルブル
>>908
ファーストロット使うのはモルモットになるようなものだからしょうがないでしょ。

自分も今使ってるDSPが、どうもマニュアルとアチコチ動きが違うのにウンザリ中
>>904
タイミングチャート読める漏れはソフト屋相手に戦ったことが…
タイミング満たせなくて泣く泣く簡素な方法をあきらめて組んだコードを、
タイミングのマージンがあるからアクセス方法変えて高速&簡略化できる、
って逝ってきやがってさ。
あちらさん、遅延を読み落としてマージンどころか仕様すら満たして無いのに気が付いてねえ。
こっちが指摘してやらなかったら後で泣いてただろうな…
石はプロセッサもペリフェラルもあっちの自社製品、しかも直結だっつーのに
そんなことすら把握できてねーってのはどうよ。
>>910
客とはそういうもんです
912デフォルトの名無しさん:03/11/05 10:43
HEWで、throw std::runtime_error("(゚Д゚)ハァ?")とかすると、コンパイルエラーでつ。

HEWはC++苦手ですか?
説明サイトでもあればなぁ。
913912:03/11/05 10:53
>L2310 (E) Undefined external symbol "___throw" referenced in

throw句が無いのかよ???
throwが無きゃcatchはありえないだろ!(怒
んだんだ。
try,throw,catchはセットモノ。
>>908
だから、「日記」は書くなっつーてんだろ。
HEWにはthrowもcatchもあるよ。
std::runtime_errorはないから、
std::exception(だっけ?)を継承して自作。
>>913
それ、リンクエラーじゃないの?
918912:03/11/06 15:53
>>916-917
なんでか分からないけど、エラーですね。ちょっと今回はあきらめました。

ところで、HEWにSTLのvectorは使えないんでしょうか?
#include <vector>でエラーですが。
919912:03/11/06 15:54
ぐぐったら、
ttp://www.hitachi-ul.co.jp/MYICE/XSOFT/gaiyou.html
>(注2): スタンダードテンプレートライブラリ(STL)についてはサポートしておりません。
ですた。

これも自作?
920912:03/11/06 16:12
vectorのresizeとsortツカチャタヨ。

HEW環境でどうしたら良い?

Winとコード共有って感じで喜んでツクテタんだけど...
921デフォルトの名無しさん:03/11/06 16:50
HP作りました! 是非見てください!!!
http://bass01.fc2web.com だよ!
>>920
HEWとSTLにこだわるなら、
STLを移植するぐらいしか選択肢はないと思うが。

と無責任に言ってみる。
923912:03/11/06 17:19
>>922
今回は、qsortしまつ。

>HEWとSTLにこだわるなら、
で、HEWをやめれば、STLできますか?gccとか、他にもコンパイラあるんですよね?
ウワサしか聞いたことありませんが。
ていうか、組み込みでC++使ってるん? どう?
http://www.kpitgnutools.com/
これならSTL使えるんじゃない?
926デフォルトの名無しさん:03/11/06 20:45
>>924
templateなんかは静的に決めれるところは決めちゃうって部分もあるわけで、
C++は結構組み込みに向いてる気がします。
927922:03/11/06 20:52
>>923
qsortってスタック食いなイメージがあるなぁ。
STL云々言っているからメモリ多そうだし、問題ないか。

gccなら使えるんじゃないかなぁ。
クロスコンパイル環境を構築するのは面倒臭そうだけど。

>>924
使ってないです。
C++はWiindowsアプリを作ったときに使った程度。
STLも殆ど使ったことがない。
>>924
ウチでは結構つかってる malloc が使えないので自動的に new もつかえなくて
標準的なライブラリはつかえないけれど、まあ便利は便利。
おまえら死ねよ。
930デフォルトの名無しさん:03/11/07 12:49
>>928
そうそう、malloc/reallocが正常に動かない場合あるよねー。
ちゃんと、sbrk関数ではメモリ返すようにやってても。
原因は何だ?
931デフォルトの名無しさん:03/11/07 13:50
932デフォルトの名無しさん:03/11/07 20:51
HEWには、VC++やBCBのようなヘルプが無い。
みんな困ってるよな?
業務連絡:

>>950 を踏んだ人は次スレをたてて下さい。
  たてられないプロバイダの人は踏まないように注意して下さい。

>>945 を踏んだ人は再度韓勧告する事。
VCやBCBのようなヘルプって何だっけ。
MSDNは便利に使わさせていただいておりますが。
935デフォルトの名無しさん:03/11/08 15:06
>>932
F1を押すと、その関数のヘルプに飛べるよ。便利。
936デフォルトの名無しさん:03/11/08 16:08
>935
HEWで?
>>932
すまん、IDE使ったことがないんで教えてくれ。
「F1を押す」と言うのは判った。
「その関数」とはどの関数なんだ?
>>937
カーソル置いてる関数
一般のエディタに余所のヘルプを呼び出す機能が付いてると思うが。かなり昔から。
VZでTurboCのヘルプを使ってたような気がする。違ったっけ?
最近そこまで必要ないから忘れた。
M-xmanで事足りるからわざわざF1キー押すまでもないなぁ。
F1押したら児童でman開けばいいのにね
F1キーなんてないキーボード使ってたり、あっても遠いからなぁ…
このスレではIDE使っている人は少数派じゃない?
コンパイラだってGCCだろうし。日立のSHコンパイラやARMのADS
使ってる人もいるかもしれないけど。

GCCは性能云々言われるけど、潰しが利く(どのターゲットでも動く)
ので手放せないしな。
SHコンパイラはV7のやつはV8に無料アップデートできないのか?
HEW3に上げさせておいて、ほったらかしかなぁ?
正直あのプログラムにはうんざりすることが多いのだが・・・。
945デフォルトの名無しさん:03/11/12 00:31
16bitマイコン(H8/300)での制御機器の開発をすることになりました。
C言語とアセンブラのどっちでプログラム開発するのが(・∀・)イイのか
意見を聞かせてください。

[概要]
シリアル通信、EEP、タイマ、ポート10点ぐらいの制御
300Hじゃなくて300なの?
947デフォルトの名無しさん:03/11/12 01:32
>>946
300Hでつ。
>>945
そんな程度ならCで十分ですよ
アセンブラの初心者で開発ついでに勉強したい
とかなら話は別かも知れんけど
昔に通信関係で時間に厳しい案件をやってたことがあるんだけど、
割込み時間内での経過時間を保証するために最悪ケースでの
必要クロック数を数えたことがありました。今でもそんな事してる
人っています?
>>949
プロファイラとか知らなかった頃、ステップ計測ツールつくって
デバッガ上で計測したことならある
そして、今でもプロファイラはよくわからんのでつかっちる
>>949
たまに
>>947
8bitだと調歩同期を実現する為に命令数を数えるのは普通で
4bitだと、内臓タイマーの分解能が不足するから全処理を命令数数えて実現したりするよ。
 (ただし普通の5倍は手間時間はかかるね)


>>950 次スレたたてね。
980でいいでしょ
>>953 それだと、このスレデータ落ちするかもね。 まあいいけど。
955デフォルトの名無しさん:03/11/12 13:14
>>908
μ系ではA/Dは2回取ることをお勧めする(1回目は捨て)
中にはマニュアルに書いてあるのもある。
その程度なら別に研究所クラスでなくてもデバッグの過程でわかるだろ!
>>945
Cでいけるのでは。ただしROM,RAMが少なかったり
タイミング的に厳しい仕様があるならアセンブラだな。
って概要を見ると8bitマイコンでも出来るぞ。
いや、4bitマイコンで十分だろ(ただしアセンブラな)
Embedded Technology 2003@パシフィコ横浜逝ってきた。
金曜日までだから、みんな逝くよな? 漏れは出展者なので3日連続だが。

MontaVista、人集まってたな。
>>945
情報が少ない

Cの経験は?、アセンブラの経験は?、他CPUの経験は?
そのハードで何をやらせたいの?
>>949
いまだにZ80をこねくり回してるのでたまにやってます
昔に比べたらクロックが上がってるのですごく楽になった
959デフォルトの名無しさん:03/11/12 21:18
>>945 その殆どを書いたことあるしソース持ってる。アプリでどんなことしたいかは別にして、
デバイスの扱いの部分(ドライバ層的な部分ね)ならソースあげるよ。
このスレでもう一回意志表示してくれたらメアド晒す。
>>952
率先して立てようとは思わないんだ。
962945:03/11/12 23:29
今まではZ80、PICやってました。
プログラム開発はアセンブラのみ。
C言語はかじる程度にやっただけで
開発実績はなし。

今の仕様ならばROM容量、処理速度とも余裕ありそう(多分)
μs単位の制御ナシ
掛け算とか除算、コード変換や10進変換はナシ
ただし後からバージョンアップや機能拡張アリ

C言語だとある程度は関数やサンプルプログラムが
用意されているらしいので、
SIOとかI2Cバスのコントロール部分が容易に
なるのではと思ったんですがどうでしょう?
(アセンブラで一回作ってしまえば同じですが・・)

>>959
メアドは遠慮しときます
こんなトコで晒すとなにかと大変だと思いますので・・
でも困ったときはまた質問させてもらいます

>>945
コンパイラ、アセンブラはなにつかう予定?

日立HEW
IAR
イエローソフト
GNU


…秋月(w
964デフォルトの名無しさん:03/11/13 12:53
>>962
Z80やPICやってたなら、Cで提供されたサンブルコード
見ながら、SIOやI2Cのペリフェラルを自前で叩くコード
を作ればいいじゃん。
あとさ、やっぱ言語は本質的な問題じゃないんだよね!
まずは与えられたチップの資源で仕様をどう実現するか
っていう設計が大切だよ。
それに掛け算とか除算とか10進変換とかも、それは大した
問題じゃないよ。
まずは設計をちゃんとしな!

965デフォルトの名無しさん:03/11/13 21:29
>まずは設計をちゃんとしな! ごもっともだが「それを言っちゃあおしまいよ」(´∀`)
962はきっとその辺をパスしてどっか転がってないか探してるのだと思われ
966デフォルトの名無しさん:03/11/13 21:30
>>962
Cの方が圧倒的に開発効率がいいのは事実だけど、
それはライブラリが揃っているからというより
記述のわかりやすさと、凡ミスをコンパイラがある程度
カバーしてくれるということ
アセンブラやってるなら引数渡しのミスで長時間悩むなんてこと
経験あるでしょ、Cならそれが圧倒的に減る
できればサポートするCPU数の多さととインラインアセンブラの
柔軟性に優れるGCCあたりでやるのがいい。
開発環境に慣れるまでちょっと時間がいるかも知れないが
先のことを考えると早めにCを使い始めるべきだと思うね。
パソコンから入ってCPUの動作がわからないとCだけでは
行き詰まるかもしれないが、アセンブラを経験してからCをやるのは
組込のプログラマーとしたらとても楽
CPUはどんどん進化してるから、開発が楽になって浮いた時間で
タイマー割り込みや内部ペリフェラルの活用法の勉強すれば
Cでも、プログラムのパフォーマンスはあがるよ
アセンブラやってればCのポインタで悩む奴はいないというのは言い古されてるが
それでも悩んでしまった人は居てますか?
intのポインタを引数に持つ関数のポインタの配列へのポインタのポインタ
とかされると、悩みますけど、何か?
969デフォルトの名無しさん:03/11/14 13:24
フジワラさんの開発日記って
単行本化はいつなんでしょうか
>>968
そこまでいくとアセンブラでも充分なやみます
971デフォルトの名無しさん:03/11/14 15:04
Cのポインタはアセンブラの間接参照を抽象化してパズルのような
書き方ができるからなあ。
配列表記よりポインタ表記の方がコード効率がいいって奴もいるけど、
最近はコンパイラが賢くなってどっちでも同じという説もあるし、
ポインタのポインタのポインタで悩みたくないから可能な限り配列表記にしている。
>配列表記よりポインタ表記の方がコード効率がいいって奴もいるけど、
>最近はコンパイラが賢くなってどっちでも同じという説もあるし、

コンパイラにアセンブリソース吐かせて確認すれ。
というか昔に比べて同じ用途に使う場合のクロックが上がってるから
少々効率の悪いコード吐かれても問題ない場合が多くない?
全体としてはそう。
でもクリチカルな部分て絶対あるし、コンパイラの出力するコードぐらい把握して
おいて損はない。デバグの際に役立つこともある。
そろそろ次スレか。
976956:03/11/15 02:17
ET終了。乙。って逝ったの漏れだけだったのか?
足パンパンだよ。

あいかわらず組み込みLinuxが盛況?
>>976
あ、行くの忘れてた。
>>974
行けなかった…。 オークスの基板、欲しかったなぁ…
ETは上司が逝っていいというので行って来た(w
どんなもんかなーと思ったけど、あんまり目当たらしいものは
なかったような。。。。

>>978
こんなの配布してたのか。。。もらいにいけばよかった。
980デフォルトの名無しさん:03/11/15 13:18
次スレ

制御系なら俺に聞いてもいいぞ(4)
http://pc2.2ch.net/test/read.cgi/tech/1068869894/
981デフォルトの名無しさん:03/11/15 15:36
ET2003行ってきますた
AMDのねえちゃんが一番エロかった
982わむて ◆wamuteW7DE :03/11/15 15:39
    ∩∩
    <|: ^>
    ni  n
  .yy~~~~ .Y
. \((ヘ   _! / みるまらー
  <_葱看>
     ̄ ̄
埋め立てついでに質問させてください。
(低レベルでごめん)

ここにいるみなさんはハード側にも詳しいようですが
ハード的な知識(電気・電子系の知識があるとか回路が読めるとか)が
ほどんど無いソフト屋も制御系に含まれるんですか?

前やってた仕事はたとえて言うと電話機の
留守電の機能とかのソフト的な部分なんですが・・・
>>983
まあ、制御系と一言に言っても範囲が広いからな。
電話機クラスなら、ソフト屋さんと言ってもそれなりにハードに依存するところがあるだろうから、ハードに詳しいと何かと有利だろうね。

カーナビなんかの UI 周りなんかだとあまりハードを意識しないこともあるだろうから、ハードの知識があまりない制御系プログラマって言うのもいると思う。
>984
ありがとう
この間転職しようと思って面接に行ったら回路もよめない?オシロも使ったことねーの?
それでも制御系PGなの?うちじゃいらねーよ( ´,_ゝ`)プッ
ってな感じで言われたのでへこんでました。
そんなにハードの知識を求められないようなとこ探してみます。

でもハードに詳しい方が有利ってのはそのとおりだと思うので
今いるところで出来るだけハードの方の勉強もしてみます。
>>985
まあ、ソフト屋さんにオシロを要求するような所はちょっと極端だと思うよ。
小規模な部署で、ハード屋さんとソフト屋さんの境界があいまいなのかもね。
普通は、ロジアナまでかな。
>>986
オシロ経験者>ロジアナ経験者のような気がするが・・・うちの部署を見る限りでは。
世間ではそんなもんなのか?
988デフォルトの名無しさん:03/11/16 01:43
>987
おれのところもそうだと思うな。
ろじあな使う?
>>988
ソフトのデバグにはロジアナのほうが便利だろ
>>987-988
言ってる意味がよくわからん。
オシロとロジアナって使用目的が違うから、どっちが優れてるって言うのはないと思うけど。
991987:03/11/16 14:29
>>990
オシロ、ロジアナを使ったことがあるかないかだけの話。別に優れてるか
どうかなんて言ってないんだが・・・
大体のことにはオシロで間に合うからね。必然的にロジアナまで使うこと
のない香具師は多いってこと、、うちの周りを見る限りでは。

ロジアナがどうしても必要な場面って、オシロより多い?

それに、ロジアナだとバスラインをつないで使うことがほとんどだと思うけど、
つなぐ線が多いからあんまり使いたくないんだよな(w セッティングがマンドクセーので。
アジレントが出してる手軽にロジック見れるDSOホスイ。Tek信者ばっかりだから
アジのDSOなんてどうせ買って貰えないだろうけど。TDS7254入れたけど、GND
つないでも線が太くでてキモイ。
a
b
c
d
e
f
g
h
1000デフォルトの名無しさん:03/11/16 16:09



1000get


10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。