制御系なら俺に聞いて ..
[2ch|▼Menu]
604:デフォルトの名無しさん
04/09/25 10:45:23
>>603
パラレルの入出力考えてたり、SPIなんぞで
妙な位置に割り付けられてると偉く面倒なわけで

出来ないわけじゃないが、面倒くさい

605:デフォルトの名無しさん
04/09/25 12:35:24
>>603
実際にハードじか叩きするコード書いたことない人間の発想だな。

606:デフォルトの名無しさん
04/09/25 12:41:20
>>605
>>603じゃないけれど、
2進数を16進数に一瞬で脳内変換できるくらいでないとダメだと思うよ。
実際、16進数で書いても2進数で書いてもほとんど変わらない。
でも、確かにポートのビットをOn/Offするのには2進表記の方が見た目に
直感的だとは思うけれど。

607:デフォルトの名無しさん
04/09/25 12:43:40
2進で書くと、何番目がたってるか目で追うのが逆に大変だったりとかない?

608:デフォルトの名無しさん
04/09/25 12:52:18
>>565
なんか単に感傷にしか聞こえないんですが。
じゃあお聞きしますが、仮想化・ブラックボックス化が不安というなら、
あなた自分の書いたコードの動作を固体物理学レベルで(w理解してないと不安に
なるんですか?

だってそうでしょ?
c処理系・機械語・ALUやメモリ・トランジスタ……
色即是空じゃないが、これ全部仮想化の産物ですよね。

609:608
04/09/25 12:56:06
X:>>565

○:>>595

610:デフォルトの名無しさん
04/09/25 13:05:58
>>605
>>606
直叩きするときに面倒だろ
直感的に分かり辛いと間違える馬鹿が必ず出てくる

611:600
04/09/25 13:48:24
>>実際にハードじか叩きするコード書いたことない人間の発想だな


 || 
 || × 0x3f284b74
 || ◎ 0011111100101000101101110100
 || 
 ||
 || 
 ||                           Λ_Λ  605
 ||                       \ (゜ー゜*) ハードじか叩きのキホンです。
 ||________________  ⊂⊂ |
    ∧ ∧    ∧ ∧    ∧ ∧    | ̄ ̄ ̄ ̄|
    (  ∧ ∧ (   ∧ ∧ (  ∧ ∧ |      |
  〜(_(  ∧ ∧ __(  ∧ ∧__(   ∧ ∧ ̄ ̄ ̄
    〜(_(  ∧ ∧_(  ∧ ∧_(   ∧ ∧  ・・・・・ホントっすか、先生・・・・
      〜(_(   ,,)〜(_(   ,,)〜(_(   ,,)
        〜(___ノ  〜(___ノ   〜(___ノ


612:デフォルトの名無しさん
04/09/25 13:53:58
漏れも16進の方が判りやすいや。>611見てそう思ったよ。
2進で書くならせめて、
0011 1111 0010 1000 1011 0111 0100
って書いてくれ。

613:デフォルトの名無しさん
04/09/25 13:57:05
00100000とするのと、20とするのとだと、後者の方が間違い難いと思う。
右にある5個の0を数え間違えたりするかもしれない。

614:デフォルトの名無しさん
04/09/25 14:01:15
605が窮地に追い込まれました

615:デフォルトの名無しさん
04/09/25 14:01:44
8bitの型までしかない処理系なんだろ。

616:デフォルトの名無しさん
04/09/25 14:03:50
autoconfで作ったconfigure走らせたらこんな感じのが出てくるのか?
char -> 1
short -> 1
int -> 1
long -> 1
float -> 1
doble -> 1

617:デフォルトの名無しさん
04/09/25 14:05:29
doble->double

618:デフォルトの名無しさん
04/09/25 14:08:13
0x7B
0b01111011

619:605
04/09/25 14:19:40
>>611
ワロタ
しかし、そのAAに描かれている発想そのものが、
はからずも600が「ハードを直叩きするコード」を書いたことが無いことを表していますな。

もっともコレ、実際にコード書いたことが無くてもちょっと想像力があれば
理解可能なことだとも思うけど。

>>608の話ともつながるんだが、(608も私だ)600の中ではメモリ上の「数値」
が仮想化の産物だって意識がないのだろう。

だから<数値>を「あえて」バイナリで表現することが馬鹿げたことに思える。

「あえて」2進数で表現したい時ってのはメモリ空間上にマップされた
ペリフェラルのレジスタビットとか、>>606も書いているポートを操作したいときなんかだね。
こういうものは数字に「写像」してしまうとかえって仮想化の有り難味が消えてしまう。

ロングワード長のビット操作対象のレジスタってのは普通はありえん。
仮にあっても、>>611のAA見たいにバイナリ32桁をずらずら書くなんてせず、
プリプロセッサつかって1バイトごと書く。

>>612
アセンブラなんかでは、
 B1010$0101
みたいに区切り文字を任意に入れられることが多いと思う。

620:デフォルトの名無しさん
04/09/25 14:48:43
gcc3.2だけど、ケンシロウ進数を使えるようにするパッチを書いたよ
ポイントは全角ひらがなと全角カタカナに対応したところ

621:デフォルトの名無しさん
04/09/25 14:52:16
ないよりあった方が便利じゃん。そこまで必死に否定するのはなぜ?
この手の議論では極端に走りがちだが、適材適所でしょ。

まあ実際には無いから使わないわけだが。処理系の拡張であっても使
わないと思う。でもHDLなら使う。32Bitでも。

622:デフォルトの名無しさん
04/09/25 14:53:18
ケンシロウ進数をHDLにも対応してください。

623:360
04/09/25 15:10:43
>>612
禿同

624:デフォルトの名無しさん
04/09/25 16:28:55
8bitより長い数値を二進数で書く気にはなれない。
分かち書きできるんなら16bit位までなら使ってみたいな。
マニュアル見ながらbit位置を直書きするときなんかに便利だと思う。
01ずらずら書いて後で16進に変換するのが面倒。

625:599
04/09/25 16:36:21
だってさ、マイコンの仕様書には、タイマーのイネーブルとかオーバーフローとかのビット説明が
7      6    5    4    3   2   1   0
TMR0 TMR1 T0OV T1OV T0EN T1EN   X   X
とかかいてあるわけじゃん。だったら例えばTMR1とT1ENをマスクしたい!と思ったときに
ボクは10111011 と一度メモに書いてから0xBBって改めてコーディングしていたわけだが、
このスレの皆様は上の様な場合に、『2進より先』に16進の0xBBっていうのが閃くわけですか。そりゃすごいや。





626:599
04/09/25 16:39:28
あ。失礼
あたあああたああ って書かないとわからない人もいるんでしたっけか?
こう書くとまた「ぷっ。ランレングス圧縮ケンシロウ記法を知らないのかっ!」っていうわけわからんヒトが出てくるからツーチャンネルはいやなんdせうよえs。


627:デフォルトの名無しさん
04/09/25 16:45:31
>>625
普通、defineして、~(TMR1|T1EN)とかしないか?

628:599
04/09/25 17:05:40
>>627
結局TMR1をdefineするのに
#define TMR1 0b01000000
って書いたほうがいいか
#define TMR1 0x40
って書いたほうがいいか

って事になりませんか?
無論、0bの使えない処理系でも
#define B0100_0000 0x40
って書くのは、ここ西九条でも大流行中の兆しです。


629:デフォルトの名無しさん
04/09/25 18:27:00
>>628
#define 0b01000000 0x40
って書いちゃったほうがよくない?できるかしらんけど。
#define あたたたたたた 0x40
でもいいけど

630:デフォルトの名無しさん
04/09/25 18:38:58
俺なんかは

#define HOGE 0x20 /* 0010 0000 */

とか書くよ。
回路図の配線と見比べるときとかはこっちのほうがわかりやすい。
配線の関係でビット位置変更とか良くあるから
2進表記があると便利だろうなとよく思う。

631:360
04/09/25 18:57:36
>>625
ビットフィールド使えばいいじゃん

632:デフォルトの名無しさん
04/09/25 19:24:17
0b0001001000110100 と書かれるより 0x1234 と書かれた方が
読み間違いが少ないな。
2進数と16進数の脳内変換が瞬時にできれば
どちらか一方を書かれても他方を連想できるので
どちらか一方だけでもいいんだけど
長い2進数表記は読み書きで数え間違いが起きやすいので
慎重に読み書きしなきゃならなくなってその無駄が嫌。

>>630
> #define HOGE 0x20 /* 0010 0000 */

0x20 を見た瞬間すぐに 0010 0000 を連想できるはずだから
そういうコメントは無駄だし邪魔。
コメントとコードの差違があるとバグが発見されにくいし
コメントがデバグの邪魔をするのは昔からよく起きてること。
連想できない人は鍛えるべきであって
過剰な甘やかしでそのチャンスを奪うので良くない。
自動車のブレーキペダルに「ブレーキ」ってラベル貼ってるようなもので
そりゃブレーキがどこか知らない人にとっては便利なラベルかもしれないが
そもそもそんな説明書きがないと分からない人がブレーキペダルを
操作しようとしてること自体おかしい。

#define ほ ((((((((0
#define あ <<1)+1
#define た <<1)
int main(){int i=ほ た あ あ あ た た あ た;/*0x072*/printf("%x\n",i);return 0;}


633:デフォルトの名無しさん
04/09/25 19:28:19
#define ほ ((((((((0L
#define あ <<1)+1
#define た <<1)
#define ー +
#define たーー! /**/

int main() {
unsigned long i = ほ ー ほ ー ほ ー ほ あ
あ た あ あ あ あ た あ た あ た あ あ た
あ あ た あ あ あ あ あ た あ た あ た あ
あ あ あ たーー!; /*0xdeadbeaf*/
printf("%lx\n",i); /* 牛はもうすでに死んでいる */
return 0; /* あた! */
}


634:デフォルトの名無しさん
04/09/25 19:42:10
#define げ ((((((((0L
#define あ <<1)+1
#define う <<1)+1
#define ー <<1)
#define ぼ +
#define ぬるぽ /**/
#define もうだめだ! /**/

int main() {
unsigned long i = げ ぼ げ ぼ げ ぼ げ
う あ ー う あ う あ ー あ ー あ ー あ う ー
あ う ー あ う あ う う ー あ ー う ー ぬるぽ
う あ う あ もうだめだ!; /*0xdeadbeaf*/
printf("%lx\n",i); /* 牛と一緒に俺も */
return 0; /* ぎゃー! やっぱ16進数の方が分かりやすい! */
}


635:デフォルトの名無しさん
04/09/25 19:49:01
ケンシロウ進数が一番分かりやすいですな

636:デフォルトの名無しさん
04/09/25 22:42:36
>>635
なんだその結論は

637:デフォルトの名無しさん
04/09/25 23:15:39
結局0bっていうのが通る処理系はマイナーなんですね?
GCCは通るみたいですが、あと通るのはナニ?


638:デフォルトの名無しさん
04/09/26 00:12:39
> > #define HOGE 0x20 /* 0010 0000 */
> 0x20 を見た瞬間すぐに 0010 0000 を連想できるはずだから
> そういうコメントは無駄だし邪魔。
そういう人がうらやましい。
おれは線を数えながら16進<->2進変換するのは骨が折れる。

> コメントとコードの差違があるとバグが発見されにくいし
> コメントがデバグの邪魔をするのは昔からよく起きてること。
だから処理系に2進表現が欲しい

639:デフォルトの名無しさん
04/09/26 00:23:17
>>638
結局は経験数なんだよね…
長い間組込みとか制御とかやっていると、同じようなシーンに遭遇するから
自然と覚えてしまう。。

640:デフォルトの名無しさん
04/09/26 00:23:29
>>638
16パターンくらい覚えろ
今日は
0x7  0111
0xA  1010
この2つ覚えろ。覚えるまで寝るな。

641:360
04/09/26 01:13:18
>>638
昔は、同じように思ったけど
いまは、16進が自然に出てくる
車のナンバー見て、なんの苦もなく2進が浮かぶよ
まだ10進−16進はでないけどね


642:デフォルトの名無しさん
04/09/26 01:31:49
>>640
そんなん二十年前に覚えてるってば。
テスターを線に当てながら、
「0はH、1はL、2はL、3はH…」とかやりながらソース見たときぱっとわかるかってこと。

643:デフォルトの名無しさん
04/09/26 01:54:49
そりゃもう頭が退化してるな

644:デフォルトの名無しさん
04/09/26 02:01:01
うん、そうかも。
恥ずかしながら、よくBとDで0の場所間違うし…
けど、一度0と1を頭の中で並べないと16進変換できないから面倒なんだよな。

645:デフォルトの名無しさん
04/09/26 02:18:11
>>640
おまえ、全然わかってないな。
タイマーの制御レジスタみたいに、元がビット列で表されているモノは、そのまま2進数で表せるなら、2進数のままの方が自然だという話だ。
それをいかに早く脳内変換できるか、なんて威張っているのは「変換」という言葉を使った時点で負けなんだよ、負け負け。
なぜなら変換する必要がないからだ。16進数に直す必然性なんか全然無い。

それならお前は、1から100までのループをするときに
for (int i=1;i<=0x64;i++){
って書くのかよ(ぷげあ) 

100回回したかったら
for (int i=1;i<=10;i++){

って書くだろうが。

元が2進なら2進。10進なら10進。16進なら16進で書けるなら書けということだ。



646:デフォルトの名無しさん
04/09/26 02:22:24
つっか、2進表記が出来ないアセンブラなんて無いだろ?必要だからあるんだ。
組み込みに使うCで2進表記の出来ないCなんて無いだろ? 必要だからあるんだ。
組み込み言語だったら、BASICだって2進数使える炉


647:360
04/09/26 02:41:20
>>645
いちお、コードを脳内変換して読みました。

648:デフォルトの名無しさん
04/09/26 03:33:15
>>588
> 状態遷移表を使ってる人っている?
> あとそれをサポートするCASEツールを使っている人とか。

状態遷移表で表現できるのって、入力と内部状態の点数がそれほど多くない場合だけでしょ?
何点くらいまでの入力と内部状態を扱ってる?

649:デフォルトの名無しさん
04/09/26 04:02:02
>>648
>状態遷移表を使ってる人
サブルーチンみたいに
理解しやすいレベルまで入力と状態をまとめるのだよ


650:デフォルトの名無しさん
04/09/26 04:24:15
about:blank
これがエクスフローラ開くとどうしても最初に立ち上がってしまう
これって治せるのかな?


651:デフォルトの名無しさん
04/09/26 05:42:47
こんなとこにまでマルチポストすんじゃねえ!ハゲ

652:デフォルトの名無しさん
04/09/26 10:32:14
>100回回したかったら
>for (int i=1;i<=10;i++){
>
>って書くだろうが。

 あ、出た・・・・・・ ロン


653:デフォルトの名無しさん
04/09/26 11:58:44
>>652
実は100進数の処理系でした。とか。


654:デフォルトの名無しさん
04/09/26 12:00:09
>>650
blazefind にいって、blazefindツールバーをインストロロールすれば解決するよ。


655:デフォルトの名無しさん
04/09/26 13:49:24
>>637
そのgccは改造されている。

gccの拡張仕様で0b対応という動きは昔からあるようだが、
何故かいまだに採用されないらしい。


656:デフォルトの名無しさん
04/09/26 16:12:10
>>655
そか。GCCだったら0bが使えるってわけじゃないんですね。
組み込み用のGCC-H8とかだけなんかな?


657:デフォルトの名無しさん
04/09/26 16:55:27
どうでもいいよ、そんな事。

658:デフォルトの名無しさん
04/09/27 15:44:18
>>656
(OДO)ψ <そのgccは改造済みだったんだよ!

659:デフォルトの名無しさん
04/09/27 22:34:14
gccか・・・展開効率悪くないですか?
純正メーカー製 買ってくらさいよう・・・・

      _, ,_
     (`Д´ ∩ < ヤダヤダ、gccなんてヤダー!
     ⊂   (
       ヽ∩ つ  ジタバタ

660:デフォルトの名無しさん
04/09/28 01:00:49
>>659
高卒の製造課上がりのゴマスリ野郎が技術部長をやっている、うちの会社ではタダより有難いものはございません。アリガタヤアリガタヤ。


661:デフォルトの名無しさん
04/09/28 07:22:37
どうせデバッグはgdbですよ

662:デフォルトの名無しさん
04/09/28 07:41:57
gdbこそ、真のデバッガー。

663:デフォルトの名無しさん
04/09/28 09:37:17
何故、雑誌「Interface」にはCDROMが付かないのだろうか>49出版社よ。
ソースが載ってた場合、手打で入力ですか。そうですか。


664:デフォルトの名無しさん
04/09/28 09:42:12
>>659
gccの展開効率が悪いって言ってる奴は、
Optionの指定が足りてない。

665:デフォルトの名無しさん
04/09/28 09:43:51
俺は>>660が何を言わんとしてるのかよくわからん。

666:デフォルトの名無しさん
04/09/28 09:46:42
>>663
なんでInterfaceのサイトからダウンロードしないの?

667:デフォルトの名無しさん
04/09/28 09:55:43
>>666
あ、サイトですか。
っていうか、いつも全てのソースを載せているんだっけ?

668:デフォルトの名無しさん
04/09/28 11:33:55
40ページにも及ぶダンプを手入力していた昔を振り返れば
たかが数ページのソースなどたやすいものよ

669:デフォルトの名無しさん
04/09/28 12:22:51
>>664
どんなOption指定してますか?

これ制御系でgcc使ってるみなさんに聞いてみたいな。


670:デフォルトの名無しさん
04/09/28 15:34:45
面倒だから-O2で終了
人間が最適化した方が気が楽

671:デフォルトの名無しさん
04/09/28 15:37:09
エレベータがあるのに階段で行った方が気が楽だ、と言っているようなもの。
そしてその人はエレベータのボタンの押しかたが解からないんだって。

672:デフォルトの名無しさん
04/09/28 15:50:13
>>671
何階上がるかにもよると思うけど
それよりもたまには歩いて登った方が健康にいいYo


673:デフォルトの名無しさん
04/09/28 19:26:58
>>638
16進が簡単にマスター出来ると思ってるのが間違いだ。
お前は小学校の時何を習った?九九だろ?九九をやり、四則演算を浴びるほどやったはずだ。
だからお前は10進数をすんなり使いこなせてるんだ。
16進を極めたいのならまずFFをやれ。ファイナルファンタジーじゃないぞ。

   1  2  3  4  5  6  7  8  9  A  B  C  D  E  F
1  1  2  3
2  2  4  6
3  3  6  9
4  4  8  C
5  5  A  F
6  6  C 12
7  7  E 15
8  8 10 18
9  9 12 1B
A  A 14 1E
B  B 16 21
C  C 18 24
D  D 1A 27
E  E 1C 2A
F  F 1E 2D

4の位からはお前が作れ。そして暗唱しろ。毎日だ。1ヶ月かけてもいい。ゆっくりでいい。
あとは・・・分かるな?

674:デフォルトの名無しさん
04/09/28 19:56:02
>>673
ステキ


675:デフォルトの名無しさん
04/09/28 20:20:43
>>673
>16進を極めたいのならまずFFをやれ。ファイナルファンタジーじゃないぞ。
不覚にもワロテしまった。

676:デフォルトの名無しさん
04/09/28 20:24:14
私はファイナルファンタジーかと思って突っ込もうかと思ったけれど
先手を打たれた

677:デフォルトの名無しさん
04/09/28 21:00:25
インド人は22X20の九九を覚えているというから
FFも余裕なんだろう。

678:デフォルトの名無しさん
04/09/28 21:11:58
いーいーがしーじゅうよん
いーえふがでぃーじゅうに

679:デフォルトの名無しさん
04/09/28 21:14:39
>>678
いーいーがしーじゅうろくよん
いーえふがでぃーじゅうろくに
じゃ?


680:デフォルトの名無しさん
04/09/28 22:24:24
おまえらここをネタスレにするつもりかw

681:デフォルトの名無しさん
04/09/28 22:58:32
FFに慣れたら、次はVV(32進数)がいい。
そして最終的にはxx(60進数、1〜9、A〜Z、a〜x)を目指して欲しい。

60進数のメリットは時計だ。
何と分の単位が必要なくなるんだ。いきなり1時7u秒とかが使える。
これは便利すぎる。

682:デフォルトの名無しさん
04/09/28 23:23:13
ネタにマジレスかっこいいわけですが、例えば、0xceに、1のビットがいくつあるか、また、bit6とbit3がが立ってるか寝てるかを即座に答えられるヤツはエライと思います。
だから二進でかけるならかけたほうがいいです。っていうか、アセンブラだったら書けるんだからCで書けないほうが元々不自然。



683:デフォルトの名無しさん
04/09/28 23:29:31
論理演算するときは2進表記のほうがらくだな〜おれは

684:デフォルトの名無しさん
04/09/29 00:03:27
>>682
ビット数くらい即答だろ?
0-0 8-1
1-1 9-2
2-1 a-2
3-2 b-3
4-1 c-2
5-2 d-3
6-2 e-3
7-3 f-4
これ覚えるだけじゃん。規則性はあるし、使っていれば嫌でも覚える。


685:デフォルトの名無しさん
04/09/29 00:16:14
いつまでつまらない話題でレスするつもりだ

686:デフォルトの名無しさん
04/09/29 00:19:18
16進は割と直感で分かるが、8進は悩まんか?

687:デフォルトの名無しさん
04/09/29 00:21:17
8進数は使用頻度が低い

688:デフォルトの名無しさん
04/09/29 00:35:28
>>687
そりゃ、自分じゃ書かんが
LAPBの古いコードをメンテしてるとき
テーブルが8進で書かれてて泣きたくなった

689:デフォルトの名無しさん
04/09/29 00:39:15
>>688
エディターにコピペしてちょちょいと書き直すべし

690:デフォルトの名無しさん
04/09/29 00:48:24
16進数に対する数値的感覚が養われてないからだよ。

7*Eを即答出来る奴いないだろ?
それどころか8*7を16進数で"数秒で"即答出来る奴もいないだろ。

まじでFFやっとけ。これ結構便利だぞ。
2*8=10とかの場合は、"にはちいちぜろ"と読むようにすれば、九九とも被らないしな。

2進数変換はまた違う話になるが。

691:デフォルトの名無しさん
04/09/29 01:08:38
> それどころか8*7を16進数で"数秒で"即答出来る奴もいないだろ。

数秒かけて答えられるのか、それとも即答できるのかの違いがありそうだが、
それを数秒で答えられないのはまずい。7を左3シフトするだけだから。

> 7*Eを即答出来る奴いないだろ?

これも類似問題。
0x0e*(8-1)だから
0x0e=0b1110を左3シフトして
0b1110000。
そこから0x0e=0x1110を引いて
0b1100010=0x62。

こういう16進数2進数ソロバンが脳内で動いて数秒以内に答えを出すのが普通。
できないならこの業界に向いてない。

> まじでFFやっとけ。これ結構便利だぞ。

これ正解。数秒かけて脳内ソロバン動かすより速くて正確。
DQよりFFの方が勉強になる。

692:デフォルトの名無しさん
04/09/29 01:14:35
いーびーがきゅーえー
いーしーがえーはち
いーでぃーがびーろく
いーてぃーがかむほーむ
えふしーがびーよん
えふでぃーがしーさん
えふいーがでぃーに
えふえふがはつばい

693:デフォルトの名無しさん
04/09/29 06:46:12
おまいらちゃんとしごとしろ

694:デフォルトの名無しさん
04/09/29 07:54:09
>>691
意味無いことにアタマ使うな。
意味無いことがスキなら、おまえらCもアセンブラも使わず、機械語(死語)で直接書け。


695:デフォルトの名無しさん
04/09/29 09:36:26
FFはマジで便利だな
ケンシロウ進数の次に便利だ

696:デフォルトの名無しさん
04/09/29 23:50:58
>>628
#define TMR1 (1<<6)
俺はこんな調子だなー。
でもワード幅が増えたとき (1<<18) とか (1L<<31) なんて書いて失敗したり。
(1L<<18) (1UL<<31) じゃないとシフトアウトして…

697:デフォルトの名無しさん
04/09/29 23:52:34
>>694
人間は全員が知能指数同じではないので。
算盤の名人なんか数桁の掛算を悩まず即答するし。
694にとって難しいことでも
他の人にとって簡単なことも世の中にはある

698:デフォルトの名無しさん
04/09/30 09:06:21
>>697
そんなに0b記述が必要ない って言い張るのなら、
googleで
0b01 + 0b1101 =
が計算できるのを、どう言い訳するんだ?


699:デフォルトの名無しさん
04/09/30 09:10:50
nibbleマクロとかそれを使ったnibble2,nibble4マクロなんかを使っています。

700:デフォルトの名無しさん
04/09/30 12:05:36
必要ないなんて主張している奴はいなくて、
今までなしでやってきたしなくてもなんとかなるんだから
余計な仕様増やすなと思ってるだけかも。
#つーか私はそうだが。

701:360
04/09/30 12:33:54
ビットに意味付けが欲しいなら、ビットフィールドでやればいいし
そうでなければ、16進で事は足りてる。
ま、あればあったで別にかまわないけど。

702:デフォルトの名無しさん
04/09/30 15:00:08
あった方が便利だから付け加えて欲しい。
その前に、どうしようもないコンパイラをまともにしてくれるほうが先だが>そのへん

703:360
04/09/30 15:26:31
実は、コンパイラにさえ、さほど不満がないオレって..........orz
昔の日立のには確かに不具合があったけど。。

704:デフォルトの名無しさん
04/09/30 18:42:44
ご迷惑をおかけします。
でもバグのないコンパイラを作るのは本当に難しい…。
2進サポートくらいなら、そんなにバグはでないと思いますが。

705:デフォルトの名無しさん
04/09/30 21:20:28
他スレから誘導されたのでこちらで質問させて下さい。
Linuxでシリアル通信を行うプログラムを作成しているのですが、どうしても
データの取りこぼしが起こってしまいます。いろいろ調べた結果データ欠損
の対策として

・low_latencyフラグを立てる
・受信トリガレベルを1バイトに設定し1バイト受信毎に割込みを発生させる

という方法がある事が分かったのですが、肝心のプログラムへの実装方法が
全く分からず困っています。どのように実装すればいいのでしょうか?
ちなみに通信チップは16550Aです。よろしく御願いします。

706:デフォルトの名無しさん
04/10/01 00:12:39
>>704
2進をサポートしたら、0xb0が0になっちまってごめん。テヘ。 ってな記述が苺リナックスに描いてなかったっけ?


707:デフォルトの名無しさん
04/10/01 00:50:43
>>706
当社マイコンボードに付属しているgccの2進数パッチにバグがありました。
gcc-3.4.0+2進パッチが含まれているCDが対象で、以前のgcc-2.95.xは今回の対象ではありません。
gccのバージョンはh8300-hms-gcc -vで確認できます。2進パッチの問題で、0xb0,0xb1を記述すると0になってしまうという単純なミスでした。
申し訳ありませんが、こちらをお使いくださいますようお願いいたします。


708:360
04/10/01 10:31:43
>0xb0,0xb1を記述すると0になってしまうという
これは、さすがに困るが、、、
いままでほとんどコンパイラのバグにあったことがない。
それ以前に自分のプログラムに問題がある(w
というか、初めて使った日立のコンパイラがあまりおりこうでなかったので
計算式を1行でやらせないとか、なるべく複雑なことをしないようにしている
最適化もしてないし、速度を要求するところはASMで書くし
(それで済むような仕事であったりして)
ハードから、なるべく余裕のあるようにしてごまかしてる

709:デフォルトの名無しさん
04/10/01 12:28:24
バグなのか仕様なのかわかんないけど
SH系のコンパイラで以下のような現象があった。

sub(123, 456.789);
//関数subを整数123、実数456.789を引数にして呼び出す

//パターン1
sub(int a, float b){
printf("a=%d,b=%f\n", a, b);
}
実行結果「a=123,b=0.0」

//パターン2
sub(a, b)
int a;
float b;
{
printf("a=%d,b=%f\n", a, b);
}
実行結果「a=123,b=456.789」

710:デフォルトの名無しさん
04/10/01 14:16:18
>>709
それはANSIの仕様だね。
sub()の呼び出しの前にプロトタイプ宣言すれば、逆にパターン1が正しい結果となるはず。



711:デフォルトの名無しさん
04/10/01 14:26:34
二重ループにif文くらいのソースで最適化とデバッグオプションつけると
デバッグ情報が無効になるコンパイラには難儀した。
最適化オプション抜いたやつが吐き出したコードをアセンブラレベルで手直ししたら
実行時間が1/7になったのには脱力。

712:デフォルトの名無しさん
04/10/01 15:21:05
Cは便利なんだけど、(BYTE)dat とか、のデータ長拡張の時のアレとか
割り込みのフラグが最適化ではじかれないようにvolatileつけるとか、
余計な事も覚えなきゃならんのよな。


713:デフォルトの名無しさん
04/10/01 15:37:13
>>705
>low_latencyフラグを立てる
URLリンク(www.humblesoft.com)

>受信トリガレベルを1バイトに設定し1バイト受信毎に割込みを発生させる
ドライバ書き換えしないと駄目かも?

714:デフォルトの名無しさん
04/10/01 16:22:44
>>705,>>713
>受信トリガレベルを1バイトに設定し1バイト受信毎に割込みを発生させる
ioctl使えばいいじゃん。

715:デフォルトの名無しさん
04/10/01 16:44:28
>>705 たかが(失礼)シリアル通信ぐらいで、そんなにシビアなタイミングが
必要になるのかなあ? 普通に/dev/ttyS?経由じゃダメ?

716:デフォルトの名無しさん
04/10/01 17:20:44
>>705
だからioctlで全て解決するだろーが。
まず、初期化ルーチン内でioctlを使用して初期化して、
main loopでselectでcheckして、データ来たら1byte単位でreadすると。
お仕事がんばれよ。>>705

717:デフォルトの名無しさん
04/10/01 17:22:21
ハードウェアフローには出来んのか?

718:705
04/10/01 21:12:28
>>713
情報有難うございます。これでlow_latencyフラグを立てる事が出来そうです。

>>715
LinuxシリアルHowTOなどを参考にして普通に/dev/tty経由で送受信してるのですが
数回に一度ぐらいの割合でデータの欠落が起こってしまいます。

>>717
ハードウェアフロー制御を行わせるためにtermios構造体のc_cflagにCRTSCTSを
指定しています。後はハードウェアが勝手にフロー制御を行ってくれると解釈して
いるのですがプログラム中で明示的にRTS信号のON・OFFを行う必要があるのでしょうか?

FIFOの割り込みトリガレベルの調整方法は制御レジスタをいじる方法をネット上で見つけたので
試してみる事にします。


719:デフォルトの名無しさん
04/10/02 09:11:51
>>718
ハードウェアは自動的にフロー制御はしないけど、
ドライバが制御してくれるはず。

相手が何か知らんがCTS/RTSを見てないとかは?

720:デフォルトの名無しさん
04/10/02 11:59:41
CTS-RTSはとにかくつなぐ
なにかあったらとにかくつなぐ

721:デフォルトの名無しさん
04/10/02 12:09:36
先生! メーカー純正ケーブルがCTS-RTS繋がってません。
クロス仕様で専用コネクタなんで手も出せません。
#いや、マジであったんですよ_/ ̄|○

722:デフォルトの名無しさん
04/10/02 12:46:39
↑ 自分でつなげばいーじゃん?

723:360
04/10/02 13:02:49
>>722
モールドしてあるからつなげないんじゃないのかな
というか、それ以前に、
メーカー純正ケーブルなのに、そうなっているのが信じられんし、
専用コネクタなんで手も出せない。
って、そのままの意味なんじゃないでしょうか?

724:デフォルトの名無しさん
04/10/02 13:29:06
テスター当てて結線図を書いたら
ケーブルを真ん中で切断ですよ

725:デフォルトの名無しさん
04/10/02 13:42:49
>721の実際に私が遭遇したケースでは、客先(ソフト部隊)経由でハード部隊に報告、
ケーブルの仕様変更ということになって作り直しに半月かかった。
#実はその間に慌ててプログラムの割り込み周りのバグを直したのは内緒。

726:360
04/10/02 13:46:10
>>724
仕事によっては許されませんね。

727:デフォルトの名無しさん
04/10/02 15:06:59
>>705
相手もPCなのか?
PCじゃなかったら相手が半二重だったりすることがあるぞ


728:デフォルトの名無しさん
04/10/02 17:17:50
>>726
俺が許す
気にすンなッて

729:デフォルトの名無しさん
04/10/02 18:39:54
>>726
客にバレなきゃいいんだよ。どうせ客なんてセッティング中は見に来ないだろ?

730:360
04/10/03 00:21:19
>>729
原発とか、そういう作り方でもいいですか?許してくれますか?

731:デフォルトの名無しさん
04/10/03 01:13:03
>>730
北チョンの原発ならOK

732:デフォルトの名無しさん
04/10/03 17:42:38
>>730
まず切ることを報告し、切った後問題を修復し、修復後チェックし、問題ないことをまた報告
原発だろうとなんだろうと同じだろ

733:360
04/10/03 17:54:16
>>732
「報告」と「チェック」がどの程度のことかわかりませんが
原発じゃないにしても、私のクライアントだと
通常の基準で言えば、不合格になる可能性大です。

734:デフォルトの名無しさん
04/10/03 21:10:34
うちの顧客は自動車メーカー。
めちゃくちゃ細かい。
そんなところまでチェックするなら、自分で書けよと言いたい。

735:デフォルトの名無しさん
04/10/03 21:17:11
>>734
ミツビシでは無いね

736:デフォルトの名無しさん
04/10/03 21:18:59
最近多品種少量生産だから、品種替えなんかが多くてソフトが面倒くさい。


737:デフォルトの名無しさん
04/10/04 00:21:19
>>735
三菱はノーチェックだろw

738:360
04/10/04 04:11:23
>>732
もしかして関電系だったりして(笑
通常、その工事手順をふむよりきちんとしたものを製作したほうが早いです。

739:デフォルトの名無しさん
04/10/04 19:20:30
>>705
シリアル通信関係のテストで問題が起きた時は、通信モニタがあれば9割方解決出来る。

ってことで通信モニタ買って来い。

740:デフォルトの名無しさん
04/10/04 19:33:09
>>739
技術評論社のCCT-98IIでよろしいでしょうか?


741:360
04/10/04 20:23:59
>>740
モニタっていったら「みえちゃん」でしょ(w

742:デフォルトの名無しさん
04/10/04 23:02:28
>>741
○ッツの回し者キターッ!




その節はお世話になりました orz

743:360
04/10/05 01:17:15
>>742
回し者じゃないけど。ほんと、元をとりました。これがないと始まらない
電池がダメになったので、一度はメーカで交換、
2度目は、自分で単三のNi−MH電池に交換しました。
古いので19200までしか見れません、デバッグ中と実稼動でbpsを変えてごまかしてきました
そろそろ新しいのにしないと。。。
セキスイのも悪くないけど、みえちゃんは"惜しげない"感じがイイ

744:デフォルトの名無しさん
04/10/06 07:30:25
開発環境のeclipseってどうよ

745:デフォルトの名無しさん
04/10/06 12:44:05
>>744
javaの環境のこと?
あまり組み込みと関係ないような希ガス

746:デフォルトの名無しさん
04/10/06 20:23:57
eclipseはいいね。
ただ起動が糞長いのをなんとかしてくれ。
つっても学生の頃の卒業研究以来使ってないけど。

>>745
別にeclipseはjavaに限った環境じゃないだろ。

747:デフォルトの名無しさん
04/10/06 23:18:48
>>746
しかしJAVAのイメージが強いのも事実。

748:デフォルトの名無しさん
04/10/07 09:15:40
そんなことない、君の視野が狭いだけ。

749:デフォルトの名無しさん
04/10/07 09:32:07
広い視野で見ると、やっぱり世間的にはJavaのイメージが強いと思う。

750:デフォルトの名無しさん
04/10/07 12:53:00
本屋に行けば、Javaばかりだよ
もっとも組み込みの本自体少ないけど

751:デフォルトの名無しさん
04/10/07 13:44:11
eclipseのCDTは超ショボいので結局Java目的にしか使えない。

752:デフォルトの名無しさん
04/10/07 18:36:37
徐々に良くなってはいるよ >CDT


753:デフォルトの名無しさん
04/10/07 18:45:43
C++でecripseつかうくらいならVS使うよ

754:デフォルトの名無しさん
04/10/07 18:46:21
でもemacs一つで十分だったりもする

755:デフォルトの名無しさん
04/10/07 19:44:45
でも、UNIX環境じゃなかったりする

756:質問ちゃん
04/10/07 20:40:56
タブプラウザってありますよね。
あれを起動してから複数のhtmlファイルを窓上に
ドラッグすれば一気に読み込めますよね。

その複数のhtmlファイルがCD-R内のパスの定まった
フォルダ内においてあるとして
CDいれるとオートランで自動的に
タブプラウザでそのフォルダ内のhtmlファイルを全て読み込んで
立ち上がるにはどうすればよいのでしょうか?



757:質問ちゃん
04/10/07 20:43:56
タブプラウザは自分ではつくれないので
できるだけ既存のものがいいです。
機能としてはIEコンポーネント本体とタブと最大化機能さえあれば十分なのですが・・

758:デフォルトの名無しさん
04/10/07 20:44:21
>>757
ここを何のスレと思ってるんだ?

759:質問ちゃん
04/10/07 20:46:26
スレ違いだったら誘導していただけるとありがたいです

760:デフォルトの名無しさん
04/10/07 20:48:17
断る

761:デフォルトの名無しさん
04/10/07 23:01:41
何故このスレで質問しようと思ったのかを聞きたいな
制御系なら俺に聞いてもいいぜ
       ~~~~~~~~~~~~~~~~~~~~ここしか見てなかった?

762:デフォルトの名無しさん
04/10/07 23:14:54
組み込みJAVAはこれからどうなりますかね。
メーカーは変則的ガベージコレクションでリアルタイム性を確保しようとがんばっていますが。


763:デフォルトの名無しさん
04/10/07 23:19:25
携帯&JavaでFFやドラクエできる時代だからなー
GUI必要な場所ならtronのみやCEよりはラクそうだな

764:デフォルトの名無しさん
04/10/07 23:20:15
見やすい状態遷移図の書き方教えてくれ……

765:デフォルトの名無しさん
04/10/07 23:31:08
>>763
x 携帯&JavaでFFやドラクエできる時代だからなー

○「すごいな。携帯でFFやドラクエが出来る時代なのか。 さすが21世紀はすげえや。透明チューブの中をエアカーが疾走するのはまだか?」

766:デフォルトの名無しさん
04/10/07 23:37:29
>>765
馬鹿かお前

767:デフォルトの名無しさん
04/10/07 23:56:08
>>766
コピペにマジレスっすかお前

768:デフォルトの名無しさん
04/10/09 12:57:45
>>767
コピペなら常に馬鹿に該当しないと思い込んでる馬鹿

769:デフォルトの名無しさん
04/10/10 09:36:18
必死な人がいる

770:デフォルトの名無しさん
04/10/10 23:27:07
ひねくれた人がいる

771:デフォルトの名無しさん
04/10/11 00:24:18
>>765-770
お前等ウゼー
くだらねー煽りあいなんて他所でやれ

772:デフォルトの名無しさん
04/10/11 15:01:34
真偽値 ってTRUEとFALSEだよね

トライステートつーかいわゆるZ状態を扱うときは
boolではなく 何で表現すればいいのかな
n>0, n==0, n<0 あたりでいいかな?

みんなはどうしてる?

773:デフォルトの名無しさん
04/10/11 15:03:32
いちおう
n>0 真(TRUE)
n==0 不明(z)
n<0 偽(FALSE)
みたいな感じ。これなら if(n)で不明かそうじゃないかわかるし。
あと、TRUE,FALSEに相当する定義はなにがいいの?

774:デフォルトの名無しさん
04/10/11 15:41:24
Zとtrue/false かな つまり1bitZかそうでないかを追加してそっち優先にすると



775:デフォルトの名無しさん
04/10/11 16:48:20
Zってハイインピーダンスのことじゃなかったの?

776:デフォルトの名無しさん
04/10/11 18:54:46
Zはハイインピーダンスだよ。普通は。
不明はXかUだろ。

777:360
04/10/11 20:06:41
>>772
わたしだったら
TRUE/FALSEを使うと BOOLと混同するから
英語として正しいかどうかはわからないけど
VAL_HIGHER / VAL_EVEN / VAL_LOWER とか定義して
少なくとも TRUE/FALSE は使わない

778:デフォルトの名無しさん
04/10/11 22:03:41
プルアップかプルダウンしてれば不明にはならないから何も問題はない。と

779:デフォルトの名無しさん
04/10/11 22:03:50
>>776
ごめん

780:デフォルトの名無しさん
04/10/11 22:07:44
>>774
2ビット使って
00 多分 偽
01 多分 真
10 間違いなく 偽
11 間違いなく 真
こんな感じ?

781:デフォルトの名無しさん
04/10/11 22:17:53
ミツトヨのリニアゲージからのデータを取り込みたいのですがデジマチック出力しかありません
出力信号はDATA(測定データ出力端子)とCK(同期クロック)とRD(データレディ)があるのですが
どのようにやり取りしていいのかさっぱり・・・

参考になりそうな書籍やサイトがありましたら教えて下さい
これってシリアル通信関係を勉強すればどうにかなりますか?

スレ違いなら申し訳ありません

782:デフォルトの名無しさん
04/10/11 22:28:59
>>781
ミツトヨには聞いてみたの?

ミッちゃんの俺様フォーマットだから少なくとも本はないと思う。
たぶんデータ吐き出すタイミングでRDがアクティブになるんで
それに答えてREQをアクティブにしてやるとデータ送信が開始されるって
感じだと思う。

783:デフォルトの名無しさん
04/10/11 22:44:40
URLリンク(www.nio.co.jp)


784:781
04/10/11 23:37:56
>>782
どうもです
一応聞いたんですが資料を1枚くれただけでした・・・
詳しい人ならそれだけでもわかるのかも知れませんが。
もうちょっと聞いてみます

>>783
どうもです
この手のでお茶を濁そうとも思ったんですが、アクチュエータ付きのリニアゲージを使ってて、ボタンなどを押さずに任意の位置で測定しないといけないのでダメっぽいのです・・・


785:デフォルトの名無しさん
04/10/12 08:30:30
VHDLには弱いHighとかもあって、
信号状態は9種類用意されていたと思う
でも、きちんとプルアップ/ダウンされていれば、使い道ない気がする

786:デフォルトの名無しさん
04/10/12 19:48:28
私H/L/出力オフでしか考えてなかった

787:デフォルトの名無しさん
04/10/13 00:46:29
ローアクティブとハイアクティブとあるからにゃ
気をつけないとにゃ

788:375
04/10/15 11:16:35
制御系と組み込み系は、一般に給与はどうなんですか?
組み込みは薄給だと聴いたことがあるんですが

789:デフォルトの名無しさん
04/10/15 11:23:03
薄給す

790:デフォルトの名無しさん
04/10/15 11:23:19
お金の話しですいません。お金を儲けたいと思ったので。
もし場違いな質問になってしまってたら、どうぞスルーして下さい

791:デフォルトの名無しさん
04/10/15 11:25:36
>>789さん ほんとすか。。正直ちょっと残念です。レスありがとうございます

792:デフォルトの名無しさん
04/10/15 12:48:32
>>791
我が社では業務系と制御系で給与体系に差はありません。
#尤も、業務系のほうが金になるので有利になるのは事実。

793:デフォルトの名無しさん
04/10/15 13:30:39
>>792
*できる*制御系の奴であれば、替えが効かないので差があってもいいと思うのだが。
どちらかと言うと業務系の方が、替えの効く奴が多いと思う。

794:デフォルトの名無しさん
04/10/15 13:33:28
*できる*人材不足はどこもいっしょと思うなぁ
こんだけやってもギャラおんなじどころか、わりにあわな、、、ここはム板だっけ

795:デフォルトの名無しさん
04/10/15 13:45:18
制御系な奴の価値が低いのが問題なんだよ。
開発サイクルから言うと業務系の方が短いからかな。
やってる内容は濃い場合が多いんだけど>制御系

796:デフォルトの名無しさん
04/10/15 14:25:05
>781
リニアゲージの入力端子と、リニアゲージからの入力端子の種類が書いてないけど?


797:デフォルトの名無しさん
04/10/15 15:34:13
>>792氏 そうですか。レスありがとうございます。とりあえず僕は、今週末の基情受けてきます。またきます

798:360
04/10/15 15:47:16
金に関しては、医療関係の業務系は特にいいですね、
ヒマだし、金はいいし、納品先は白衣だし(w

制御系は、好きじゃないとやってられない。

799:デフォルトの名無しさん
04/10/15 16:04:41
白 衣 が で す かw

800:デフォルトの名無しさん
04/10/15 16:28:30
中身は黒だ

801:デフォルトの名無しさん
04/10/15 22:46:17
白衣系は、好きじゃないとやってられない。


802:デフォルトの名無しさん
04/10/16 00:43:05
ホールピペットが恐い。
化学よくしらないけれど。

803:デフォルトの名無しさん
04/10/16 01:10:00
>>801
白衣が?

804:デフォルトの名無しさん
04/10/17 01:56:41
m16使ってるんですが、16bitCPUは初めてでよくわからないことだらけです。
RAM領域がFFFF超えたらどうなるんでしょう・・・?
アドレッシングは出来るみたいですけど
宣言とかがFFFFまたがっても大丈夫なんでしょうか?

アセンブラの命令だとストリング転送は
32ビットアドレッシングがサポートされてなくて
領域の初期化ができねぇ・・・・。

805:デフォルトの名無しさん
04/10/17 03:10:24
>>804
スレリンク(tech板)


806:360
04/10/17 10:56:19
>>804
今マニュアルをダウンロードして見たら、データバスが16/8bitで、アドレスバスは24bitのようですけど


807:デフォルトの名無しさん
04/10/17 11:30:19
>806

M16は、16ビット超のアドレスをアクセスするのは、別のアドレッシングモードを
使う必要がある。 C言語だと、宣言に far を使う必要があるんですよ。

使い方は、よく知らないんで申し訳ない。OAKSの16-MINIっていうM16CTinyを
使ったキットで遊びはじめたばかりなんでまだ良く分かっていない。

Tinyの場合、16ビット超にはRAMはないんで、初期化データの宣言とか、そのデータを
使う変数とかが、宣言の対象になると思う。

マイナーなキットだけど使いやすい。5000円くらいでシリアルケーブル以外、電源も
付いている。開発環境も、最適化ができないだけで、ソースデバッギングもできる。

H8みたいに色々開発環境があるよりは、使えるのが1つあるほうが分かりやすい。

808:デフォルトの名無しさん
04/10/17 12:15:47
おいおい、開発環境は純正を買ってくれないとわが社の利益(ry

809:デフォルトの名無しさん
04/10/17 19:11:03
>>807
farとか86みたいだな
セグメントになってるの?
なんだか使いにくそう

810:デフォルトの名無しさん
04/10/17 19:37:26
アドレッシングモードだって言ってるじゃん。。
しかしM16ってウルトラマンの巣かスタローンが脇に抱えて乱射しそうな名前だねえ。

811:デフォルトの名無しさん
04/10/17 19:48:14
M16C

812:デフォルトの名無しさん
04/10/18 07:22:30
M16Cは素直なイイ子だよ。 

813:デフォルトの名無しさん
04/10/18 23:07:10
M16について質問したものです。
farに関して勘違いしてました。
386みたいにセグメントからのオフセットでアドレッシングしているのでは
なくてfarかnearかでマッピング位置が決まるみたいですね・・・・。
しかしストリング転送命令はnearしかサポートしていないようで
far宣言の初期化に使うこと自体が間違いのようでした。




814:デフォルトの名無しさん
04/10/19 00:06:59
>813

farかnearかでマッピング位置が決まるんじゃないよ。関数はfar とか
ディフォールトの設定がある。

そもそも、C言語を使うのなら スタートアップのncrt0.a30 の中でfar領域も初期化
されているはず。手元の NC30 V.5.10のマニュアルだと、
2.2 スタートアッププログラムの準備のJKがその処理のはず。

自分は M16CTinyだったんで、far領域にはRAMがないんでやったことはないけど。
M16CTinyの場合、そこはコメントにするからね。


815:デフォルトの名無しさん
04/10/19 08:48:59
スタートアップはアセンブラで自作するものなのですか?
アドレスなんかを設定すると、
コンパイラが自動的に作ってくれるのしか使ったことないです。

816:デフォルトの名無しさん
04/10/19 08:51:38
>>815
それでいいと思えばそれでいい

817:デフォルトの名無しさん
04/10/19 14:25:08
>>815
不要な設定や初期化を省きたいときは、汗しかないね
でも、一度経験する分には構わないけど、
プロセッサが変わったりするたびに作り直すのは
正直めんどい


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4873日前に更新/237 KB
担当:undef