トップページ⇒tech
984コメント343KB

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

レス数が900を超えています。1000を超えると表示できなくなるよ。
00011NGNG
俺は俺であり、それはお前の事だ。
前スレで出たのは
PIC H8 SH M16 ARM 6502 x86 Z80 TMP47
こんな所だ。
後、メーカ名は出せないがDSPの話も出来るぞ。
ハード寄りの話も大歓迎だ。
道具話も楽しくやれるならやってくれ。


過去ログ
制御系なら、俺に聞け!
http://pc3.2ch.net/test/read.cgi/tech/1002176627/

関連過去ログ
●●●くみこの組み込み相談室●●●
http://pc3.2ch.net/test/read.cgi/tech/988084737/
0809デフォルトの名無しさんNGNG
>>808
(゚∀゚)お前のようなノータリンは見たことがねーや
だいたいナニを測定したいんだ?外部のI/Oか?
それともその拙い腕でパフォーマンスチューンでもするのか?
そのカボチャみたいな腐った脳で出来るとでも思ってんの?
ヘソで茶が沸くぜ。高野豆腐の角に頭ぶつけておっちね糞野郎

http://www.linux.or.jp/JF/JFdocs/IO-Port-Programming/high-resolution.html
ペンティアムならクロックサイクルを読めばいいと思います。
0810デフォルトの名無しさんNGNG
コンテキストスイッチって、浮動小数関連のレジスタも切り替えしないと逝けないの?
0811デフォルトの名無しさんNGNG
全く浮動小数点演算もMMCも使わないなら不要だろうけど、普通使うでしょ?
0812810NGNG
>>811
ありが�d
やぱーりそうでつか。じゃあ書くかな。('A`)ノ マンドクセー
0813デフォルトの名無しさんNGNG
昔の Win16のようにタスク切替を割り込み使わずにAPIコールに限ってしまえば 不要だと思うよ。
その前後で自分で保管してねって注意書き入れておけばさ
0814デフォルトの名無しさんNGNG
>>813
>その前後で自分で保管してねって注意書き入れておけばさ
そんな無茶な
それくらいならAPIコールの中で保存してやれよ
0815810NGNG
たぶんうまく逝ったよ。(゚д゚)ウマー
0816デフォルトの名無しさんNGNG
制御系の資格国家試験ってあるの?
0817デフォルトの名無しさんNGNG
>>816
テクニカルエンジニア (ES)
0818デフォルトの名無しさんNGNG
>817
持ってる、当然2種も1種も

以下、資格肯定派と反対派の争い
↓↓↓↓↓↓↓↓↓↓↓↓↓↓
0819デフォルトの名無しさんNGNG
肯定1票
0820デフォルトの名無しさんNGNG
オレも肯定。
まだ2種のみだが。

エンベデ持ってるやついる?
あれって、あの試験のラインナップでもかなりマイナーだよねー。
0821816NGNG
>>817
エンベデッドと言うのですか。わかりますた。
みなさんどうも。
荒れないうちに。
0822デフォルトの名無しさんNGNG
マイコン応用なら。
年間で千数百人程度しか受験しないんじゃなかったっけ。
受験会場も、エンジニアっぽい人が多くて、
女性も数えられる程度しか見かけなかったよ。
0823デフォルトの名無しさんNGNG
資格もってて、何かいい事あった?
手当付くとか、ねーちゃんに もてる とか・・・
0824デフォルトの名無しさんNGNG
無いよりイイと思うが
0825デフォルトの名無しさんNGNG
>>823
ねーちゃんにもてる ってのは当たらずも遠からずだな
うちのカミさんとの馴れ初めは試験会場での雑談だったからな
0826デフォルトの名無しさんNGNG
>>825

資格更新の時期ですよ。
0827デフォルトの名無しさんNGNG
>>823
無い。

>>822
情報処理試験に組み込まれてからは
もう少し増えた。
受験者は例年2千数百人の模様
http://www.jitec.jp/1_07toukei/suii_hyo.html

>>825
俺がエンベ受けた会場はオナゴは0だったが。。。。
0828デフォルトの名無しさんNGNG
>>827
合格率低いな。

まあ、情報処理の国家試験って、どれも合格率低すぎだけどな。
0829デフォルトの名無しさんNGNG
HEW用の無料ライブラリってありますか?

今欲しいのは、
・ハフマンみたいな強力な圧縮
・SSLみたいな暗号
です。
0830デフォルトの名無しさんNGNG
>>828
受かりそうもない香具師が大勢受けるからな。
0831デフォルトの名無しさんNGNG
GZIPで圧縮すればいいんでないの?
0832デフォルトの名無しさんNGNG
どこにソースありますか?>>831
0833デフォルトの名無しさんNGNG
>>832
ftp.ring.gr.jp/pub/GNU/gzip
gnuのミラーならどこにでもあるでせう。
0834デフォルトの名無しさんNGNG
マイコン応用 ほんと人少なかったな・・
学生のとき取ったけど、たしか学生って一桁しかいなかった気がする

参考書がないのでセンターが出してる水色の分厚い本をかってしまった・・ 
まだ家にあるはず。

役に立ったかといえばT/S命令とかアトミックとかリカーシブとか
リエントラントとかがわかるとサーブレット作るときにも結構役に立つとか、
そんなもんかなあ。

やはりPCの低レベルなところをしってるといろいろ役に立つ。
0835デフォルトの名無しさんNGNG
thanx!>>833

手に入りました。手を加える必要がありそうです。
SH/HEW用に直した圧縮や暗号ライブラリを公開しているサイトとか無いですかね。

自分の環境では使えないSH-LinuxではSSHも動きそうなのがなんとも。
Linuxを組み込みに使うには、まだまだ注意点が多いんだよねー。
0836デフォルトの名無しさんNGNG
ちったぁ加工しろよ。
0837デフォルトの名無しさんNGNG
>>836
いろんなライブラリの加工をやってるYO!
あまりに、標準エラー出力の多いライブラリだと挫折したりとか。

でも、HEWライブラリ公開サイトって無いかなー、みたいな。
0838デフォルトの名無しさんNGNG
fprintf(stderr,"これのこと?\n");
fprintf(stderr,"GZIPは作ったけどageない。\n");
0839デフォルトの名無しさんNGNG
>>838
そんなことしてると、日本の独自組み込み牙城が、Linuxなんかに飲み込まれるんでわ?
0840デフォルトの名無しさんNGNG
Linux ソースを参考ばかりに覗いてみるのもいいかもよ。
0841デフォルトの名無しさんNGNG
>>837
個人じゃHEWなんて手が出ないからねえ。
そういう事したいならGNU toolchainに移行してeCos使え。
zlibも入ってるぞ。
0842デフォルトの名無しさんNGNG
eCosかよ!
0843デフォルトの名無しさんNGNG
eCosなんて日本でお仕事用に使ってるのいるの?
uclinuxよりは良さそうだけど。
0844デフォルトの名無しさんNGNG
アライドテレシスの人がたまにパッチを投げているので、
何かに使ってるんでは?
contributeしてる人数のわりに、MLに.jpな人いねーからなあ。

漏れはuClinuxのほうが楽でいいと思うが。
0845デフォルトの名無しさんNGNG
組み込み系のソフト開発能力をUPしたいのですが、
自宅でできる良い勉強方法を教えてください。

対象はリアルタイム性が要求される制御系ソフトです。
宜しくお願いします。
0846デフォルトの名無しさんNGNG
とりあえず PID は作れるよね?  H無限大は追いかけてる?
DDAは理解してるよね?Z変換は大丈夫?
0847デフォルトの名無しさんNGNG
>>846
H無限大ってなんですか?
PIDって作るものなんですか?
DDAは知らないけどDOAなら持ってます。
ZよりZZの方がアニメじゃないと思う。
0848845NGNG
>846
PID は、matlabでシミュレーションはあります。
コーディングは、まだです。

H∞は、聞いたことだけで分かっていません。
DDAとは何ですか?
Z変換は、あまり理解していません。
0849デフォルトの名無しさんNGNG
DDA デジタル差分解析 (Digital Differential Analyzer)
 Bresenham で有名
 簡単な応用として、PWMを累計で出力するとか、
 ゲームでスーパマリオの重力の世界を表現するとか

ラプラス変換・フーリエ変換が判っててシステムを s で記述出来るなら
Z変換は問題ないでしょ。
0850デフォルトの名無しさんNGNG
コンパイル時には問題ないのですが、
リンク時に___curr_eh_stack_entryがリンクできないとエラーがでます。
そういう識別子はソース(プリプロセッサ後)にはないのですが・・・。
似たような経験した方はいないですか?

コンパイラはhew2を使用しています。
0851デフォルトの名無しさんNGNG
つーか、所謂ハード制御と古典的制御・自動制御って(ry
0852デフォルトの名無しさんNGNG
>>850
最近はスゴイよね
http://www.google.co.jp/search?q=__curr_eh_stack_entry

>The symbol it's searching for is almost certainly part of
>the compiler's internal exception-handling support.

だってさ
0853デフォルトの名無しさんNGNG
>>852
解決しました。
ライブラリ作成時にはプロジェクトの例外処理の使用にチェックをいれてたんですが、
そのライブラリを使用する側は例外処理の使用にチェックを入れてないのが原因でした。

初めて組み込み系のソフトを作ってるんで、いきあたりばったりな状態です。
0854デフォルトの名無しさんNGNG
http://www.renesas.com/jpn/news/2003/0619/index.html

R5F21104FP ROM16KB RAM1KB
なんで小ピンにしたからって ROM/RAMも減らすかなあ・・確かに他に比べたら多いけど
面白い事考えるには1桁 いや2桁少ないよ。
0855デフォルトの名無しさんNGNG
>>854
・お値段
・H8Tinyとの住み分け
てなところだろう。
0856デフォルトの名無しさんNGNG
そこらへんは判るけど 小ピンでもROM/RAMが多いのを一つ用意しても良かったと思うけどなあ

ROMが多ければ小ピンでも音声合成チップ代わりとか、
FPGAとかRAMベースDSPのブートデータ入れたりとか、
フォント内蔵のインテリジェント熱転写プリンタとか、
色んな応用がありえるし出来る。

今回のサイズだとPIC使ってる所は興味持たないだろう。
0857デフォルトの名無しさんNGNG
>>856
そういう要望が無かったからでは?

0858デフォルトの名無しさんNGNG
パチンコ関係は不正プログラムを防ぐために、
Z80しか使ってはいけないと言うのは本当?
もし、本当なら転職できるけど、逝きたくない業界でもあるわな。
自動車関係が、Z80しか使ってはいけないと言う風に、
法律で決めてほしいよ。。。
0859_NGNG
http://homepage.mac.com/hiroyuki44/2ch.html
0860デフォルトの名無しさんNGNG
>>858

ぎゃくにZ80だけであんなアニメーションとかできたらすごすぎだと
おもわないか?

マジレスすれば玉の出る確率を決めるところだけ別チップで、そこは
Z80相当+承認を受けたプログラムしかだめ  だったとおもう。
0861デフォルトの名無しさんNGNG
>>860
正解
0862デフォルトの名無しさんNGNG
初歩的な質問です。
たとえば、UARTの受信があったら、それを受信レジスタから読み出して、
必要な処理をするというプログラムがあったとします。
これを、受信割込を使わないで、行うようにする定番の方法みたいなものはないでしょうか?
while(1){
if(受信フラグ==1){
受信処理;
}

通常の計算処理など;
}
こういったプログラムを作った場合、「通常の計算処理など」が、
条件によって、たまたま時間がかかってしまった場合、
受信したキャラクタの取りこぼしが発生してしまうので、
やはり割込を使うしか方法がないように思うのですが。
0863デフォルトの名無しさんNGNG
>>862
CPUをもっと高速なものにする・・・というのは置いておいて。
「通常の計算処理など」が短ければいいわけだから、
めんどくさいけど、細切れにしてしまえば?
こんな感じ

static int state=0;
switch(state)
{
  case 0:
    (略)
    state=1;
    break;

  case 1:
    (略)
    state=2;
    break;
}
0864デフォルトの名無しさんNGNG
こんなスレもあったんだ・・・。
現場作業から離れて何年も経過してるけど、
今でもASMは覚えてるなぁ・・・。
当時はHD647180Xをメインに使ってた。


0865デフォルトの名無しさんNGNG
>>862
そのやり方だと、「通常の計算処理1」、「通常の計算処理2」・・・となった場合には、
かなり見づらいプログラムになる。
素直に割込を使う方がよいと思われ。
0866865NGNG
>>863の間違いだった。スマソ
0867デフォルトの名無しさんNGNG
>>858

自動車関係はもうすでに遥か先を行っているぞ。
0868862NGNG
>>863
すみません。
もうちょっと詳しく解説して頂けませんか?
0869デフォルトの名無しさんNGNG
>>862
UART持ってて割り込み使えないシステムはまずないと思う。
 考えられるのは
  他に時間精度の必要な割り込みがある・・事だけど、普通は多重割り込みを許可すれば解決するだろう

 ハードウエアで受信禁止をかけているから割り込み使わずにヒマな時に見て処理するという場合はあるけど


0870パチンコ屋NGNG
>>858
そんな事は無いぞ。
以前のパチンコ機は6811系が主流で、Z80系は少数派だった。
外部リセット・スタート式(リセット信号のタイムアップで初期値から
スタートする)がその頃のプログラムの基本だったからね。
逆にパチスロ機はZ80系が主流だったよ。
バックアップ処理の問題や、液晶などの他の制御系はZ80系、例えば、
川鉄のKCや東芝の95C061がメインで使われていて、それと一緒の
Z80系の方が混乱しないという事からよく使われるようになってきた。
必然的に、タイマ・スタート式(モード2のタイマ割込み)のプログラム
となったけどね。

それから、専用MPUメーカーであるLETechやNACは、警察OBの
天下り先なので、そこが現在主流としているのがZ80系なのは事実。
また、>>860が言うように、「承認を受けたプログラムしか駄目」というのは
ある意味正解だ。検査をする保通協も、警察OBの天下り先であり、
MPUメーカーとは密接な関係があるからね。

「球(パチンコではこっちを使う)の出る確率を決めるところだけ別チップ」
というのは、半分正解。新しい4280MPUは内部乱数を持っているし、
サミーの様にハード乱数を使う場合もある(パチスロはハード乱数が主流)。
今までのパチンコの主流は、NACや2280MPUを使い、プログラムで
ソフト乱数を作る方。以前は+1方式だったが、現在はスキップ方式となった。
ここら辺はパチンコ雑誌とかにも書いてあるよ。
0871デフォルトの名無しさんNGNG
>>862
自動ハードウェアフロー制御機能付きUARTを使う(w

これならポーリングでも問題なし。フロー制御をUARTが勝手に
やってくれるから。



昔、子供向けおもちゃの赤外線通信を実装したときは、1ビットづつソフトで
送受信したYO!
全部クロック測ってポーリングしたので、ソースコードのコメントにクロック
書いていたので、ソースがえらいことになってた。無理してクロック合わせ
とかしていたので、スパゲッティソースの極致になってたな。

まぁ割り込み使えるなら、割り込み使った方がいいよ。
0872862NGNG
UARTを取り上げたのは、あくまで一例なのですが、
実際、外部割込を使う場合でも、割込に対応しているCPUのI/Oピンが限られていたりすることも多いと思います。
そう言った場合には、ポーリングを使うこともあると思うのですが、
どうやるのかと思って質問しました。
0873デフォルトの名無しさんNGNG
内蔵じゃないUARTか・・・今時使うかなあ・・・というのが感想だね。

もし、そんなふうな事やるなら
1)4bitマイコンやPICででもインテリジェントな受信ユニット作る
2)>>869 >>871の通りハードフローで相手に受信しない時は送らせない
だと思うけどね。
0874デフォルトの名無しさんNGNG
>>872
RTOSを使え
0875デフォルトの名無しさんNGNG
>>872
ハードウエアで割込ピンを兼用するようにしてしまえば?
0876デフォルトの名無しさんNGNG
>>872 俺実際にやったよ。割り込みベクタはアプリが独占している状況で
Hexコードを受信してFROMに書く。ROMに書いてレディを待つ間も受信ポート
をポーリングして受信バイトをキューしておく。とにかく「処理時間が1文字
の転送時間(9.6Kなら1mS)を越える」ようなループには全て受信ポーリング
を入れる必要がある。当然printfやscanfみたいな「重い」ライブラリなんか
使えない。文字単位の変換から全部自前で書く。パズルみたいだよ。
0877デフォルトの名無しさんNGNG
タコ設計自慢してどうする。
0878デフォルトの名無しさんNGNG
>>876
綱渡りな設計だね
なんでそうなっちゃったん?
0879デフォルトの名無しさんNGNG
4ビットマイコンで調歩同期とかリモコン出力とか使ってるために
割り込みをかけられなくて、シフトレジスタの受信をポーリングでやるなんて事はよくあるけど
SIO持ってるようなリッチな場合は設計段階でやらなくて良いようにすると思うけどなあ
それこそPIC使ってインテリジェントに受信すればいいし
0880862NGNG
>>876
やはりそうやるのですね。

>とにかく「処理時間が1文字の転送時間(9.6Kなら1mS)を越える」ようなループには
>全て受信ポーリングを入れる必要がある。

これが、>>863さんの言う「細切れ」で、
「かなり見づらいプログラム」(>>865)、「パズルみたい」ということですね?
0881デフォルトの名無しさんNGNG
>>880
> >とにかく「処理時間が1文字の転送時間(9.6Kなら1mS)を越える」ようなループには
> >全て受信ポーリングを入れる必要がある。
>
> これが、>>863さんの言う「細切れ」で、

微妙に違うと思うぞ。

>>876 さんのは、受信処理(受信フラグ判定を含む)を通常の計算処理内のループに
埋め込むというやり方で、受信処理は複数箇所から呼び出されることになる。
それに対して、>>863 さんのは、大きなループを一つ用意して、
受信処理と細切れにした通常の計算処理を交互に実行する。
そのため受信処理は一箇所だけになる。

既存のソースに対して追加しなければならない場合は、>>876 さんの方法を使って、
一から作るんならデバッグが楽な >>863 さんの方法を使うようになるんじゃないかと思う。

まぁ、使わないにこしたことはないんだが…
0882デフォルトの名無しさんNGNG
この手の処理は1ms以下のタイマ割り込み内で
I/Oポートをポーリングするのが一番すっきりしているのではないかな。
0883デフォルトの名無しさんNGNG
>>882
タイマ割り込み使えるなら、
なんも考えずにそうするのがいいな

シンプルなのが一番
0884デフォルトの名無しさんNGNG
>>882
9600bpsくらいまでなら、それで充分追いつくんだよな
それから先をポーリングでやろうとすると、厳しい。
割り込み使っても割り込みだらけになる。
0885876NGNG
>>878 FROMにアプリを書き込むローダなのよ。割り込みベクタは電源オン
以外全部アプリの中を指す。電源ONでローダに制御が来て、FROMを調べて
プログラムが書き込んでなければ受信書き込みを実行、書き込んであれば
(10000h番地とか決めてある)アプリのスタート番地へ分岐する。
だから割り込みは一切使えないわけ。
タイマ走らせても同じ理由でコンペアマッチフラグをポーリングしなきゃいけない。
0886デフォルトの名無しさんNGNG
内蔵フラッシュ書換え中はRAM上にコードが無いといけないとかあって
最近の16bitクラスだとベクタ番地を動かせるのも多いけど、
ベクター変えるのもメンドクサイからシリアルをポーリングにした事はあるな。
そのモードではそれだけしかしないから逆に楽だった。

内蔵SIOが足りたいときに、調歩同期信号の立下りで割り込みかけて
後、タイマー割り込みで1ビットごとに受信するなんてのも作ったけど
今時のマイコン 19200とかでも余裕だ。
0887デフォルトの名無しさんNGNG
>>885
>>886 が言うような Vector Base Register みたいなのがあれば、それ使えばいいし。
そうでないときは、割り込みベクタは RAM 領域のジャンプテーブルを指すようにしておけばいいだけだと思う。
(電源 ON 時に、とりあえずローダー用にジャンプテーブル初期化しとけばいいし、アプリに移行した時は、アプリに好きなように初期化させりゃいいだけだろ。)

4bit CPU 使ってるから、余分なジャンプテーブルが取れないとか、間接ジャンプが難しいとかの制限があるのか ?
0888デフォルトの名無しさんNGNG
>>886
PICクラスのマイクロコンピュータというより、マイクロコントローラクラスだと、
さすがに余裕とは言えないのでは?
ちょっと、余裕のある16ビットクラスでも、たとえばSRAMが8ビット幅、2ウェイトアクセスのような
悪条件が重なれば、余裕はなくなると思う。
もちろん、CPUが数百メガで動いてくれるなら、話しは別だけど。
0889デフォルトの名無しさんNGNG
>>888
4bitで昔やった事があるが、割り込み処理が追い付かなかった。
レジスタを退避している間に次の割り込みがかかるという…

受信処理に専念しても特に問題なかったので、それで逃げた。
0890デフォルトの名無しさんNGNG
最近の16ビットクラスのマイコンはタイマは贅沢にあるからね。

1マシンサイクル1usより速くて、自由に設定出来るタイマがあるなら
19200bpsだと
 割り込みエッジから52/2=26uS後を タイマー割込かエッジ割り込み内で待つかして
 そこでLを確認した後は52uS毎にタイマ割込みかけて シフトすればよい。


逆に4ビットマイコンだと>>889さんの言うとおり、割り込み内でループさせないと厳しいね。
もっともだから逆に19200とかその倍くらいの速度が作り易い。
0891デフォルトの名無しさんNGNG
割り込みハンドラと割り込みルーチンはどこが違うの?
あと、なんで割り込み処理は短めに書いた方がいいと言われるの?
0892デフォルトの名無しさんNGNG
割り込んだ上にデカイ顔されちゃかなわんから。
0893_NGNG
http://homepage.mac.com/hiroyuki44/hankaku09.html
0894デフォルトの名無しさんNGNG
>>891

割り込み内では割り込み禁止すること多いからじゃないの?
そうすると割り込み応答時間がその分長くなる
0895デフォルトの名無しさんNGNG
自作のプログラムからMPEG2キャプチャーカードを制御して
録画を開始させる事は可能ですか?
0896デフォルトの名無しさんNGNG
>>895

簡単簡単
すくなくともキャプチャーカードを設計してチップ配置して回路起こして
ガリバーデータ作って基盤作ってチップ乗っけて半田つけてお城で波形見て
タイミング検証するよりはずっと簡単だと思うよ
0897デフォルトの名無しさんNGNG
あたりまえじゃん。
0898デフォルトの名無しさんNGNG
>>890
しかし、16ビットクラスだとSCIも普通に持っていることが多いわな(w
0899デフォルトの名無しさんNGNG
そうだね。100Pinあれば3つくらい付いてたりとかが普通だね。
でも、あと1個2個欲しい時とかあるじゃない。
0900デフォルトの名無しさんNGNG
>>896
簡単だと言いつつプログラムもまともに組んだことがない罠。
0901デフォルトの名無しさんNGNG
>>891
メインは空ループで、ただのイベント待ち。
割り込みで起動する方が、実際の仕事をするというのを書いたことがある。
別に、普通に動いてた。
0902デフォルトの名無しさんNGNG
>>899
ソフトコアのプロセッサなら、何個でも作れるじゃん。
誰かいじったことある香具師いる?
0903デフォルトの名無しさんNGNG
JavaChipってどう?
picとかH8もいいけどjavachipのポードで遊んでみたいが試したしといますか?
0904デフォルトの名無しさんNGNG
>>903
おまえはゴクリか?
0905デフォルトの名無しさんNGNG
そんなのhaltで充分ですよ!!
0906デフォルトの名無しさんNGNG
>>904
いとしいしとsage
0907デフォルトの名無しさんNGNG
制御系って理系でないと無理なのでつか?
漏れは文系でCはできるが。。。
どうなのでしょう?
0908デフォルトの名無しさんNGNG
回路設計とか勉強したほうがいいだろうな。
ただ、スレでもでているが、会社によっては
ファームやミドルを制御系と呼んでいるとこ
もあるから、そういうとこならCの知識だけで
やっていけるよ。
レス数が900を超えています。1000を超えると表示できなくなるよ。