H8_SH__ルネサスマイコン総合スレ3__M32_R8C_Tiny

このエントリーをはてなブックマークに追加
1HD64F3069RTE25

  PICもAVRもいいけど、やっぱりMade in Japan ルネサスマイコンは最高っす。
  
  H8やSHだけの限定ではありません。ルネサスマイコンについてなんでもどうぞ。
  トラ技のTinyやR8Cから入った入門者の人も、M32/16ファンのあなたも、
  ルネサス製マイコンや開発環境に関する、レポート、質問、購入方法など、なんでもドゾー。
  
  特に初心者の人には親切丁寧をモットーにお答えしますよ。

  過去スレ1 http://science3.2ch.net/test/read.cgi/denki/1106160714/
  過去スレ2 http://science6.2ch.net/test/read.cgi/denki/1159675598/
  
  関連スレ H8/SH gcc vs 純正コンパイラ
       http://science6.2ch.net/test/read.cgi/denki/1183216226/l50
       トラ技4月号に付録のH8マイコンで実験しよう Part5
       http://science6.2ch.net/test/read.cgi/denki/1102215461/l50
       【浦島】H8は日立製だと言い張るスレ【太郎】
       http://science6.2ch.net/test/read.cgi/denki/1072445656/l50
       H8ファミリ、スーパーH 限定スレ
       http://science6.2ch.net/test/read.cgi/denki/1189508057/l50
       ●●●くみこの組み込み相談室1.0●●●
       http://pc11.2ch.net/test/read.cgi/tech/1191397574/l50 
       ルネサスホームページ 
       http://japan.renesas.com/fmwk.jsp?cnt=mpumcu_category_landing.jsp&fp=/products/mpumcu/
  
2774ワット発電中さん:2008/11/30(日) 15:06:00 ID:sZDKIY+F
2ゲット
3774ワット発電中さん:2008/12/02(火) 12:22:37 ID:aqzh/ACe
EDN12月号の表紙のRENESASの広告の女の子で抜いた
のうし先輩は最近の広告でオススメありますか?
4774ワット発電中さん:2008/12/07(日) 21:28:48 ID:QNpS9cFW
SH4をつかいたいんだが、開発環境が高いなー。せめて3万円くらいにしろよ。
10万じゃ高すぎ。
 E8Aはすごくいい。しかし今使ってるCPUの中ではM16しかデバッグできない。
M16は好きじゃないんだよな。
TIのMSPを見習えよな。安くて機能がすごくいい。


5774ワット発電中さん:2008/12/08(月) 12:39:27 ID:iZFKjzDu
そんなに いいですか?
例えばどこらへん?
6774ワット発電中さん:2008/12/09(火) 09:27:42 ID:E/VZbDZi
H8/3048か3052で、プログラム側からマイコンを
ソフトウェアリセットする方法を教えてください。
7774ワット発電中さん:2008/12/09(火) 14:39:52 ID:WZ1kDjDM
ウオッチドッグでイってしまえ
8774ワット発電中さん:2008/12/09(火) 16:51:24 ID:rNcN3nQ8
リセットベクタ読み込んでそこにジャンプ
9774ワット発電中さん:2008/12/09(火) 17:37:09 ID:kOgsK2cy
それでリセットになるんか?
10774ワット発電中さん:2008/12/09(火) 17:41:22 ID:rNcN3nQ8
リセット後の初期化がしっかりしてれば、大丈夫じゃないの?
11774ワット発電中さん:2008/12/09(火) 17:49:02 ID:rNcN3nQ8
割り込み禁止にしてとんだ方が安全かも?
12774ワット発電中さん:2008/12/09(火) 17:59:41 ID:Rq6xeU8/
>>9
そらハードウェアリセットのようなわけにはいかんだろうさ。
13774ワット発電中さん:2008/12/09(火) 18:08:01 ID:kOgsK2cy
ならハードもリセットされるウオッチドッグのタイムアウトの方がよかんべ。
14774ワット発電中さん:2008/12/09(火) 18:38:03 ID:rNcN3nQ8
時間がかかってもいいなら、ウオッチドッグの方がいいと思う。
15774ワット発電中さん:2008/12/09(火) 21:42:19 ID:NLQj5+he
M16Cの62PにSRAM付けて遊んでるんですが、
sscanfの出力先をSRAMのバッファにすると動かないんですが、何か方法はないんでしょうか?

sram_ram.cに
sWkBuf[256];

test.cで
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
 ・
 ・
 ・
iRet = sscanf(bTempBuf, "GET %s", sWkBuf);
みたいな事をやると、iRetは正の整数が帰ってくるのですが、sWkBufの中身は何も書き込まれません。
iRet = sscanf(bTempBuf, "GET %s", sWkBuf_local);
みたいな感じだとうまく行きます。
16774ワット発電中さん:2008/12/10(水) 00:55:10 ID:BbHiq31V
sWkBufにはR/W出来るの?
17774ワット発電中さん:2008/12/10(水) 07:24:40 ID:1IbRXyJ9
>>15
調べてないんではずしているかもしれんが、現象から考えると格納する
sscanf の結果を格納する変数の宣言がnear になっているような。

near は、64Kアドレス以内の変数の宣言。far は制限なし。
ただし、near は2バイト、far は4バイトのポインタ変数になる。

外付けRAMはおそらくfar なのでそれでだめなのではないかな。もしそうだと
すると、sscanf の出力変数に外付けRAMの変数(sWkBuf)を指定することはできない。

とりあえずsscanf の宣言を確認してみたらどう。
18774ワット発電中さん:2008/12/10(水) 17:22:38 ID:cezqmqkH
H8マイコンを選ぶ理由を教えてください。
19774ワット発電中さん:2008/12/10(水) 17:57:41 ID:a87bzOfi
トラ技2004年4月号に付録で付いてたから。
20774ワット発電中さん:2008/12/10(水) 21:37:20 ID:BbHiq31V
char_farってのがあるんだ。
2115:2008/12/11(木) 23:32:10 ID:x6O9APaZ
>>16
R/Wはできます。strcpyができました。

>>17
extern _far char sWkBuf[256]; としてます。
sscanfっていうか、ルネサスのコンパイラは関数全てがfarポインタになっています。
extern _far char sWkBuf[256]; としても、sWkBufって形でポインタで扱うとnearになっちゃうんですかね?
22774ワット発電中さん:2008/12/12(金) 13:26:16 ID:jY3d9Z7M
教えてください。2つあります。

H8/3069に、外部バスでSRAMを接続する回路を考えています。

1. WR, RD, CS関係はわかったのですが、AS(アドレスストローブ)の使い方が
  わかりません。
ASは「アドレスバスの信号が全部確定しましたよ」という信号だと思っています。
メモリへは、data, address, CS, WR/RDをつなげば、動作すると思うので
このASはどうすべきかと悩んでいます。
予想するに、H8のCSを使わずに、H8外部で74HC138などでアドレスをデコードするときや
1つのCSバンク内で複数のデバイスを使用するためにアドレスを分割したいとき、
CSのハザードが出ないように138のGにASをつなぐ、そんな時に使うのではないでしょうか。
だとすると、
バンク内に1つのSRAMという構成の場合は、AS出力は開放のままで良くて、
WR, RD, CSのみでOKではないかと考えています。

2. 上位アドレス線の扱い
 SRAMとして1Mbitの物をCS2に割り当てようとしていますが、
 1Mbitなので、アドレス本数は、16本(A0〜A15)までしか必要有りません。
 なので、A16〜A19の4本は、使わなくても良いと考えています。
 そこで、わからないのは、
 1バンク2Mbyteの空間用のCS出力があるにもかかわらず、
 アドレス線がA19まである理由がわからないのです。
  もしかすると、「オレはCSなんて使わないんだよ。外部でFPGAで
 アドレスをデコードするからね」という人用に、全本数のアドレス線が 
 出ているのでしょうか?

上記の考えは正しいでしょうか?

どうぞ宜しくお願いします。

23774ワット発電中さん:2008/12/12(金) 16:58:51 ID:TPG8BwX0
タイミングさえ満たせるなら使おうが使うまいが好きにすればいいよ。
/ASは、/CSやストローブに対してアドレスのセットアップやホールドを要求する
デバイスの一部で便利なこともあるが、SRAMは使わなくても繋げられる。

2はただの勘違いでしょ。
2Mbyteの空間内の任意の場所を指定するには21ビットのアドレス、つまりA0〜A20が必要。
24774ワット発電中さん:2008/12/12(金) 19:54:06 ID:jY3d9Z7M

>>23
ありがとうございます。
/ASの件は、了解です。概ね合っていて、安心できました。

アドレスの件は、ご指摘の通り間違えています。すみません。
1MbitのSRAM(64k×16bit)でした。なので65536アドレスとなり、16bitアドレス。
全然違うこと言ってました。すみません。恥ずかし。

で、/CSがありながら、アドレスが全線出ている理由は、あの内容で
正しいでしょうか?

ありがとうございました。


25774ワット発電中さん:2008/12/13(土) 00:09:42 ID:JNxkV3j2
>2はただの勘違いでしょ。
26774ワット発電中さん:2008/12/13(土) 14:42:11 ID:Gi+JMd9w
>24
まず、/CSが2MB単位って言ってるけど、3069の場合、レジスタの設定で
そうじゃない動作も出来るでしょ。そのとき一番広いエリアは8MBあるよ。

それはおいておくとしても、例えばVRAMを2MB以上もつ液晶コントローラを
繋げたい場合なんか上位のアドレスが必要になるけど、複数の/CSから
上位アドレスを作るのは面倒だし速度的にも不利だよ。

あるいは2MB以下の範囲でも、2つのエリアをまたいでデコードしたい場合も
2本の/CSと下位アドレスでデコードするより上位アドレスがあった方が
便利かもしれない。大して変わらんと言われれば仕方ないが。

要は、無くて困ることはあっても、有って困ることはないから用意してあるんじゃないか。
その信号が要らないなら使わなきゃいいだけ。
27774ワット発電中さん:2008/12/13(土) 17:16:10 ID:f9TFKJX4
>>26
ありがとうございました。具体的な説明でよくわかりました。
つまり「どちらでもできるように出してあるので、ユーザーが考えて使い分けなさいよ」
という認識ですね。ありがとうございました。

>複数の/CSから上位アドレスを作るのは面倒だし速度的にも不利だよ。
  この場合、2つの/CSを、Low NORするという手法を考えてしまいますが
  正しいでしょうか。たしかに速度的にそんな感じがしますが、
  上位アドレス多bitを、切り出してアドレスデコードすると、ゲートをたくさんくぐるので
  CSのLow NORでも、結構やれるんではないでしょうか?

>あるいは2MB以下の範囲でも、2つのエリアをまたいでデコードしたい場合
  これは、CSより下のアドレスを切り出す必要があるので、
  CSでやるより、CPLDなどにデコードしてもらった方が良いですね。
28774ワット発電中さん:2008/12/13(土) 19:10:36 ID:f9TFKJX4

教えてください。

H8/3068は、H8/3069とROM容量以外に 何が違うのでしょうか?
ルネサスの総合カタログを見ましたが、特に何も謳っていないみたいです。
3069と置き換えができるとか....I/Oヘッダファイルとかも同じならさらに嬉しいんですが。
秋月に1250円で売っているので、いいなとぁ思いました。
29774ワット発電中さん:2008/12/13(土) 19:57:16 ID:E7PeOmGd
動作モード6が使えないが、基本的には同じ。
もしかしたら一部機能に拡張があるかもしれないが、レジスタ設定で
ソレを有効にしない限り従来品と同じ動作をするようになっている。
30774ワット発電中さん:2008/12/13(土) 20:01:06 ID:E7PeOmGd
あ、ピン配も互換だから基板にはそのまま載せ換え可。
31774ワット発電中さん:2008/12/13(土) 20:10:42 ID:f9TFKJX4
>>29,30
ありがとうございます。いいこと聞きました。

では、
・通常使用 → 秋月で3068を
・メモリたくさん欲しい → 同じく秋月で3069を
・3.3V駆動したいなら
  3069(5V) → 3029(3.3V、入手先不明)
  3068(5V) → 3028(3.3V、入手先不明)
ということですね。
モードは、7と5が使えれば、全然問題なしです。(殆どはモード7で使用です)

ありがとうございました。
32774ワット発電中さん:2008/12/17(水) 22:57:13 ID:a0SYGrFM
キーボードのキーを自動的に入力する為に何かいい方法を探していて
マイコンならプログラムみたいに自由に組む事が出来るのでいいのではと思い
H8/3664を秋月電子から購入し
LEDをちかちか点滅させるまでどうにかいけたのですが

キー入力はショートさせるだけでいいのでリレーのような機能がマイコンで表現できないのかなと思っています
リレー回路のように1のとき導通させたり 0の時は切り離したりという事は出来るのでしょうか?
33774ワット発電中さん:2008/12/17(水) 23:15:42 ID:29szEH25
つ 4066
34774ワット発電中さん:2008/12/19(金) 20:53:42 ID:w4ocCSFH
H8/3069に8ビットSRAMを接続したんですが、特定のデータビットだけ
うまくいかない。
具体的には(D14、D15)で、なぜかD14は読み込むと1がたったままで
D15は何も反応せず、0x80を買いても読み込むと0x40になってしまう。
下位のD8〜D13は問題ない。データバスは30Ωのダンピング抵抗を通して接続
している。不思議なのはD14のダンピング抵抗をはずすと、つながっていないはずなのに
0x00〜0x7Fまでなぜか読み書きできるようになる。
接続はデータバスに関してはピン番号も規則的で間違っていないと思う。
アドバイスお願いします。
35774ワット発電中さん:2008/12/20(土) 00:24:55 ID:QWvnzGxV
>>34

  MOV.L #メモリの番地,ER1
  MOV.B #H'00,R0L
  MOV.B #H'FF,R0H
LOOP:
  MOV.B R0L,@ER1
  MOV.B R0H,@ER1
  BRA  LOOP


みたいなプログラムを走らせてオシロで各端子の波形を観測する。
36774ワット発電中さん:2008/12/20(土) 22:34:23 ID:zit/3ecW
>34
配線ミスか半田不良だろ。

何より一番いけないのはこれだ。
「接続はデータバスに関してはピン番号も規則的で間違っていないと思う。」

そんなこと思わなくていいからまず確認する。
自分のしたことを真っ先に疑う、これがデバッグの鉄則だ。
37774ワット発電中さん:2009/01/04(日) 16:36:11 ID:mfp9eYj7

  謹 賀 新 年

    今 年 も ど う ぞ 宜 し く お 願 い し ま す。

38774ワット発電中さん:2009/01/05(月) 14:20:38 ID:iXJ0Hv4P

何か最近H8関連のスレが伸びないけど、もう人気無くなったのかな。
みなさん別のマイコンに移って行ったとか?
あるいはFPGAに移動とか?

ちょっと寂しいなぁ

39774ワット発電中さん:2009/01/05(月) 19:10:59 ID:TqJsVkk8
仕事では相変わらず使っとる
40774ワット発電中さん:2009/01/05(月) 21:43:02 ID:o6iyArRa
最近やり始めたなら、はじめてのマイコンがH8(の3069F-LAN)だった
という人はきっと多いはず。他のは導入にライタが必要だったり
躊躇する要素があるからだ。
速度はともかく2MB、RS232C、有線LAN付きのオールインワン的な
マイコンボードが完成品で、しかも安く入手できる。
これが無かったらどうなっていただろう。

2chで人がいないのは、単純にH8専用スレ?が無意味な1行レスで
荒らされてるのが原因じゃまいかと。
41774ワット発電中さん:2009/01/05(月) 23:30:49 ID:NK7L88br
だよね
すごいね、いいね、のオンバレードじゃ
嗚呼ここには馬鹿しかいないのかと思う他ない
やってる人は黙々を手を動かしてる
そんな当たり前の状況だろうな
42774ワット発電中さん:2009/01/06(火) 12:13:18 ID:5oLJd6BZ

教えてください。

H8にFPGAをつないで、
・H8が指示する値をFPGAのレジスタに書くと、そのレジスタ値をFPGAが読んで実行する。
・逆に、FPGAが制御中のレジスタの数値を、H8が読む事ができる。
というようにしたいです。
H8からメモリのように読み書きすれば、それがFPGAのレジスタに読み書きされるように
したいのです。

そこで、H8は外部バスモードで駆動して、H8とFPGAを以下のようにつなごうと考えています。
・H8 A15〜A00、D15〜D00 → FPGAへ
・H8 /HWR、/LWR、/RD、/CS4 → FPGAへ
上記の接続で良いでしょうか? 他に接続すべき線はないでしょうか?
気になっている線には、 /AS、/BREQ、/WAIT、/IRQ、/RESET などがあります。
43774ワット発電中さん:2009/01/06(火) 16:36:33 ID:nYM5/OFd
H8の内臓ROMを2分割してプログラムA(仮に0x000000番地からとする)
プログラムB(仮に0x300000番地からとする)
を格納したいのですが、可能でしょうか?
具体的にはプログラムAがBIOSみたいなもので、ある条件
をみたしたらプログラムBに分岐するみたいな。
開発環境はHEWなんですが、プログラムAは普通にHEWの骨組み
を利用すればいいですが、プログラムBの割り込みやセクション
設定がいまいちわかりません。プログラムBのP領域他を0x300000
からとすればよさそうですが、割り込み処理はベクタエリアが共通
なのでAとBで違う処理をする場合、アドレスがかぶるのでどうすれ
ばよいのかよくわかりません。
参考になるHPや書籍があったら教えてください。
44774ワット発電中さん:2009/01/06(火) 17:31:36 ID:cu57cTV5
>>43
ABどっちが走ってるかフラグで分ければいいんじゃね?
ABを完全に別にしたけりゃ、両方0番地から書いてバンクにするとか。
45774ワット発電中さん:2009/01/06(火) 17:33:02 ID:cu57cTV5
ああ、内蔵ROMか
バンクの話は無しだな
46774ワット発電中さん:2009/01/06(火) 17:38:32 ID:tTAhahxK
>>42
接続すべきでない線があるような?
47774ワット発電中さん:2009/01/06(火) 18:03:27 ID:tTAhahxK
>>43
H8SXならベクタテーブルを変えられる。
トリッキーだけど、H8/3069でベクタテーブルをRAM化したことがある。
48774ワット発電中さん:2009/01/06(火) 20:27:39 ID:5oLJd6BZ
>>46
>接続すべきでない線があるような?
えっ、そうなんですか? ぜひ教えてください。

もしかして、A00でしょうか? 16bit幅だから偶数番地しかアクセスしないから
要らないだろう、ってことでしょうか。
仮に接続してしまっても、FPGA内で使わなければ良いのかな、とも思います。
49774ワット発電中さん:2009/01/07(水) 12:32:31 ID:kPmMr2YZ
>>42
気が変わったら8ビットバスモードにも変更できるしA00つないでおいても特に問題ない。
というか、/CS使うんだしアドレスを16本もつながなくてもいいんじゃないの?そんなに大量にレジスタ作るの?と思わなくもない。
ピンに余裕があるなら使いたい分だけつないで好きなようにデコードすればOKです。

>/AS、/BREQ、/WAIT、/IRQ、/RESET 
どれも別に必須ではない。回路側で色々やりたいなら用途がでてくるかもしれない。
でも/ASなんて全く必要にならないだろう。リセットは欲しいかな。
別にあっても悪さをするわけではないので、つなぎたければ全部つなげばいい。
50774ワット発電中さん:2009/01/07(水) 13:34:06 ID:7Pce05iU

>>49
ありがとうございます。全て了解です。安心しました。

>/CS使うんだしアドレスを16本もつながなくてもいいんじゃないの?そんなに大量にレジスタ作るの?
>>42ではレジスタと言いましたが、ビデオメモリという感じで使いたいんです。
H8で書いたイメージを、FPGAで表示処理してもらう、という感じです。
要は、FPGA内部のブロックRAMをデュアルポートRAM的に使いたいのです。
ただ、絵の領域はそんなに広くないので、A15までは要らないと思います。

>でも/ASなんて全く必要にならないだろう。リセットは欲しいかな。
リセットはつないだ方が良いですね。私のミスでした。
マイコンがFPGAをリセットするというのもありなので、
H8と同じ/RESETを持って行かなくてもよいと思いますが。
ありがとうございました。

FPGA内部のブロックRAMを、デュアルポートRAM的に使う方法として、
CoreGenのデュアルポートメモリのIPを使おうとしていますが、
一般的に、その場合 何か特別な配線が必要なものでしょうか?
        バス衝突が起きたときに、H8の/WAITを引くとか....
51774ワット発電中さん:2009/01/08(木) 13:53:04 ID:ekVF2lPY
WAITを使うとか、BREQ使うとか、そもそも衝突がおきないようにしとくとか
52774ワット発電中さん:2009/01/08(木) 14:29:01 ID:6BkH+l+W
>>51
ご回答、ありがとうございました。
53774ワット発電中さん:2009/01/09(金) 14:03:42 ID:PxNNiSfS

H8のRAMアクセスについて教えてください。

http://science6.2ch.net/test/read.cgi/denki/1231337201/51-52
のやりとりで、
H8とRAMの配線で、LSBを配線しない理由は、
  偶数始まりでアドレスを指定するからであり、
  なぜ、偶数始まりで指定するかというと、
  メモリをちゃんと無駄なく0番地から使うために、0と1、2と3・・・となる。
と予想しています。
それはそれでOKなんですが、
もしアドレスを 0番地を使わずに、1と2、3と4・・・という使い方をするならば
H8とRAM間の配線でLSBの配線も必要になる、という考えは正しいでしょうか?
あるいは、16bitアクセスする事自体ができないようになっているのでしょうか?

54774ワット発電中さん:2009/01/09(金) 14:47:26 ID:U2bxusMt
H8って奇数番地からの16bitアクセスって出来たっけ?
55774ワット発電中さん:2009/01/09(金) 14:59:48 ID:VP7n1sqU
エラーは出ないが、偶数番地からワードアクセスしたのと同じ結果になる。
(300Hの場合)他は知らん。
56774ワット発電中さん:2009/01/09(金) 15:11:48 ID:VP7n1sqU
で、
>>53
>もしアドレスを 0番地を使わずに、1と2、3と4・・・という使い方をするならば
>H8とRAM間の配線でLSBの配線も必要になる、という考えは正しいでしょうか?

間違い。
バスコントローラが、16ビット空間として設定したアドレスに対して
/LWR,、/HWRを使い分けてくる = A0がデコードされているのと同じ。
なのでRAMにA0を接続する必要はない。

/RDはCPUから見たら読むデータを選ぶだけ=区別する必要がないので常に1本。
57774ワット発電中さん:2009/01/09(金) 17:02:38 ID:qsqoXp5Z
>>54
V850 は(無駄に)できたりする。
58774ワット発電中さん:2009/01/09(金) 17:11:33 ID:U2bxusMt
>>57
intel系の流れを受けてるからでしょ。
V850って命令セットがおもしろいなと思った。
59774ワット発電中さん:2009/01/09(金) 17:18:41 ID:PxNNiSfS
>>55, >>56
ありがとうございます。
ということは、次のようで良いでしょうか。

ROM番地 A2 A1 A0 /HWR /LWR 
  0    0  0  0  1     0
  1    0  0  0  0     1
  2    0  1  0  1     0
  3    0  1  0  0     1
  4    1  0  0  1     0
  5    1  0  0  0     1

あれっ? わからなくなってきた。 ヘルプ〜〜!!


60774ワット発電中さん:2009/01/09(金) 17:49:49 ID:U2bxusMt
使ってるマイコンのハードウェアマニュアルをよく読みませう。
61774ワット発電中さん:2009/01/10(土) 13:37:26 ID:gLxvdfQV
H8/3048でのSCI割り込み動作中にIRQでの割り込みに移るって事できる?
62774ワット発電中さん:2009/01/10(土) 14:28:21 ID:gUszblwN
割り込みレベルを変えればできるように思うけど。
63774ワット発電中さん:2009/01/10(土) 15:48:08 ID:wzMiXVAE
>>61
SCIの割り込み処理の中でSCIの対応した割り込みを周辺機能で禁止して、
CPUの割り込み禁止を解除すれば、多重で割り込み処理が出来る。
SCIの割り込み抜けるときは、逆の事やるのをお忘れなく。
64774ワット発電中さん:2009/01/11(日) 15:39:15 ID:EWJa85j9
こんにちは
お聞きしたいことがあります
HtermはVistaで正常に動作しますか?
開くことは開いたのですがマイコンが手元にないので細かい確認ができません
65774ワット発電中さん:2009/01/11(日) 18:27:27 ID:385vUdon

あけましておめでとう。 H8 万 歳 !!
66774ワット発電中さん:2009/01/14(水) 01:55:47 ID:9r6UdsVm

はい、おめでとう。 今年もH8を 宜しくね。
67774ワット発電中さん:2009/01/14(水) 11:56:49 ID:9Z3uEPZz
はじめてマイコン挑戦です。
マイコンはH8/3694Fです
データシート見てて思ったのですが
ポートBにPCRがないのはなぜですか?
68774ワット発電中さん:2009/01/14(水) 13:06:34 ID:9Z3uEPZz
>>67
自己解決しました。すれ汚しすいませんでした
69774ワット発電中さん:2009/01/15(木) 22:38:04 ID:WWMOQUaK
ちょいと教えてください
前から気になってるんですが、HEWでコーディングを行っているとき
構造体のメンバへアクセスするような記述をするとエディタの反応が
少し鈍くなるのですが、なにか特別な処理をしてるのでしょうか?

たとえば、
struct ABC {
 int X;
 int Y;
}
があるとして、

main()
{
 struct ABC a;
 a.X=128;
}

と書きたいとすると、「A.」と打ち込んだところで少しレスポンスが遅くなります
何でしょうか?
70774ワット発電中さん:2009/01/15(木) 23:51:08 ID:SnJHwlUJ
HEWでコーディングをしない
71774ワット発電中さん:2009/01/15(木) 23:51:47 ID:FyW72dBB
Aから始まる構造体がすでに定義されているかHEWが調べているから
72774ワット発電中さん:2009/01/16(金) 00:46:15 ID:NrYgcEXj
aのメンバを探して表示しようとしてるからじゃなくて?

自分も今SH2のHEWお試し使ってるんだけど
math.h include してatan2関数呼ぶと
リンクエラーが出る。
mathlibにatan2がないのか、mathlibがインクルード
されてないのか・・・
どーすればいいんだ。
73774ワット発電中さん:2009/01/16(金) 01:07:18 ID:NrYgcEXj
解決。
ビルドの項目にライブラリ指定するとこありましたね。
74774ワット発電中さん:2009/01/16(金) 01:18:11 ID:441L6xS6
>>71
>>72
VisualStudioみたいにインテリジェンスしてくれるならまだしも
なにもしてくれないみたいで、いったい何の処理やってるんだろうと
ずっと気になってる
関数呼び出しはプロトタイプを表示するみたいですね
75774ワット発電中さん:2009/01/21(水) 13:42:09 ID:NlufNZbO
H8/3694F用いています。
開発環境はHEW4です。
HEWでのスタートアップルーチンというのはどこに記述するのでしょうか?
またアセンブラのスタートアップルーチンは使えるのでしょうか?
参考書や、検索かけたのですがいまいち理解できませんでした。
76774ワット発電中さん:2009/01/21(水) 14:31:59 ID:hzWb5iVu
新しくプロジェクト作ったら hwsetup.c とか、その他いろいろおせっかいなファイルができない?
hwsetup.c は main 関数の前に走るはずだから、ハードウェアの設定なんかはそこに書けば
いいんでないの?どうしてもアセンブラ見たいなら、探せばあるだろうけど。
77774ワット発電中さん:2009/01/21(水) 16:32:29 ID:zTBlX6Fd
スタートアップルーチンはresetprg.cに雛形ができる。
ttp://www.infohobby.jp/products/P05010/P05010-S2.htm
78774ワット発電中さん:2009/01/21(水) 21:14:42 ID:kURHHSdI
Flash.exe Ver.5.0って、ダウンロード出来る?
たどり着けないんだけどorz
7978:2009/01/21(水) 23:57:29 ID:kURHHSdI
自己解決しました。
80774ワット発電中さん:2009/01/25(日) 08:54:50 ID:uwzzC0zK
ルネサスなど軒並み赤字転落へ 半導体業界も人員削減の嵐
http://www.business-i.jp/news/ind-page/news/200901170039a.nwc
 ルネサスは主力のシステムLSIの販売が急激に落ち込み、09年3月期は最終損益が2000億円規模の赤字(同95億円の黒字)に転じる見込み。
81774ワット発電中さん:2009/01/27(火) 02:10:44 ID:9b6RAsUR
HEWの製品版っていくらするの?試用期間すぎちゃった
82774ワット発電中さん:2009/01/27(火) 04:05:16 ID:lbZ4f81Q
10万くらい

正確に言うとHEWは無償だし、試用期間もないんだけど、
HEWと一緒に使ってるであろうSHCが有償で、試用期間が設定されている
83774ワット発電中さん:2009/01/27(火) 09:21:28 ID:9b6RAsUR
10万!?みなさんどうしてるの?
なにか裏技がある??
84774ワット発電中さん:2009/01/27(火) 09:39:09 ID:dBgiyjTz
制限ったって、SH で 256KB も作れるんだぞ。足りんのか?

まあ強いて言えば、いきなりそんなでかいプログラムになることはないので、
枯れたルーチンはアドレスの上位に固めて、別々にビルド、んでリンク。




…てのが NEC の環境ではできた。
85774ワット発電中さん:2009/01/27(火) 13:51:25 ID:JgZztgHz
H8/TINY使ってるのですが、RAMがたりません
増設はできるのですか?
86774ワット発電中さん:2009/01/27(火) 13:57:25 ID:NWwK4Stw
ピンコンパチでRAMの大きいのに載せかえる(あれば)。

なければ何か工夫して外部に置く。
バスがないのでめんどい。
8785:2009/01/27(火) 14:18:50 ID:JgZztgHz
>>86
Roger that.
ご助言ありがとうです。
88774ワット発電中さん:2009/01/27(火) 14:40:26 ID:W2MOrQgW
このスレで言うのもなんだけど、H8/tiny使うぐらいなら
容量大きめのPICやAVRのがいい気がします。
その辺どういう基準で選んでますか?
89774ワット発電中さん:2009/01/27(火) 16:59:08 ID:y/iIRaD5

>>8
さすがにPICとならH8の方がいいと思うけど、H8の中でも好き嫌いはある。
H8/Tinyは使わないようにしている。Port3が4bit毎にパッケージの対角線に
配置してあったり、割り込みベクターが無くて、PICみたいに判定してから飛ぶとか
使いにくいと思った。なので、今はH8/3069ばっかりでやってる。
ROM/RAMいっぱいで使いたい放題。機能も潤沢。

90774ワット発電中さん:2009/01/27(火) 20:28:04 ID:y/iIRaD5

× >>8

○ >>88
91774ワット発電中さん:2009/02/02(月) 15:19:56 ID:A0OkijwW



■韓国 重工業 売上高 2007年

斗山重工業 連結198億ドル (2兆3364億円)
現代重工業 15兆 5330億ウォン(1兆7552億円)     2008年は19兆9571億ウォン
三星重工業 08兆5191億ウォン(約9670億円)


■日本 重工業 売上高 2007年

三菱重工業 連結3兆2,030億円
川崎重工業 連結1兆4,386億円(二輪車事業含む)
石川島播磨重工業 連結1兆2,210億円






92774ワット発電中さん:2009/02/04(水) 04:23:57 ID:pCDAvCXH
ttp://japan.cnet.com/blog/onuka/2009/02/02/entry_27019971/
>日立と三菱のマイコンが統合してルネサンス
>著者: おおぬか
さすがに頭悪すぎるぞ、おまぬか〜。
93774ワット発電中さん:2009/02/04(水) 15:11:41 ID:C3Me0wfi
HEWで開発してるんですけど、外付けのRAMをつけて、
内臓RAM使用領域をオーバーした場合、外付けのRAM
領域の番地に変数を自動的に配置するようにできますか?
それともやっぱり外付けRAMにB〜とセクション名をつけて
変数を確保するときは
#pragma section 〜
変数
としなきゃ駄目でしょうか。
94774ワット発電中さん:2009/02/04(水) 16:33:54 ID:OOwFrZ4n
外付けのRAMをケツの方に割り付けると悩まなくてすむかも?
95774ワット発電中さん:2009/02/04(水) 17:50:33 ID:/dpY1Sqw
あんまり具体的な話じゃないのですが教えてください。
M16Cのボードで以下の機能のうちのいくつかが付いている(チップとコネクタが載っている)ボードを知りませんか?
・RTC
・UART
・外部フラッシュ
・Etherコントロール

できればM16C/6xシリーズだと助かります。
96774ワット発電中さん:2009/02/04(水) 18:51:14 ID:E05oYr+O
>>93
>内臓RAM使用領域をオーバーした場合、外付けのRAM 
>領域の番地に変数を自動的に配置するようにできますか? 

HEWで動的に配置条件変えるってこと?
なんでそんなことが必要なんだ。
そもそも内蔵RAM使用領域をオーバするかどうかをソフト書いてる人間が把握できなくてどうする。
callwalker使って使用スタックエリアを全て正確に把握するなんてのはソフト書いてる人間が
当然やらなきゃいけない作業だ。
97774ワット発電中さん:2009/02/04(水) 18:52:15 ID:rE8orrSI
全部外付けでよくね?
98774ワット発電中さん:2009/02/04(水) 20:23:19 ID:E05oYr+O
たしか、外部メモリは内部より遅かったよな
99774ワット発電中さん:2009/02/04(水) 21:48:09 ID:zMXrb1hl
内部クロックと外部クロックが違ってたらノーウェイトでも違ってくるね
100774ワット発電中さん:2009/02/05(木) 00:32:41 ID:LpPBLSup
外部アクセスは1ステート追加される?
101774ワット発電中さん:2009/02/05(木) 10:01:53 ID:LmSlNgZ6
93ですがH8のメーリングリストに同じような質問がありました。
MMUがなければどうもできないようですね。
ttp://www.exp.org/h8/ml/archive/cgi/view.cgi?message=6111

ttp://www008.upp.so-net.ne.jp/funfly/h8_11.html
こちらのHPで紹介されてるように外付RAM容量>内臓RAMの場合、
RAMセクションを外付けRAMの番地に変更して内臓RAMは切り捨てるって
方法は割りと一般的なんですかね?
なんか数十キロバイトでももったいないなぁと思ったんですが。
102774ワット発電中さん:2009/02/05(木) 13:18:28 ID:tNj0Acyp
>>99
ノーウェイト、クロック同じでも。ステート数が違ったんじゃないかな?
3067だけど違ったような記憶があるんだけど。


>>101

>MMUがなければどうもできないようですね。

そんな問題か?
コンパイル時にはみ出した領域を外部メモリに自動配置するんだろ?
MMU云々は実行時の話じゃん。
103774ワット発電中さん:2009/02/05(木) 20:59:46 ID:C4y4XJHf

日立のHEWについて教えてください。

HEWは、フリーでダウンロードできると思いますが、
フリー版には、扱えるチップの限定があるのでしょうか?
あるいは、H8/3694〜SHまで 全〜部コンパイルできるのでしょうか?

104774ワット発電中さん:2009/02/06(金) 00:00:04 ID:X6Khjl4v
HEWは無償で機能制限があるのはSHCだと言ってるだろうが
このバカチンがっ!

実行コードの容量制限があるだけでチップの制限はない
SHの場合は256kBまでいける
105774ワット発電中さん:2009/02/06(金) 11:58:46 ID:hxzW+jH8
開発環境 HEW H8/3694F

I2Cにメモリ増設して読み書きしたいのですが参考になるサイトなどありませんでしょうか?
106774ワット発電中さん:2009/02/06(金) 16:22:19 ID:ChazZQNy
>>101
#pragma abs16
__near16
とか、使えば内蔵RAM使うように出来るしょ。
107774ワット発電中さん:2009/02/06(金) 20:29:07 ID:BLi4adVk
>>105
ルネサスのサイトにApノートがあるよ
HewについてくるDocumentUpdaterで簡単に検索できるよ
108105:2009/02/06(金) 21:24:15 ID:hxzW+jH8
>>107
ありがとうございます。ちょっと見てみます。
109774ワット発電中さん:2009/02/15(日) 15:05:18 ID:FuaJpjRv
私以外にも無償評価版止められて困っている人がいるのですね(^^
いまさら止めなくても・・と愚痴ってもしょうがないので製品版で持っているHEWの1.2を
引っぱり出してきてコンパイルしたら組み込み関数nop()が使えないじゃないですか・・
インラインアセンブラで書くしか方法がないのでしょうか?
やったことがないので書き方の例とか教えていただければ助かります。
110774ワット発電中さん:2009/02/15(日) 18:08:05 ID:+n5I96zD
>>109
>無償評価版止められて困っている

え!?
111109:2009/02/15(日) 19:24:01 ID:FuaJpjRv
そう、オンラインアップデートによって止まったんだと思うんですけどね。
112774ワット発電中さん:2009/02/15(日) 22:48:12 ID:5Et+BRIj
>>109

#define すれば良いのでは?
113774ワット発電中さん:2009/02/15(日) 23:35:53 ID:1fntks2s
>>109

使用期限終わった後のプログラムサイズの話?それならVMWare
114109:2009/02/15(日) 23:56:49 ID:FuaJpjRv
>112 #define すれば良いのでは?

なんらかの、これはアセンブリ言語ですというのをコンパイラに知らせる
キーワードが必要ないのですか?
115774ワット発電中さん:2009/02/16(月) 03:05:22 ID:NfwOEKg3
コンパイラに知らせるより、
レジストリにHEWのインストール情報をきれいさっぱり忘れさせる方がいいだろが。
116774ワット発電中さん:2009/02/16(月) 03:25:15 ID:RHP47w3p
いっそ、HEWやめて、GCCにするとか
117774ワット発電中さん:2009/02/16(月) 10:26:24 ID:4W1t1rM9
>115
どこ消せばいいか分かるの?
118774ワット発電中さん:2009/02/16(月) 10:46:29 ID:hLGDTul8
>>117

>きれいさっぱり
↑↑↑
いいかげん気付よ
119774ワット発電中さん:2009/02/16(月) 11:09:43 ID:SMPvub/d
新しいPC買ってきてそれにインスコすれば全て丸く収まる
120774ワット発電中さん:2009/02/16(月) 11:16:11 ID:/EvwZBCj
だ・か・ら
VMWareがあるんじゃねーかよ。
あんまり書くとチョサッケン侵害幇助とかいわれちゃかなわんからな。
121774ワット発電中さん:2009/02/18(水) 17:35:06 ID:P3aU9Du8
3694Fに増設できるメモリってEEPROMより高速なものでありますか?
122774ワット発電中さん:2009/02/18(水) 18:48:56 ID:E7CrAJSP
ポートが余ってるなら、パラレルタイプのもの使う?
123774ワット発電中さん:2009/02/20(金) 18:32:21 ID:mVlpDFUZ
秋月電子製AKI-H8/3052FのLCDに文字を印字したいのですが、うまくいきません。
サンプルソフトでは表示できるので、ハード面に問題はないと思います。
どこに問題があるのでしょう?
unsigned char *lcd=(unsigned char *)0xffffc6, *tcr0=(unsigned char *)0xffff64, *tstr=(unsigned char *)0xffff60, *tsr0=(unsigned char *)0xffff67;

void time(int);
void printlcd(char*);
void lcdinput(char,int,int);
void lcdsetup(void);
void main(void);

void main(void)
{
lcdsetup();
printlcd("hell world");
}

void printlcd(char* word)
{
int count=0, flag=0, count2=1;

while((*word)!='\0')
{
count++;
word++;
}

word-=count;

if(count>=17)
{

while(count2<=16)
{
lcdinput(*word,1,0);

count--;
word++;
count2++;
}

lcdinput(0xc0,0,0);

}

while(count>=1&&count<=16)
{
lcdinput(*word,1,0);

count--;
word++;
}

}
124774ワット発電中さん:2009/02/20(金) 18:32:54 ID:mVlpDFUZ

void lcdinput(char character, int rs, int setup)
{
char sub=character;
unsigned char control;

sub=character>>4;

if(rs==1)
{
control=0x30;
*lcd=0x10;
*lcd=0x30;
}
else
{
control=0x20;
*lcd=0x20;
}

if(setup==1)
{
goto SETUP2;
}

*lcd=(sub|control);
time(4);
*lcd=((sub|control)&0xdf);
time(4);

*lcd=(sub|control);

SETUP2:;

*lcd=((character&0x0f)|control);
time(4);
*lcd=(((character&0x0f)|control)&0xdf);
time(4);
}
125774ワット発電中さん:2009/02/20(金) 18:33:21 ID:mVlpDFUZ
void lcdsetup(void)
{
time(15);
lcdinput(0x23,0,1);
time(4);
lcdinput(0x23,0,1);
time(4);
lcdinput(0x23,0,1);
time(4);
lcdinput(0x22,0,1);
time(4);

lcdinput(0x28,0,0);
time(4);
lcdinput(0x0e,0,0);
time(4);
lcdinput(0x06,0,0);
time(4);

lcdinput(0x01,0,0);
time(4);
}

void time(int value)
{
int count=0;

*tcr0=(unsigned char)0x00;
*tstr=(unsigned char)0x01;

while(value>count)
{
if(*tsr0==(unsigned char)0x04)
{
*tsr0=(unsigned char)0x00;
count+=2;
}
}
*tstr=(unsigned char)0x00;
}
126774ワット発電中さん:2009/02/20(金) 23:40:26 ID:kNk2boab

こんなに長いのを読めってか?

それなら読みやすいように、
{ の位置を()の後ろにして、1文を短くしてください。
  例) if(・・・・・){
     } else {
     }

インデントを付けてください。2chではタブが使えませんので、
タブは全角スペース2文字に置き換えると、
  if(rs==1){
    control=0x30;
    *lcd=0x10;
    *lcd=0x30;
  } else {
    control=0x20;
    *lcd=0x20;
  }

という感じにインデントが付けられます。
127774ワット発電中さん:2009/02/21(土) 02:54:12 ID:FVWIOvIG

  unsigned char *lcd=(unsigned char *)0xffffc6,
         *tcr0=(unsigned char *)0xffff64,
         *tstr=(unsigned char *)0xffff60,
         *tsr0=(unsigned char *)0xffff67;

  void time(int);
  void printlcd(char*);
  void lcdinput(char,int,int);
  void lcdsetup(void);
  void main(void);

  void main(void){
    lcdsetup();
    printlcd("hell world");
  }

  void printlcd(char* word){
    int count=0,
      flag=0,
      count2=1;

    while((*word)!='\0'){ count++; word++; }
    word -= count;

    if(count>=17){
      while(count2<=16){ lcdinput(*word,1,0); count--; word++; count2++; }
      lcdinput(0xc0,0,0);
    }
    while(count>=1&&count<=16){ lcdinput(*word,1,0); count--; word++; }
  }


  void lcdinput(char character, int rs, int setup){
    char sub=character;
    unsigned char control;

    sub=character>>4;
    if(rs==1){ control=0x30; *lcd=0x10; *lcd=0x30; }
       else{ control=0x20; *lcd=0x20;       }
    if(setup==1){ goto SETUP2; }
    *lcd=(sub|control    ); time(4);
    *lcd=((sub|control)&0xdf); time(4);
    *lcd=(sub|control    );
    SETUP2:;
    *lcd=((character&0x0f)|control);     time(4);
    *lcd=(((character&0x0f)|control)&0xdf); time(4);
  }
128774ワット発電中さん:2009/02/21(土) 02:54:47 ID:FVWIOvIG

  void lcdsetup(void){ 
    time(15);
    lcdinput(0x23,0,1); time(4);
    lcdinput(0x23,0,1); time(4);
    lcdinput(0x23,0,1); time(4);
    lcdinput(0x22,0,1); time(4);
    lcdinput(0x28,0,0); time(4);
    lcdinput(0x0e,0,0); time(4);
    lcdinput(0x06,0,0); time(4);
    lcdinput(0x01,0,0); time(4);
  }

  void time(int value){
    int count=0;
    *tcr0=(unsigned char)0x00;
    *tstr=(unsigned char)0x01;

    while(value>count){
      if(*tsr0==(unsigned char)0x04){ *tsr0=(unsigned char)0x00; count+=2; }
    }
    *tstr=(unsigned char)0x00;
  }
129774ワット発電中さん:2009/02/21(土) 03:25:46 ID:J2rEtYbu
読む気もないんだけど、スタートアップルーチンに間違いはないの?
130774ワット発電中さん:2009/02/21(土) 19:02:07 ID:krPYcSko
いいね
131774ワット発電中さん:2009/02/21(土) 19:02:56 ID:krPYcSko
すげえええええええええええええええええ
132774ワット発電中さん:2009/02/21(土) 19:03:43 ID:krPYcSko
だよね
133774ワット発電中さん:2009/02/21(土) 23:39:48 ID:I0gFxBBC
>>126
なるほど。ご指摘ありがとうございます。
>>127&128
わざわざ、書き換えていただきありがとうございました。
>>129
スタートアップルーチンはサンプルをそのまま流用していますし、念のためLED点灯プログラムをそのスタートアップルーチンでリンクし実行してみましたが問題なく実行できました。
134774ワット発電中さん:2009/02/22(日) 00:26:34 ID:tVGy5Scn
*lcdに書き込んだ後のウェイトがないところがあるね。
135774ワット発電中さん:2009/02/25(水) 00:07:40 ID:4iB54DXe
 質問です。
 H8もR8Cも開発環境はHEWでできるのでしょうか?
 HEWの言語はCであるというのはわかりますが、ポートの操作とかがまったく
わからない状態です。 プログラムの書き方がある、初心者サイトみたいな
ところがあればリンクいただけないですか?
136774ワット発電中さん:2009/02/25(水) 01:38:28 ID:RC80EPUV
データシートがあるだろ。
137774ワット発電中さん:2009/02/25(水) 03:21:18 ID:LVUgUvqO
138774ワット発電中さん:2009/02/25(水) 18:30:13 ID:GTZICeCw
>>135
サイトを良く見てみ。サンプルプログラムがゴロゴロしてる。
139135:2009/02/25(水) 18:33:41 ID:bhB5OFLd
>>138
いやだね
140774ワット発電中さん:2009/02/26(木) 03:53:11 ID:JJNjLY9H
>>135
本屋行って良く見てみ。関連本がゴロゴロしてる。
141774ワット発電中さん:2009/02/26(木) 10:28:29 ID:RzDNR+//
>>140
いやだね
142774ワット発電中さん:2009/02/26(木) 21:38:06 ID:m4IOohl0
M16CとH8のどちらを使おうか迷った場合ってどのように判断するのでしょうか?
また、それぞれの利点って何になりますか?
143774ワット発電中さん:2009/02/26(木) 21:58:52 ID:tZm3l9Wi
>>142
使いたい機能・性能を満たしていて安い方を選べば。
144774ワット発電中さん:2009/02/26(木) 23:54:21 ID:pD6M0o4H
137,138,140さん 回答ありがとうございました。
調べてみます。
145774ワット発電中さん:2009/02/27(金) 20:00:15 ID:hROeqF2p
M16C/62Pを今仕事で使ってるんだけど、アーキテクチャが古いと思う
汎用レジスタが16bit×6本で少ない、アセンブラで書くわけじゃないんだけど、
C言語でもいまどきポインタのデフォルトサイズが16bitになってる

M16Cのメリットは…ノイズに強いらしいという都市伝説がある。
あと、R8C/Tinyは手っ取り早く使うにはPICより楽

個人レベルで使うならH8の方が書籍が多いし秋月で買えるから良いと思う。
迷ってるならH8の方が無難。
周辺機能もあまり変わらないし。

146774ワット発電中さん:2009/02/27(金) 23:53:48 ID:VA0U2atb
個人レベルなら M16Cの方を自分はおすすめするな。
アーキテクチャについては、 >>145 のいうとおりなんだが、
H8の方が遅くてメモリ効率が悪い。

オークス電子のoaks-mini がおすすめ。完成品じゃないけど、
組み立てさえすれば、後は、RS232Cケーブルさえ用意すればOK。
結構まともなデバッガも使える。

H8は動かすまでが大変で、まともなデバッガのない環境も多い。

R8Cの方が書籍が多いから、手に入るんならR8Cの方が
いいと思うが、キットで入手しやすいのがあったかな。
147774ワット発電中さん:2009/02/28(土) 11:07:31 ID:kyyYeEfg
久々にH8に戻ってきたんだけど、いまHEWって

- kpitgnutoolsのHEWv4
- ルネ純正HEWv6評価版(制限付き)

の2つがあるよね。みんなどっち使ってるの?それとも
エディタ+gccでやっててHEWなんて使ってねーよって感じ?
148774ワット発電中さん:2009/03/01(日) 11:35:02 ID:6DCnfPPc
KPITのHewじゃねーだろが。
Hewはあくまでもルネサスツール
Hewの設定環境を引き継ぐだけだろ。
コンパイラはあくまでもgcc
そしてgccは糞ってことは既出
149774ワット発電中さん:2009/03/01(日) 15:31:33 ID:LNpkvfsY
>>145
>M16Cのメリットは…ノイズに強いらしいという都市伝説がある。

都市伝説じゃないよ。旧日立(小平)の人が認めてたから。
150774ワット発電中さん:2009/03/01(日) 16:26:38 ID:IvokOY7j
小平?
武蔵じゃなくて?
151774ワット発電中さん:2009/03/01(日) 17:25:07 ID:uBUtOKeH
>>150
小平と武蔵は同義だろ
152774ワット発電中さん:2009/03/01(日) 19:02:21 ID:Yz8xmLoK
gcc使って、動かせる人って少ないからだろ?
153774ワット発電中さん:2009/03/03(火) 16:01:35 ID:InvkqxFI
>>148
私も最初は驚きましたが、KPITからダウンロードしてインストールするとHEWがインストールされて、ツールチェーンに
gccが登録されています。
154774ワット発電中さん:2009/03/03(火) 16:07:59 ID:InvkqxFI
>>145
ポインタが16bitだとなにが不便なの?

M16CはR8Cとバイナリ互換だし、R8Cはロードマップ上に
残っているので、R8 > M16C > H8 だと思うけど
155774ワット発電中さん:2009/03/03(火) 17:38:06 ID:DfM4RNfi
H8は32bitレジスタ、アドレス空間も(アドバンスモードで)16MBで、
昔の68000みたいに実質32bitCPUっぽく使えることを言ってるのでは。
gccでもそういう風に使うだろうし、MESみたいなOSを載せる余裕もある。
156774ワット発電中さん:2009/03/06(金) 14:41:26 ID:ZPJPHPnV
>>154
16bitだと64kBしか使えないでしょ。当り前だけど
157774ワット発電中さん:2009/03/06(金) 15:58:46 ID:kUveAwG2
組み込みで 64KB も使えて何が不満なんだ。
158774ワット発電中さん:2009/03/06(金) 16:09:12 ID:ThuFu7Or
OS乗せてSDカード対応させてとかやりたいときもあるんだ
159774ワット発電中さん:2009/03/06(金) 17:17:32 ID:3sNp8aoV
>>158
SHでも使ってろ
160774ワット発電中さん:2009/03/06(金) 20:59:55 ID:1pe5j3ty
m16Cのアドレス空間は1Mバイト。 16ビットのアドレッシングしか
できないわけじゃない。 64kバイト境界で near と far に分けてる。
m16Cの中には、内部ROMを512Kもつモデルだってある。


C言語でプログラムする場合、あまり意識する必要はないんだけど、
ROMデータを扱うとき、たとえば定義してある文字列を扱うとのに
はまりやすい、と思う。
161774ワット発電中さん:2009/03/06(金) 23:29:20 ID:SKjArrWK
HEWでH8-3664使っとります。
別のファイルにある関数呼ぶときに、引数がうまく渡せなかったんだけど
リストファイル見たら、飛び先の関数で使わないE0に引数の値が入ってた\(^o^)/

メインと同じファイルに入れたらR1Lに入れてくれるようになったんだけど、
これってバグっすか?

162774ワット発電中さん:2009/03/07(土) 01:18:18 ID:b9pzaxip
>>161
おまいのコードがな。

呼ぶ方にプロトタイプ宣言入れれ。
入ってないとintと仮定されるので、charで受け取れねえ。
163774ワット発電中さん:2009/03/07(土) 02:16:30 ID:wBxqoeKs
>>162
さすがだね。
なるほど 勉強になりましたよん。
164774ワット発電中さん:2009/03/07(土) 09:49:08 ID:uhndeTmn
>>162

なるほど。

呼ぶ方に
extern void hoge();
入れてもダメで

extern void hoge(int*);
って感じで型を入れててやらないとうまくいかなかったっす。

この場合、
hoge("abcde");
って感じで呼び出すと
C1016 (W) Argument mismatch
って出るんですが一回、定数に置き換えてそのポインタを渡さないとダメなんでしょうか?
165774ワット発電中さん:2009/03/07(土) 09:54:48 ID:gmMNnszk
>>164
はじめてのCでも読み直して来い
166774ワット発電中さん:2009/03/08(日) 13:57:52 ID:CwmoHYRV
>>164
自分の無知を棚に上げて、鬼の首を取ったかのように
いかにもアドバイスが悪くて苦労しました、みたいなレスすんなボケ。
167774ワット発電中さん:2009/03/08(日) 20:53:07 ID:5j4s4J4N
何を偉そうに
168774ワット発電中さん:2009/03/09(月) 18:07:52 ID:bVTNUgJu
>>164
・extern要らない
・別ファイルの関数の実体の引数と比べて見て違わない?
・文字列入れるなら"int *"じゃなくて"char *"にするべきでは?
169774ワット発電中さん:2009/03/09(月) 19:51:50 ID:5cZqpFar
>>164
だからこのスレで一般的なCのこと聞くのヤメレ。
170774ワット発電中さん:2009/03/10(火) 10:00:37 ID:nUUNYPFq
すいませんねえ
糞どもが調子に乗ってしまって
171774ワット発電中さん:2009/03/10(火) 14:06:19 ID:7/vUwDdo
>>156
使いたければ far  を使えばいいだけの話。
far と書くと移植性などで使いたくないとかいう理由?

172774ワット発電中さん:2009/03/10(火) 23:09:50 ID:AUMyaxiH
そういや石田晴久先生が亡くなったそうだな。
K&R読んだ奴は祈っとけナムナム
173774ワット発電中さん:2009/03/23(月) 08:57:50 ID:0PJecAfX
>>172
K&R原文で読んだ人には関係ない話
174774ワット発電中さん:2009/03/25(水) 23:48:12 ID:rYiFpksr
ttp://japan.renesas.com/fmwk.jsp?cnt=rx_family_landing.jsp&fp=/products/mpumcu/rx_family
とりあえずマニュアルでも読んでみますかねえ。
175774ワット発電中さん:2009/03/26(木) 01:39:10 ID:DnTZ2D/a

日立 万歳!
176774ワット発電中さん:2009/03/26(木) 05:16:02 ID:LVywnPxc
一通り眺めた。
CPUはR32をH風にした感じか?
周辺は完全にH8Sだな。

HなCPUをC言語で使ってる人はそんなに苦労しなくても移行できそう。
177774ワット発電中さん:2009/03/26(木) 20:17:49 ID:9zIgJ4zg
このスレの新参者でございます。
H8/3052 と HEW で天体望遠鏡の方向制御をしたいと思っています。

質問があります。
・浮動小数点演算は出来ますか?(処理時間が大きくてもOKです。)
・sinθ、cosθ、tanθ の演算は出来ますか?

以上、よろしく御願いいたします。
178774ワット発電中さん:2009/03/26(木) 20:50:52 ID:h+f5Jvx+
179774ワット発電中さん:2009/03/26(木) 20:54:38 ID:9zIgJ4zg
>>178
あ、やっぱりHEWで浮動小数点はサポート外ですか?
180初心者:2009/03/26(木) 20:55:11 ID:UMjkH5JW
質問です リチウム電池を0.5V以下まで早くするにわ、どのようにするのが良いのでしょうか?
良い方法が、あれば教えて下さい、お願いします。



181774ワット発電中さん:2009/03/26(木) 21:00:11 ID:9zIgJ4zg
>>180
ついでに回答します。

リチウム電池で0.5Vは過放電です。
過放電したリチウム電池を充電すると熱暴走(発煙、発火)の危険性があります。
リチウム電池は3.0V以上で放電終止するのが一般的です。

以上、スレ違いのような気がしますが。
182774ワット発電中さん:2009/03/26(木) 21:04:49 ID:9zIgJ4zg
もう一度質問させて下さい。

HEWを使うという前提で
浮動小数点演算、sinθ、cosθ、tanθ の演算が可能なSuperHは
どのSH??からでしょうか?

よろしく御回答をお願い致します。
183774ワット発電中さん:2009/03/26(木) 21:04:55 ID:kT2ideuC
>>179
ライブラリはあるから>>178が紹介しているようなことをしなくてもできるよ
まー、速度は遅くなるし、コードはでかくなるしで場合によっては使えないかもしれないけどね
184774ワット発電中さん:2009/03/26(木) 21:09:24 ID:9zIgJ4zg
>>183
H8用の浮動小数点ライブラリがあるですか!
一度トライしてみます。

ありがとうございました♪♪
185774ワット発電中さん:2009/03/26(木) 23:39:53 ID:MxYbC48k
H8(HEW)のfloat演算はリアルタイム制御では使いもんにならんが、遅くていいのならフツーに使える。
<mathf.h>をインクルードすれば三角関数ライブラリもおk。
186774ワット発電中さん:2009/03/27(金) 03:52:08 ID:NNJrHomi
わーい♪ うれしいな♪
187774ワット発電中さん:2009/03/27(金) 09:26:42 ID:BJYBq/aU
俺なら 78K か V850 を使う。
188774ワット発電中さん:2009/03/30(月) 02:48:43 ID:fXmztmQ1
いくら何でもこれから製品化するのに90nプロセスはひどすぎるだろ
せめてリーク電流対策した65nで低消費電流路線狙うべき
189774ワット発電中さん:2009/03/30(月) 05:23:15 ID:ldxIz3dv
内蔵flashが作れないとか。



190774ワット発電中さん:2009/03/30(月) 09:59:07 ID:miOOSI+S
結局H8はディスコンにするのか?
RX上でH8バイナリが動くとかはないよな?
191774ワット発電中さん:2009/03/30(月) 15:01:23 ID:9HXdFsMo
SH7144のマニュアルで調歩同期式の最高値がPφ=24MHzのとき
750000bpsなのですが、
実際には57600bpsぐらいまでしか使えません。
言語はC言語で書いていて処理に時間がかかってしまい、
仕方がないことなのでしょうか?それとも別に原因があるの
でしょうか?
192774ワット発電中さん:2009/03/30(月) 17:22:58 ID:X8o2uZ4V
受信エラーが出てるのでは?
193774ワット発電中さん:2009/03/30(月) 17:49:51 ID:rZHYx4U6
>>191
割込みと受信バッファ使えばC言語でも115200bpsも楽勝
ポーリングで受信のたんびにデータ処理をしているとそんなものかも知れない。
194774ワット発電中さん:2009/03/31(火) 00:07:31 ID:vTJzKaQ2
>>191
受信ルーチン全部アセンブラで書け。
無駄なレジスタ保存はするな。
パイプラインストールしないように考えてコード書け。

SH7144ならソフトだけでコンポジットビデオ信号作れるほどのパワーがある。
SCI使ってるなら57600Bps程度の通信などCPU能力の1%も消費しないはず。
195774ワット発電中さん:2009/03/31(火) 02:17:50 ID:il0YA7zg
7144はそうでも吉田基板は16x2のLCD制御するのがやっと
196774ワット発電中さん:2009/03/31(火) 09:44:23 ID:IdtDdOM1
>>191
シリアルラインに遅いトランシーバやフォトカプラ使ってない?
197774ワット発電中さん:2009/03/31(火) 11:31:15 ID:+1kFnWyy
>>191
楽勝ということはやっぱプログラムが悪そうな予感ですかね。
受信割り込み処理はリングバッファに格納してるだけです。
以下ソース
やっぱ遅いでしょうか?
char dt;
struct IORegs *r;
struct RingBuffer *rx_p;

r = ®[ch]; /* レジスタアクセス用ポインタ設定 */
rx_p = &rx[ch];

dt = INPORTB( r->rdr ); /* データの読込 */
RESBITB(r->ssr, 0x78); /* RDRFクリア */
if ( rx_p->count >= COM_BUF_SIZE ) /* オーバーランエラー */
return;
rx_p->buffer[rx_p->save++] = dt; /* バッファ格納 */
if ( rx_p->save >= COM_BUF_SIZE ) /* リングバッファ構築 */
rx_p->save = 0;
getCount( rx_p ); /* データ数算出 */

>>196
トランシーバはADM3202です。100Kぐらいなら余裕のはず。
198774ワット発電中さん:2009/03/31(火) 12:22:38 ID:cgLyaue0
1回の割込発生につき1バイトしか読みださないの?
199774ワット発電中さん:2009/03/31(火) 12:47:00 ID:VkW8/65X
>>197
getCount 関数は何をやってる(遅い処理やってないか)?
ぐらいかな、このリストで思うのは。count とかがどこで更新されるのか
わからんので、ほかはなんとも。

>>198
読み出す前に次のデータがきてしまうとオーバーランエラーじゃない?
>>197 のソフト的なやつじゃなくて、受信ハードの方の。
200193:2009/03/31(火) 13:14:37 ID:/sA2t1yt
>>197
ソースを見た限りでは余裕だと思う
受信後のフラグのリセットなどが影響しているのかも知れませんね
オシロがあってボードにON-OFF出来るピンがあれば割り込み処理の間だけ
ピンをONしてオシロで観測すると良いですよ。

ちなみに下はSH7144ボードで使っていた割込受信ルーチン
#define rssts() (SSR_1 & SSR_RDRF)
#define reset_rs() (SSR_1=(SSR_1 & ~(SSR_RDRF | SSR_ORER | SSR_FER | SSR_PER)))
#define rsdata() RDR_1
void int_rxi(void)
{
if(rssts()){
if(rx_ct < RXD_BUFFSIZE){
rxbuf[rx_wp] = rsdata();
rx_wp = (rx_wp+1) & (RXD_BUFFSIZE-1);
rx_ct++;
}
}
reset_rs();
}
201774ワット発電中さん:2009/03/31(火) 13:20:02 ID:+1kFnWyy
>>198
1回の割り込み処理で1バイト読み出しです。

>>199
getcountの中身はリングバッファに溜まったデータ数を
更新しているだけで、countの更新はこの関数で行われています。

static void getCount( volatile struct RingBuffer *b )
{
if ( b->save >= b->load )
b->count = b->save - b->load;
else
b->count = b->save + COM_BUF_SIZE - b->load;
}
なので大した処理ではありません。
202774ワット発電中さん:2009/03/31(火) 15:29:51 ID:cgLyaue0
リングバッファに使ってる領域はキャッシュ有効or無効?
203774ワット発電中さん:2009/03/31(火) 16:09:03 ID:+1kFnWyy
>>200
受信割り込みの入り口と出口に仕込んでオシロで見てみました。
正常に通信できる57600とダメな115200ともに2us程度でした。

>>202
特に意識してRAMを使っていないのですが、どうやって確認すればい
いでしょうか?
204774ワット発電中さん:2009/03/31(火) 16:30:10 ID:aUEaQfTy
誤差がでかすぎるのでは?
205774ワット発電中さん:2009/03/31(火) 16:55:10 ID:+1kFnWyy
>>204
ttp://documentation.renesas.com/jpn/products/mpumcu/rjj09b0026_sh7144.pdf
391ページの計算式でPφ24Mで115200のときN=6で誤差が1%程度です。

ちょっとソースさらします。
ttp://blog-imgs-24.fc2.com/s/o/u/soundreview/sci.txt
115200にするとrsPutchで1バイトづつ送信してもPCには正しく
表示されませんでした。
206200:2009/03/31(火) 16:57:09 ID:/sA2t1yt
>>203
115200bpsでデータ受信間隔はおよそ80uSだから
処理速度の点に関してはOKですね。
207774ワット発電中さん:2009/03/31(火) 17:17:11 ID:OnWHMAZg
>>205
相手がパソコンなら、パソコンの設定が正しくないのかも?。
一度、ループバックで確認してみたら。
オシロがあるんなら、信号見れば正しいボーレートかどうかわかるはず。

208774ワット発電中さん:2009/03/31(火) 17:18:54 ID:/sA2t1yt
>>205
誤差は7%じゃない?
だとするとちょっと厳しそうな気がする。
209774ワット発電中さん:2009/03/31(火) 17:57:04 ID:+1kFnWyy
>>205
パソコンの方も疑ってみようと思います。
明日確認してみます。

>>208
約7%ですね計算間違ってました。
誤差ってのがいまいちピンときませんが、7%っていうのは相当なんで
しょうか?
210774ワット発電中さん:2009/03/31(火) 18:07:56 ID:OnWHMAZg
>>209
調歩同期で7%誤差では、まず通信できない。
フレーミングエラーとか出てるはず。
211774ワット発電中さん:2009/03/31(火) 18:15:07 ID:+1kFnWyy
>>210
どうやらそのようですね。
確かにPC側のソフトにもフレーミングエラーと出ていました。
ググったら下記でてきました。
ttp://misumi.sakura.ne.jp/blog/archives/2007/05/115200bps.html
まさに同じふろくボードを使っています。
できないことがはっきりわかってすごくすっきりしました。
皆様ありがとうございました。
212774ワット発電中さん:2009/03/31(火) 18:37:14 ID:aUEaQfTy
7.3728MHz×4
213774ワット発電中さん:2009/04/01(水) 11:28:14 ID:zQ+RN99T
内部オシレータでシリアル通信するのは避けた方が賢明?
データシートの発振周波数幅がめちゃくちゃ大きいけど、
実力値的にはどうでしょうか。
214774ワット発電中さん:2009/04/04(土) 09:49:14 ID:7Cyg8thD
なぜ計算してみようとしないのだろう・・・・
215774ワット発電中さん:2009/04/05(日) 15:33:50 ID:Dsi8THDy
>>213
データシート上は使えないことになるから、
よほど確かな根拠がない限り普通は使わないな。

>>214
実力値は計算じゃわからんだろ。
216774ワット発電中さん:2009/04/05(日) 15:57:11 ID:fa407Kif
SH7144だと動作周波数は4MHzから50MHzと書いてある。
217774ワット発電中さん:2009/04/10(金) 17:15:14 ID:f0tTnPhi
は?
218774ワット発電中さん:2009/04/11(土) 19:56:51 ID:dLKZRVAj
H8 3664のI2Cって不具合あるみたいですけど、
開始条件発行後にIRICが一向に立たないことと関係あるんでしょうか?
219774ワット発電中さん:2009/04/11(土) 22:27:32 ID:Cb09j0qe
>>218
まだ日立時代にその件でクレーム付けた。
メール返信で不具合を認めた上で「3694のご採用を強くご推奨します」だとよ。
I2C使うんだったら3664は止めとけ。
220774ワット発電中さん:2009/04/11(土) 22:54:50 ID:hLMdoaaW
僕、柚木正章です。
221774ワット発電中さん:2009/04/11(土) 23:19:19 ID:dLKZRVAj
>>219
どうもです。
EEPROM書き込むだけなんで、3664でやっていこうかと思います。
222774ワット発電中さん:2009/04/14(火) 03:07:04 ID:4VvyV4Dp
教えてください。
223774ワット発電中さん:2009/04/14(火) 14:07:19 ID:wXOLWlXF
>>222
何を?
224774ワット発電中さん:2009/04/14(火) 20:14:50 ID:ef7tEpD+
>>222は さだまさし。
「海は死にますか 山は死にますか」
225774ワット発電中さん:2009/04/14(火) 22:14:10 ID:PKcZEid2
俺は、オタッキーデブヲタ!柚木正章です。

IBM-PC互換機は重いらしい。
226柚木正章:2009/04/14(火) 22:16:41 ID:PKcZEid2
こんにちわ!

デブヲタの柚木正章です。

IBM-PC互換機を持ってます。

重いで
227774ワット発電中さん:2009/04/15(水) 23:41:13 ID:WUocuj97
こんばんわ

包茎ちんぽの柚木正章です。

皮が剥けない、どうすればいいの?

228774ワット発電中さん:2009/04/16(木) 10:25:37 ID:f0yFUltE
229774ワット発電中さん:2009/04/16(木) 11:21:03 ID:N4M+6CF8
MIPS/ARM/SHが同じメーカーから出てくるのか…
ややこしいのう。

230774ワット発電中さん:2009/04/16(木) 11:30:16 ID:f0yFUltE
>半導体国内2位のルネサステクノロジ(東京)と同3位のNECエレクトロニクスが、
>来年4月をめどに経営統合する方向で最終調整に入ったことが16日、明らかになった。

>ルネサステクノロジとNECエレクトロニクスが経営統合する方向で最終交渉に入ったという一部報道に対し、
>NECエレクトロニクスは4月16日、「報道されたような事業再編について当社として決定した事実はない」
>というコメントを発表した。

どっちやねん。
231774ワット発電中さん:2009/04/16(木) 17:14:27 ID:cqbfH7Op
>>230
恐らく上だろな

会社統合後はCPUラインナップ統廃合するんだろな
232774ワット発電中さん:2009/04/16(木) 17:40:55 ID:ofOeWXhx
頼むから MINICUBE2 対応は継続してくれよ。
233774ワット発電中さん:2009/04/16(木) 21:28:17 ID:tmfvL1mT
>>230
「最終調整に入ったけど、何も決定していない。」と言うだけのこと。

と言うか、この手の話の広報のコメントは大抵これと同じだろ。
234774ワット発電中さん:2009/04/17(金) 02:56:22 ID:wnWvuzoV
>>231
V850Tinyとか。
減ることはないだろうな。
235774ワット発電中さん:2009/04/17(金) 09:14:20 ID:JATosoE+
日立と三菱のとき、開発環境やツールの統合であれほど大変だったのに
さらにNECも統一するわけ?

前回に懲りて、今回は無理してツールの統合はやらないんじゃないかと。
236774ワット発電中さん:2009/04/17(金) 13:01:21 ID:A3muJfut
>>235
それじゃ合併した意味がないからツール統合するだろう

それより問題はNEC本体に残ってる半導体畑の人間を
道連れにするかどうかだな
237774ワット発電中さん:2009/04/17(金) 14:17:36 ID:D+w7yoqo
>>236
NECのシリーズは次シリーズからHEWが使えるようにする・・のかなぁ・・?
統合の実績からいって、NECのほうに統合するのはあり得ないと思う
238774ワット発電中さん:2009/04/17(金) 14:34:15 ID:2mtlubIX
別々のままでいいんじゃないかねえ。
それぞれのユーザーも慣れてるだろうし、デメリットしかないように思うけど。
無償版の利用制限はルネに合わせて欲しい。w
239774ワット発電中さん:2009/04/17(金) 15:05:46 ID:D+w7yoqo
>>238
三菱日立がやっと統合できたんだから、10年かかってもおかしくないよね。
というか、RXはこのままで、次シリーズで統合ということかもしれないけど。

ルネサス(日立三菱+NEC)とエルピーダ(NEC三菱+日立)も一緒になりそうだけど。
240774ワット発電中さん:2009/04/17(金) 22:13:43 ID:tMJlTuOx
CPU・半導体メーカーの合従連衡の工程表

2010年 ルネサスとNECエレクトロニクスが合併
2020年 富士通マイクロエレクトロニクスと合併
2030年 テキサス・インスツルメンツ (米)と合併
2040年 東芝セミコンダクターと合併
2050年 フリースケール・セミコンダクタ(米)と合併
2060年 ARM Ltd(英)と合併
2070年 サン・マイクロシステムズ(米)と合併
2080年 インフィニオン(独)と合併
2090年 AMD(米)と合併

2100年 インテル(米)と合併
この年、HEWはバージョン100となり、プログラム規模は1テラ・バイトを超えた。
241774ワット発電中さん:2009/04/18(土) 00:46:13 ID:ncEZdkvX
>>240
マジレスすると現在の組み込み系での平均メモリ搭載量が64KB Flash/2KB SRAMと
控え目に見たとしても、2100年ならムーアの法則により35184372088832倍になる。
よって、Flashなら68TB搭載が標準になる。普通搭載Flashの1/64以下しか使わない
なんてヘボな設計・チップ選択はしないので、2100年には50TBを超えるあたりを
うかがってるはず。

ちなみにWindows2100はその頃には最低動作環境2EB RAMになってるはず。
242774ワット発電中さん:2009/04/18(土) 00:48:10 ID:ncEZdkvX
あ、間違えた。 2^((2100 - 2009) / 3) = 1073741824倍ね。
そこから先の数字は正しい計算の方の数使ってるからそのまま。
243774ワット発電中さん:2009/04/18(土) 01:11:23 ID:xm2na69V
いや、多少の間違いはどうでもいいレベルだろ
244774ワット発電中さん:2009/04/18(土) 02:07:38 ID:VKAyhQPy
            /)
           ///)
          /,.=゙''"/
   /     i f ,.r='"-‐'つ____   こまけぇこたぁいいんだよ!!
  /      /   _,.-‐'~/⌒  ⌒\
    /   ,i   ,二ニ⊃( ●). (●)\
   /    ノ    il゙フ::::::⌒(__人__)⌒::::: \
      ,イ「ト、  ,!,!|     |r┬-|     |
     / iトヾヽ_/ィ"\      `ー'´     /
245774ワット発電中さん:2009/04/18(土) 02:09:44 ID:Rl2t3s+u
動作速度はどうなるの?
246774ワット発電中さん:2009/04/18(土) 09:05:28 ID:cZSeRksD
>>241
マヂレスすると、メモリやCPUのロジック素子を構成する原子の大きさや
半導体中での電子の移動速度は決まっているし、ピン数や歩留まりなど
から、実用的なダイやパッケージのサイズも決まっているので、過去の
ムーアの法則が、将来も従来どおり適用できるわけがない。

現に、CPUの動作クロックの上限はここ数年で既に頭打ち、メモリやペリフェ
ラルを接続する外部バスに至ってはもう10年近く進歩がない。

大量のメモリを積んだとしても、メモリ有効に利用するため、例えば8GBの
メモリ全てにHDD等の外部記憶からデータやプログラムをロードするのに、
どれくらいの時間がかかるか単純計算してみるといい。

あるいは、ライトバックキャッシュが有効な場合、電源断が起こる危険性や
シャットダウンにかかる時間を想像してみるといい。
247774ワット発電中さん:2009/04/18(土) 09:08:07 ID:76h81gqi
この人んhkで見たことある
248774ワット発電中さん:2009/04/19(日) 00:02:21 ID:/s/32iRP
試用版HEWを新しいのにインストールしなおしたら同じソースコードでも微妙に動作が変わって
驚きだ・・
SH7045F使っていてMTUのコンペアマッチで割り込みを起こすようにしているのだけど
以前はMTUの値を読んで0になっているときには割り込みが必ず終了していたのに
今のだと割り込み関数の実行前の場合がある。
まー、もっと腕があれば詳しく調べられるだろうが不思議な現象だ。
249774ワット発電中さん:2009/04/19(日) 09:20:08 ID:Ok3/LtcC
            /)
           ///)
          /,.=゙''"/
   /     i f ,.r='"-‐'つ____   こまけぇこたぁいいんだよ!!
  /      /   _,.-‐'~/⌒  ⌒\
    /   ,i   ,二ニ⊃( ●). (●)\
   /    ノ    il゙フ::::::⌒(__人__)⌒::::: \
      ,イ「ト、  ,!,!|     |r┬-|     |
     / iトヾヽ_/ィ"\      `ー'´     /
250774ワット発電中さん:2009/04/19(日) 12:48:22 ID:6oiNQjAb
この人、顔はおもいっきりテキトーなくせに手は妙にリアルで気持ち悪い
251774ワット発電中さん:2009/04/19(日) 13:16:49 ID:/ADkdlbR
いやいや コイツ 人じゃないから
252774ワット発電中さん:2009/04/19(日) 13:50:08 ID:yvHlVxc5
きっと中の人などいる
253774ワット発電中さん:2009/04/19(日) 14:23:03 ID:76rvb2r/
>>246
技術者「今度ばかりは理論的限界です。無理っす!」
経営者「私の在任中は、ムーアの法則を維持します」  このせめぎ合い。

ぶっちゃけ、物理的に無理とされた処理能力でも、IBMの1000コア!CPUで無理が通ってしまった。
今後はCPUの内部処理で、大量のコアを統合するソフト面で競争にならんかな。

ところで、手(ポート)だけリアルで顔(CPU)がゆるい・・・・H8そのものでは?
254774ワット発電中さん:2009/04/19(日) 16:56:12 ID:mDiqYefx
>>246
コア数競争が一段落したら、次はロード速度を向上するために
バス幅競争になって4096bitバスとかになる。そしたらもうチップ内でも
パラレルではやってられんてことになって、高速シリアルバスが登場して
そしたら・・・

無線とか光コネクトのチップとかでてこないかな。ルネとかNEC(もう同じ会社か)が
無線デバッグデモってたけど、もはや半田付けとかの概念が消滅して、電源だけ
配線したらモジュール間がハイパーキューブ接続されるの。
255774ワット発電中さん:2009/04/20(月) 07:29:03 ID:D3UEe//r
>>254
> バス幅競争になって4096bitバスとかになる。

今やCPUより集積度の高いGPUでも内部256bitとかだろ。バス幅を広げると
ビット間の遅延時間差のばらつきが大きくなるし、チップ上で配線領域が
占める面積も増える。配線間のクロストークや電源ノイズも増えるだろう。

> パラレルではやってられんてことになって、高速シリアルバスが登場

パラレルをスループット維持したまま、シリアルに変換するとなると、例え
ば32bit幅をシリアルで送るには、クロックレートが32倍以上でなければなら
んわけだが?

> 半田付けとかの概念が消滅して、電源だけ 配線したらモジュール間が
> ハイパーキューブ接続されるの。

野良チップが流行するわけでつね。
256774ワット発電中さん:2009/04/20(月) 15:20:19 ID:vKHeenCE
GPUって何だよ>>255
恥ずかしい間違いだなww

CPU(中央演算装置)だぞ
情報処理2種を持ってる俺が言うんだから間違いない。
257774ワット発電中さん:2009/04/20(月) 15:46:00 ID:T2T0P8ku
>>256
もちつけ。
ttp://www.google.co.jp/search?hl=ja&q=GPU%E3%81%A8%E3%81%AF&lr=
これ読んで冷や汗たらせ。w
258774ワット発電中さん:2009/04/20(月) 16:56:18 ID:iS9hbUHq
ちょっと待て
 その書き込みは
  アサヒかも
259774ワット発電中さん:2009/04/20(月) 19:14:17 ID:w4V3zWpl
            /)
           ///)
          /,.=゙''"/
   /     i f ,.r='"-‐'つ____   こまけぇこたぁいいんだよ!!
  /      /   _,.-‐'~/⌒  ⌒\
    /   ,i   ,二ニ⊃( ●). (●)\
   /    ノ    il゙フ::::::⌒(__人__)⌒::::: \
      ,イ「ト、  ,!,!|     |r┬-|     |
     / iトヾヽ_/ィ"\      `ー'´     /
260774ワット発電中さん:2009/04/20(月) 21:02:41 ID:dhpqXidr
オタクは、柚木正章だ
261774ワット発電中さん:2009/04/20(月) 21:52:36 ID:dhpqXidr
おチンチンが剥けない

オタッキー柚木正章です。

アメリカ人的考え
262774ワット発電中さん:2009/04/21(火) 10:19:38 ID:fXJeCzAO
「新人類」!!

「ラムちゃんだ!」

一人で日本橋行くのってオタク!!

以上、柚木正章でした。
263774ワット発電中さん:2009/04/22(水) 19:07:42 ID:BwEk22+/
オタクって友達いないことなんだょ

柚木正章(ゆのき まさあき)
264774ワット発電中さん:2009/04/27(月) 17:59:51 ID:8GHdGlUp


            _,ノ‐''''''^¨¨¨⌒ ̄⌒^^''¬-、,_          
        ._v-''¨`.,,vー─-、    .,,vー─-、  .¨'ーu_       
      _ノ'″  ./′    ¨┐ ./     ゙'┐   .゙'┐      
     ,/′   ./       .ミ .i′      .)     ゙\    
    ,/′     |     ● | } _●,     |      \   
   ./′    ._,,、-ミ.    .  /¨レ       .人,_      ミ  
  .,ノ′  ._ノ'″  \_   ._,rlト冖へy   _/  ¨'‐u     .゙lr  
 .,i′  /ー-v、.,,_   ¨^^¨´〔    〕.¨^^¨′  __.,、 ゙\.    { 
 〕   ./′    .⌒'''''    \,,,,,,ノ′  v-ー'''¨′   ゙┐   }    ___________
 |   ノ  .────ー      }      __,,.,、v--ー''  {   .]  /
 |  :|        .__,..      .!      `        .}  .} <   僕 オタッキー柚木正章です
 }  .|   .--:;:冖^ ̄       .|      ¨¨¨¨¨¨゙フ¨¨′ .}  }  \
 .|  .}    .\_         .}        ._/    }  .:|     ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ). .〕      .゙ミzu,_      }      _,ノ┘      }  /  
  .{  ).    .,/'″  ¨゙(ァv、,_  .!  ._,,,,v‐'^′       ,ノ  ノ  
   ミ. 7,   .i゙      〔  `¨¨^^⌒           ,ノ′,/   
   ゙). ゙li. _ノi.     ノ                 .,r′.,ノ   
    \ ゙>'′^ー、、、v‐′               .,r′ /    
     .|/      }                ./′,/     
    ./′      ,i¨¨¨¨¨¨゙ソ冖干ア^^^^^^^^^^^| r'′      
    .,i′      ./¬冖'''''7′   ∨¬ーーz─-「 \      
    .}      _ノ     厂¨丁¨¨フ    .ミ、    ゙\    
    .〔     ./′     ゙'-、..!,,ノ'′     ゙).     ゙).    
    {.    .ノ    、、、、、、、、、、、、、、,,,,,,,,,,、.,  〕  .、   {   
     .〕    .]    .|            .〕  |  ゙l! .,/⌒┐ 
     {    .|    |_           ,ノ  ,}   レ''′   .} 
      〕    ).    .゙\_       ,,r''′ 丿   八,   _,ノ 
      .〕    .\_    ^''ー-vvv-ー'″  ,,ノ    ] ¨'ー'''″ 
      .:|      ^'ーv.,_         _,ノ'″    }      
      .}         ¨゙''¬ー----ー''″       ]      
      .}            」            .|       
     ,r冖¬¬¬¬〜----ー《、、、、、、、、、、、、、、,,,,,、.....|       
     r′            |             .リ.      
     .\,,_         ._,,,vrh、、,_           ._)     
       ¨^^'''''''^¨^^''''''¨′    ⌒^^^'''''''''''^¨¨¨⌒″


265774ワット発電中さん:2009/05/01(金) 21:06:29 ID:Qedp8lBO
ぼく柚木正章です。
266774ワット発電中さん:2009/05/01(金) 22:21:16 ID:XZ1YDDtO
「ぼくドラえもんです。」は大山のぶ代が作り出した糞キャラだぞ。
本来は君だれと聞かれて「ドラえもん。」これだよ。
267774ワット発電中さん:2009/05/03(日) 15:40:46 ID:LA2BBlR2
(株)髭男爵のギャグ - 「ン」設計の

超ヲタクの 柚木正章です。

268774ワット発電中さん:2009/05/03(日) 23:55:48 ID:CmLk/IGN
NECエレになるんだっけ
269774ワット発電中さん:2009/05/04(月) 08:39:29 ID:4o9EsAXj
RENECAS
270774ワット発電中さん:2009/05/04(月) 12:17:58 ID:MPrmHe4d
>>269
ルネカス、ワロタ!
271774ワット発電中さん:2009/05/04(月) 13:23:59 ID:GcX/080/
NECESASというのはどう?
ルネカスはいい感じだけど、ち○カスの仲間になりそう。
272柚木正章:2009/05/10(日) 17:29:35 ID:wDPYmpcR
はやく、潰れることを祈ってる。

273774ワット発電中さん:2009/05/13(水) 15:49:54 ID:jVbqOPHj
3664Fを使ってるのですが
動作中にフラッシュROMへ設定値等を保存することは可能でしょうか?

それとも設定値保存用にEEPROMを別途用意しないといけないのでしょうか?
274774ワット発電中さん:2009/05/13(水) 16:18:43 ID:4hYV+g/m
実装面積とかコストとかの問題がないなら、
EEPROM 付けとく方がいいと思う。
275774ワット発電中さん:2009/05/14(木) 09:27:48 ID:Bhjj8UJ5
H8-3694くらいの石を使うのですがC++でコードかくのは無謀ですか?
276774ワット発電中さん:2009/05/14(木) 10:37:37 ID:RbYpq0oI
納期の問題がなさそうで、コードが収まって実行スピードが十分なら、
別にいいんじゃないかと思う。
C++ は、後々資産になるクラスを残していかないとメリット薄いと思うけどね。
277774ワット発電中さん:2009/05/14(木) 11:16:22 ID:Bhjj8UJ5
実行速度はそこまで問われないから、コードサイズとかRAM容量がネックになるかなぁ
単にC++を長く使ってたせいかCとの境界線が曖昧になっててやりにくいってだけなんですが
278774ワット発電中さん:2009/05/14(木) 23:16:44 ID:OeyH6BST
>>273
書き込み中はフラッシュROMが見えなくなるとかの制限があったような?
279774ワット発電中さん:2009/05/15(金) 01:10:29 ID:cRsY7NJu
>>273
>>278も言っているように、フラッシュ書き込み中はフラッシュは読めない。
フラッシュをアクセスするコードはすべて内蔵RAMに置かなければいけない。
オールC言語でもできなくはないけれど、アセンブラの知識は必須。

それを簡単にこなせるような人は、そもそもここでそんな質問する必要もなく
着々と実行に移しているはず。

プログラムも乗っているフラッシュに、書き込み中に強烈なノイズが乗って
CPUにリセットがかかったような場合など、極めて例外的なケースに対しても
完璧な対処ができる自信がないなら、>>274が言うように
外付けEEPROM付けるのが吉。
280774ワット発電中さん:2009/05/15(金) 01:34:01 ID:u820UTRN
>>279
>書き込み中に強烈なノイズが乗って
>CPUにリセットがかかったような場合など、極めて例外的なケースに対しても

あー、あるある・・・orz
うちの設計さんがEEPROMケチりたかったのかしらないが、それでトラブル出して大問題になってたなぁ
281774ワット発電中さん:2009/05/15(金) 11:29:17 ID:Z3dL72+V
内蔵フラッシュって書換保障回数が極端に少ないのはどうしてなんだよ
282774ワット発電中さん:2009/05/15(金) 11:46:56 ID:+ARZK4YK
すべてをフラッシュメモリとして作られるデバイスとでは
製造プロセスが違うから。

…と言う話だ。
283774ワット発電中さん:2009/05/15(金) 14:35:25 ID:F8xliVUv
おーい、柚木正章!!!!!!

終身雇用しとるやろ!

コテコテのベタベタの日本人の考えや。
284774ワット発電中さん:2009/05/15(金) 15:10:02 ID:a1av+r6Z
【露天】▲川温泉その3【混浴】
http://love6.2ch.net/test/read.cgi/onsen/1172292931/

277 :名無しさん@いい湯だな:2009/05/10(日) 19:50:36 ID:regnN8oD
いきなり女の子たちが大量に入って来たから驚いた。
彼女たちは近所の中学のテニス部で、毎週土曜日は練習後に入浴してるそうだ。

おまけに5分くらいしたところで、顧問の♀先生・・・25歳独身(推定)・・・が
「遅れてごめーん」と入ってきた。

で、風呂に浸かっている俺に気がつくと、にっこり笑って「旅行ですか、どちらから?」
と話しかけて(r
285774ワット発電中さん:2009/05/15(金) 17:20:25 ID:vlZI+Vac
>>277
C++の使い方にもよるけど、クラスやテンプレート使っても
コードサイズなんて大して増えないでしょ?数キロバイトが
問題になるような環境じゃなければ。
286774ワット発電中さん:2009/05/15(金) 20:13:20 ID:LeaG95gX
トラ技の付録にビンヘッドをハンダ付けしてもう2年
287285:2009/05/15(金) 20:30:55 ID:vlZI+Vac
あっ。3694ってROM 32K、RAM 2Kとかのやつか。それは苦しいね。
288774ワット発電中さん:2009/05/15(金) 21:20:45 ID:F8xliVUv
赤字の半導体部門、やめろよな。
289774ワット発電中さん:2009/05/16(土) 02:44:14 ID:dIZSHTkD
まずは赤字をやめよう。
290774ワット発電中さん:2009/05/17(日) 04:51:15 ID:lJgyHOyB
初心者ですが質問してもいいですか?
H8/300Hを使ってアセンブラの勉強してます。
なんですがプログラムカウンタの更新のところで躓きました。

PCは24bitのレジスタで、次に実行すべき命令のあるアドレスを指していると教えられました。
ここでよく、順次実行される場合は「+1」されて次の命令を指し示すと言われるのですが、
この+1⇔+2Byteされたことでどうして次の命令のアドレスに行くのかがぴんときません。

メモリ構成で、偶数の上位バイトと奇数の下位バイトにバイト単位でアドレスを割り当てているということは調べました。
また、H8/300Hはメモリの最大構成16MBなので24bitでメモリのアドレス全域を指定できるというのは分かりました。
しかし命令というのは必ず2Byteで構成されているということでしょうか?この2Byteの内訳が分かりませんでした。

PCの挙動について、
命令を実行する際にアドレスの中の何を参照して次の命令の場所へと値を更新するのか教えてください。
よろしくお願いします。
291774ワット発電中さん:2009/05/17(日) 11:12:31 ID:woJiMDXh
>>290
命令は2バイト、または2の倍数の大きさになる。
そんなの命令表見ればわかるだろ。
こんなところで躓くなんて、
本質的に向いていないから違う進路目指したら?
292774ワット発電中さん:2009/05/17(日) 11:17:39 ID:2oylZcGQ
やりたがってる奴の芽を摘むなよゴミクズ
293774ワット発電中さん:2009/05/17(日) 12:04:43 ID:woJiMDXh
アセンブラ勉強するなら最初に命令表見るのが普通だろ。
294774ワット発電中さん:2009/05/17(日) 12:13:13 ID:woJiMDXh
>PCは24bitのレジスタで、次に実行すべき命令のあるアドレスを指していると教えられました。
>ここでよく、順次実行される場合は「+1」されて次の命令を指し示すと言われるのですが、

この教え方もおかしいね。H8/300Hなら10バイト命令とかもあるのに。

もしかすると教える側の教え方がヘタなせいで
学ぶ側が混乱させられているという、気の毒な例なのかもしれない。
295774ワット発電中さん:2009/05/17(日) 13:47:26 ID:AoAjcp53
>>291,293
偉そうに言うな! お前も駆け出しの頃、わからなかったはずだ。
すでに知っているから、そういう言い方になるんだ。

やる気があってやってるやつを虐めるな。

296290:2009/05/17(日) 14:34:42 ID:lJgyHOyB
どうもありがとうございます。
プログラミングマニュアルの命令セット一覧のどこを見ればよいのかわかりませんでしたが、
おそらくインストラクションフォーマットだと思いました。
ここに命令とアドレッシングモード毎に第1バイト、第2バイト〜と載っていたのでこれかと思いました。

例えば、「MOV.B #xx:8,Rd」の命令の場合、
アドレッシングモードがイミディエイトであり、インストラクションフォーマットでは第2バイト目がIMM(イミディエイト)となっています、
これは第1バイトと合わせて計2バイト使うためにこの命令は2バイトであるから、
メモリ上に偶数番地から2バイト分占有しているので、次の命令はPCに+1されたアドレスを参照する。
と考えていいんでしょうか。

同様に「MOV.L #xx:32,ERd」の場合、IMMは第3バイトから32bit=4バイト使い、
上位2バイト(命令そのものやどのレジスタであるかを表すビットパターン)と合わせて6バイト使うため、
この命令は6バイト命令であるので、PCの値には+3=されて次の命令のアドレスを示すと解釈しました。

これで合っているでしょうか。間違っていたらご指摘お願いします。
297290:2009/05/17(日) 18:48:38 ID:lJgyHOyB
またちょっと疑問が生まれました。
例えば2バイト命令のとき、PCの値に+1されたら次の奇数アドレスを示してしまわないんですか?
1バイト毎にアドレスが割り振られているということは、PCの値を+2しないと常に偶数番地を示せないと思ったんですが。
もしかしたら命令のバイト数分だけPCがインクリメントされるので、PCの値は2の倍数だけ動くということでしょうか。

>>296での+1と+3のところはそれぞれ+2と+6になると考えるべきでしょうか。
298291=293=294:2009/05/17(日) 19:54:58 ID:woJiMDXh
>>290
H8ではワードアクセスは必ず偶数番地で行われる。
PCもビット0は常に'0'になっていると考えていい。
つまり、PCが「+1される」なんてことは絶対ありえない。



あなたの書き込みを最初に見たときからすごい違和感感じていたんだけど、
なんでそんなにPCの挙動にこだわるの?
書き並べた命令が(分岐でもしない限り)順に実行されると解釈して
なんの問題もないと思うんだけど。

とりあえずPCの挙動の細かいことは棚に上げておいて、
そんなことよりもっと重要な学ぶべきことが他にあると思う。

私が>>291で「本質的に向いていないから」と書いたのも
そのPCに異常にこだわるセンスがちょっと???に感じられたので。


#H8じゃなくSHならPCの挙動に敏感に反応するのもわかるんだけどね。
#「遅延スロットでPC相対アドレッシングを使ったら、
#実際にアクセスされる番地はどこか?」みたいな面倒くさい問題になるから。
299774ワット発電中さん:2009/05/17(日) 21:03:00 ID:Cd76FU9P
>>298

学生か新入社員研修かなんかで、レポート書けとか言われてるんじゃないの?

向いていないなんて一言言うまえに、勘違いのポイントを教えてあげれば良いでしょう。
所詮、ここは2chだけどさ。

>>297

大抵のことは、マニュアルを読めば書いてあるよ。
質問されてるようなPCのことはさほど書いてないけど、
通常使う分にはそんなこと考える必要がないというのが、その理由。
300291=293=294:2009/05/17(日) 21:31:46 ID:woJiMDXh
>>290
あなたに「PCが+1される」と教えたその人は、
一体どのような方でしょうか? 職場の先輩?それとも単なる友人?
H8のアセンブラを少しでもかじった人なら「PCが+1される」
なんてこと絶対ないことわかっているはずですが。


あるいはその人はH8の命令コード群をC言語で

short int H8_instructions[]

みたいに捉えているのかもしれません。
short int の配列ならば+1で実際にはポインタが2進むから
一見つじつまが合っているように見えますが、
アセンブラとC言語は別物です。C言語の変な先入観を
アセンブラの世界に持ち込むといっそう混乱します。
(C言語は「高級アセンブラ」などと呼ばれているから
勘違いする人が多いみたいですが、はっきり言って別物です)
301774ワット発電中さん:2009/05/17(日) 21:45:30 ID:FCn4XIfe
他人の些細な疑問なんか捻り潰して、自分色に調教したいの(はーと)
302774ワット発電中さん:2009/05/17(日) 22:38:41 ID:7uv4ecnN
速く、半導体から身を引け!

赤字を作る部門はやめろ!
303774ワット発電中さん:2009/05/17(日) 22:57:41 ID:u0T2ewnK
PC が +1 されるとか教えてくれた人って、PIC使いじゃね?
304774ワット発電中さん:2009/05/17(日) 23:28:29 ID:zCF542vc
PC が +1
が+1アセンブラ行なら問題ないのでは?
単位が明示されていないので
305774ワット発電中さん:2009/05/18(月) 00:13:00 ID:d3BISGvC
自己弁護のために口数が多くなる男の人って・・・
306774ワット発電中さん:2009/05/18(月) 00:27:23 ID:MhryPWCb
特に誰もそんなことは教えてないんじゃないか。

>290を見ると教科書かなんかで見たCPUというものの動作の抽象的な説明を
H8に当てはめて自分でそう考えただけに見える。

なので、PC+1は単に次の命令を指すというだけの意味で、具体的に何バイトかとかは
問題にしていないんだよ、で終わりだと思う。
307774ワット発電中さん:2009/05/18(月) 01:24:33 ID:dgBE/Fs2
いや、命令とかオペランドの長さについても書いてるからPCのアドレスが
何バイト飛ぶかまで意識してるだろ。
308774ワット発電中さん:2009/05/18(月) 02:45:37 ID:6ZrQ2Fnp
>自己弁護のために口数が多くなる男の人って・・・
自己弁護のために口数が多くなる女よりはマシだな
309774ワット発電中さん:2009/05/18(月) 02:48:12 ID:6ZrQ2Fnp
>PCは24bitのレジスタで、次に実行すべき命令のあるアドレスを指していると教えられました。
>ここでよく、順次実行される場合は「+1」されて次の命令を指し示すと言われるのですが

教えてくれた人によーく聞いてみるのが一番だと思うわ
310774ワット発電中さん:2009/05/18(月) 10:08:38 ID:SvCc2eGb
ID:woJiMDXh
何この人みっともない
311774ワット発電中さん:2009/05/18(月) 10:50:44 ID:0LBxJV7e
爺さんだろ。
古きよき時代の俺の豊富な知識を見ろ!て感じじゃないかね。
312774ワット発電中さん:2009/05/18(月) 10:57:36 ID:dfnPIiMP
豊富な知識というか、俺はそこまでは辿り着いたんだぞ! お前には無理
とか言いたいのでわ。
313774ワット発電中さん:2009/05/18(月) 16:14:37 ID:ghq8iq39
いや、最初のレスが批判されて
さすがに自分でも悪いと思ったのか
何回もフォローするんだけど
どんどんドツボにはまっていくパターン
314774ワット発電中さん:2009/05/18(月) 18:02:40 ID:vtfoyFF1
>あなたの書き込みを最初に見たときからすごい違和感感じていたんだけど、
>なんでそんなにPCの挙動にこだわるの?
と思うなら、PCに拘らなくても良い理由を教えてあげるといいね。
質問者本人の着目点は「PCの値」あるいは「PCの増え方」なんだから、
それを考えることを全否定されれば、困ってしまうわな。

>爺さんだろ。
いや、もっと若いような気がするな。
若いヤツは、自分の知識が高い事が前面に出てしまって、
駆け出し/初心者を小馬鹿にする傾向があると思う。
一方、年寄り/じいさんは、人間的にも落ち着いているので
「あ〜、なるほど、そういう所に目が行ってしまうんだ」と
達観すると思うなぁ。
315昨日のID:woJiMDXh:2009/05/18(月) 22:05:33 ID:pR35oPzT
俺を叩くのに必死な奴はいっぱいいるけど、
>>290に有意義なアドバイスをしてあげる人は誰もいないのね。
316774ワット発電中さん:2009/05/18(月) 22:54:15 ID:elMeJR0+
317774ワット発電中さん:2009/05/19(火) 04:09:33 ID:1LIODlrM
>>315
>>309に答えが出ている。
318774ワット発電中さん:2009/05/20(水) 19:07:49 ID:T06OZh0c
おーい!ゆのきーーーまさあきーーーーー

相変わらずIBM-PC互換機使ってるかい?

319774ワット発電中さん:2009/05/20(水) 21:24:59 ID:azLsZC1h
H8のPCが命令実行後に+1バイトならエミュレータ作りも楽できたのに
320774ワット発電中さん:2009/05/21(木) 13:15:58 ID:vnM4bVOh
>>319
1byte256個の命令にレジスタからアドレスまで入れろと申すか
せめてlongword固定とか…

で、+1(命令)だろうなあ。
ttp://cai.int-univ.com/sugsi/Lecture/CPU/4/ProgRegs.html
321774ワット発電中さん:2009/05/21(木) 14:05:52 ID:BkIZ8AKV
アドレスと即値の扱いをSHみたいにすれば何とか入らんか?

すげー効率悪くなると思うが。
322774ワット発電中さん:2009/05/21(木) 16:33:29 ID:u4ha3mzj
現在H8/3052FでA/D・D/Aポートを用いてループ計算をさせてディジタル制御をしています.
外部電圧を取得,計算,出力(オペアンプをかませて正負) 繰り返し…

ただ,1ループで1msを切れません.できれば100usくらいまで高速化したいなと…

それで秋月のAKI-SH2/1045FのRISC(CPU周波数は低いが4倍という謳い文句に惹かれて)かSH7144F(もしくはSH7125FTiny)を使おうかと検討しています.
SH2にした理由は単にキットが見つけれなかったからです.
できればもっと高速なSH3くらいを検討したいと考えていますが,手ごろなキットはないでしょうか?

A/D・D/Aポートと開発ツールがついていることが必須事項です…
323774ワット発電中さん:2009/05/21(木) 19:44:03 ID:scBEFsGV
SHボードといえば、アルハープロジェクトでしょう。やっぱり。
http://www.apnet.co.jp/
324322:2009/05/21(木) 21:57:40 ID:u4ha3mzj
>>323
ご紹介ありがとうございます.

SH-3 SH7709S StarterKitを検討します.

通常SHシリーズにはA/D・D/Aコンバータは内蔵されているのでしょうか?
325774ワット発電中さん:2009/05/21(木) 22:27:57 ID:scBEFsGV
>>324
>通常SHシリーズにはA/D・D/Aコンバータは内蔵されているのでしょうか?

そんなことまで人に聞くのか? 自分で調べようという気はないの?
データシートダウンロードして、見れば1発でわかるじゃん。
326774ワット発電中さん:2009/05/21(木) 23:41:57 ID:eoxw/dUR
変換時間は気にしないのかしら?
327774ワット発電中さん:2009/05/21(木) 23:43:00 ID:LSXcsWv0
どの程度の処理しているか分からないけど・・
H8クラスでC言語だとfloat/double型の演算を多用するとかなり遅くなるよ。
int/long型を使用した固定小数点で置き換えれば高速化できるかも。
328774ワット発電中さん:2009/05/22(金) 00:03:03 ID:HEM4OGn9
1ループ100us程度の処理ならアセンブラで書けばいいのに
329322:2009/05/22(金) 00:10:19 ID:dJY0EwhU
>>325
すみません,おっしゃるとおりです…
調べてみます.

>>327
一応過去にint中心になるように書き換えていますがそれでもなかなか…
6ms→4ms程度でした.

>>128
その手もありますね…

ただ,C++からの移植でして,アセンブラに直すほど余裕がないのです.
RS232Cからパラメータの送受信をPCと行う必要もありますし…
PC(Core2 2GHzで実行して0.5us程度)で実行していた時代もありますが,
OpenGLとの連携を行うと描画にCPUパワーが取られてしまい処理が遅くなったため制御部分のみマイコン化した次第です.
330322:2009/05/22(金) 00:18:26 ID:dJY0EwhU
>>325
H8と同じチャンネル数,分解能でありました.
申し訳ありませんでした.
331774ワット発電中さん:2009/05/22(金) 09:31:38 ID:TzuHfQIz
>>329
富豪環境でいいのなら (大学の研究?) もう1台PC用意して
InfiBandとかMyrinet等の低レイテンシネットで接続
MPIかなんかでノード間通信すれば良かんべ
332322:2009/05/22(金) 09:49:17 ID:dJY0EwhU
>>329
助言ありがとうございます.
はい,大学の研究です.
PCは何台も余っているのでしようと思えば可能ですし,たしかにパソコンでの実行が手軽に高速化できるのですが
OSが介入する
(例えばウインドウをドラッグするときも,その瞬間に一瞬だけCPUパワーがおち,制御が止まります…)
ことで一瞬でも処理が落ちると制御している機器が破損するという…
そういう意味でOSの介入がないマイコンへの移行した経緯があります.

333774ワット発電中さん:2009/05/22(金) 09:52:01 ID:Xo28RiED
>>330
IOが少なくていいんなら、SH7125お勧め。

アルファプロジェクトのSH/Tiny開発キット
ttp://www.apnet.co.jp/product/tiny/index.html
334322:2009/05/22(金) 11:57:15 ID:dJY0EwhU
>>330

ありがとうございます.
>>322に書いたように一応候補としてあげてはいますが,
25MHzのH8から50MHzのSH2へ移行するよりも200MHz弱のSH3の方が処理が早いかと思いまして…

内部構造の違いから大した差が出ない・200MHzは冗長であると言う場合は考え直します.
335774ワット発電中さん:2009/05/22(金) 12:54:22 ID:W8TGLa0+
>>334
レスアンカー(>>n)は発言相手を指すようにしてね。

一台ぽっきりの設備ならコストを気にせずCPUパワーで
逃げる手もありと思うよ。SH3でもSH4でも好きなのを選べばいいよ。

思い切ってループの中身(長いの?)をさらしてくれると盛り上がるぞ〜
336774ワット発電中さん:2009/05/22(金) 13:37:37 ID:GXHGBrMU
C++の移植というのが足かせだけど、
問題をクリアできるなら、FPGAやCPLDでやれば、
デバイスは安いし、マイコンより高速処理。
337322:2009/05/22(金) 13:38:56 ID:dJY0EwhU
>>335
アンカーミスしました(汗
すみません…

結局はSH7144Fにしようかという話にまとまりました…
が,25MHz→50MHzで体感的に変わるのでしょうか.

ループ内は少々お待ちください
338774ワット発電中さん:2009/05/22(金) 13:56:21 ID:l5eWaF+k
かなり変わるんじゃないかね
特にキャッシュがヒットしまくれば
339322:2009/05/22(金) 14:17:15 ID:dJY0EwhU
http://kissho.xii.jp/1/src/1jyou77413.c.html

DLP:denshi

すごく汚いソースです…
マイコン初心者状態で書き上げたものなのでご了承ください…
340774ワット発電中さん:2009/05/22(金) 16:20:06 ID:Xo28RiED
>>338
SH7144はキャッシュはないんじゃないか?

外部アクセスしなければ、キャッシュの必要もないけど。
341774ワット発電中さん:2009/05/22(金) 17:29:52 ID:60YR4uiM
読む気にならなかったから、さらっと見ただけで見当違いとは思うけど、シリアル送信を割り込みにしたら?
シリアルの送信って遅いし。
342774ワット発電中さん:2009/05/22(金) 18:14:31 ID:GXHGBrMU
>>339
float変数でもないのに、小数点計算をしているみたいですけど、
もしかしてこれは革新的技術でしょうか?

343774ワット発電中さん:2009/05/22(金) 18:44:28 ID:W8TGLa0+
main関数のwhile(1)を見ただけだけどかなり改良の余地がありそうだね。
暗黙の型変換だらけでランタイム呼び出しが激しそう。

ルネサスのコンパイラならとりあえずdouble型をfloat型として扱うオプションを
有効にすると1/3ぐらいには改善するかも。だまって"0.49"みたいな数値定数を
書くとdouble型扱いになってしまうからね。

逆アセンブラのコードを見ながらできるだけランタイムが呼び出されないように
記述して丁寧に整数化すれば100usぐらいいくんじゃないかな?

SHでどれぐらい速くなるか知りたければシミュレータを使ってネックになりそうな
部分のステート数を調べてクロックの逆数を掛ければ大体わかるよ。
H8と比べてみるといい。
344774ワット発電中さん:2009/05/22(金) 18:46:32 ID:79tSJE8f
H8のばあいdoubleよりfloatのほうが早いの?と基本的なことを聞いてみる
345774ワット発電中さん:2009/05/22(金) 19:03:50 ID:KnAQw8Y0
そうです

346774ワット発電中さん:2009/05/22(金) 19:10:26 ID:W8TGLa0+
float型は32bit長だからH8のCPUレジスタのそのまま納まってランタイム内でもシフト、
加減算などの操作が割と楽に行える。double型になるとそうもいかずオーバーヘッドが大きくなる傾向。

SHなら以下に処理時間が載っているけどH8はないねぇ。
http://documentation.renesas.com/jpn/products/tool/apn/rjj06j0023_shc_libbench_an.pdf
347774ワット発電中さん:2009/05/22(金) 19:17:52 ID:79tSJE8f
自分が使う用途でdoubleが必要な計算ってそう多くないし基本floatを使ったほうが良いのか
勉強になりました
348774ワット発電中さん:2009/05/22(金) 19:42:32 ID:DB+RlaAz
ad_data=ad_data*0.49;

ad_data*=49;
ad_data/=100;
にするとか
349774ワット発電中さん:2009/05/22(金) 20:03:25 ID:GXHGBrMU
100us / 24MHz = 2400state

2400もあれば、今のまま3052でも いけそうな気がしない?
350322:2009/05/22(金) 21:35:58 ID:dJY0EwhU
>>342-343
ありがとうございます.
ご指摘のとおり不思議な書き方をしていたようです.
ほかにもdoubleである必要がない部分などが多いようです…

コンパイラはGCCデベロッパライトです.
オプションにあるか調べてみます.

>>348
大変ありがたいです.
指摘されて気づきました…これはおかしいですね.
基本的にはやはりint化したほうが早いのでしょうか?
それともfloat程度であればあまり差はなくなるのでしょうか.


組込みはこういう部分でかなりの差が出るものだと痛感いたしました.
皆様の助言非常にありがたくいただいております.
351774ワット発電中さん:2009/05/22(金) 21:46:18 ID:9/ZkcZxZ
これだからCしか出来ない奴はw
352322:2009/05/22(金) 21:56:58 ID:dJY0EwhU
>>351
申し訳ありませんorz
353774ワット発電中さん:2009/05/22(金) 22:09:06 ID:iay0qot0
>>348
シフト演算ができるチップなら2^nの方が早くなるんじゃないかと妄想してみる
354774ワット発電中さん:2009/05/22(金) 23:58:29 ID:W8TGLa0+
大サービス。
たとえば(18.531*0.234+1.23)/3.14≒1.772を固定小数点で処理すると

// 変数はすべてint型
a = 18.531 * (1 << 10);
b = 0.234 * (1 << 10);
c = 1.23 * (1 << 10);
d = 3.14 * (1 << 10);
// ここから計算
y = ((long)a * (long)b) >> 10; // 乗算
y += c; // 加算
y = ((long)y << 10) / d; // 除算
// 結果 y = 1811となり1.767 * (1 << 10)の近似値が得られる

"10"はQと呼ばれる小数部のbit長で分解能を保ちながら演算結果が
オーバーフローしないように選択。上記はQ5.10形式でH8のint型だと
整数部5bit、小数部10bit及び符号に1bitの計16bitとなる。表現範囲は±32。
処理速度についてはCPUによるから何とも言えんがfloat型とは
比較にならないぐらい速いよ。ただしH8の場合は「バレルシフタ」が
ないので劇速という訳にはいかないけど。
355774ワット発電中さん:2009/05/23(土) 00:12:03 ID:AAkldMK8
floatの計算は、遅くなるよ。490で掛けて100で割ると、
びっくりするくらい速くなる。

だいたいイメージだけど、こんな感じ

 計算の早い順に
   ・unsigned char
   ・unsigned int
       (ていうか、そのマイコンの持っている汎用レジスタのbit幅)
       (H8/3052データシートの2-4ページの汎用レジスタの図が
        16bitになっているので、たぶん16bitの計算が
        一番得意なんだと予想される。)
   ・unsigned long
   ・signed int
   ・signed long int
   ・float
   ・double

http://documentation.renesas.com/jpn/products/mpumcu/rjj09b0335_3052bhm.pdf
  具体的には、上記H8/3052データシートの 巻末付録-19ページ以降に記載の
  「命令実行ステート数」による。
  計算するなら、Cで書いてコンパイルした結果のアセンブラ命令を、
  この巻末資料から探しだし、命令ステート数を求め、加算したものが
  実際に必要なclock数になる。
  例えば、かけ算とわり算は、22clockもかかる。
  これがfloatだと、さらにドンと時間がかかる。

  上記の内容は、違っているかも知れないので、詳しい人フォロー願います。
356774ワット発電中さん:2009/05/23(土) 00:14:31 ID:CPeHFpY0
signedとunsignedで明確に速度が変わる?
普段あまり意識してなかったけど今後明示しておいた方が良いか
357322:2009/05/23(土) 01:17:50 ID:777cusVm
>>354
大変勉強になります.
このあたりの知識が皆無でしたので勉強してきます.

>>355
計算結果が小数点になるとしても490かけて100で割ったほうがお得なのですね!
このあたりがGCCがどのように判断しているかがいまいちわかりません.
longで宣言した変数に代入される計算結果が少数の場合,自動的にfloatやらdoubleになってしまうのでしょうか?
それともintのまま小数点以下も2進数として格納されるのでしょうか?
無知で申し訳ありません.
358774ワット発電中さん:2009/05/23(土) 01:33:59 ID:UHFgPtzx
今日は勉強になるな
359774ワット発電中さん:2009/05/23(土) 01:37:53 ID:kvn+T8yi
>>356
普通は同じだろう。
ランタイム呼ぶような状況だとunsignedの方が微妙に速くなる事もあるが。

360774ワット発電中さん:2009/05/23(土) 02:02:12 ID:Y2ii4W6T
>>353
計算済みの10bit幅のテーブル参照の方が早いかも?
361774ワット発電中さん:2009/05/23(土) 02:19:42 ID:AAkldMK8

>>357
小数点を含む計算は、処理系依存ということになっています。
つまり「gccの言う通りに、あ・た・り・や・ん・せ・い」ということです。
でも、どのように考えたかを知る方法はあります。
簡単です、はき出されたアセンブラソースを見るのです。
「え〜、こんな長い結果なんて、わかんない」と思うでしょうが、やり方1つです。
とても短いプログラムで試してみれば、すぐわかります。
void main(){
  unsigned int a = 123;
  unsigned int b;

  b = a * 0.49;   // 小数使用

//  b = a * 49;    // 整数で処理
//  b = b / 100;
}
という感じです。コンパイラが0.49をどのように扱うのかがポイントですね。
362774ワット発電中さん:2009/05/23(土) 06:51:27 ID:ab8ULmlp
b=a*0.49;
有効数字上
b=a*(1÷2 - 1÷2^7 - 1÷2^9) (=>()内は約0.49023)
ってことでいいなら
b=(a>>1)-(a>>7)-(a>>9);
っていう具合にシフトと減算だけになるから乗除算しなくて良い分
速いかな?
363774ワット発電中さん:2009/05/23(土) 07:23:23 ID:1W1ZcZjx
入力か出力のオペアンプに可変抵抗をつけてゲイン調整して
掛け算処理を減らそうぜ
364774ワット発電中さん:2009/05/23(土) 10:29:53 ID:lm5p0rxN
数値定数に小数点をつけるとdoubleと認識されるよ。

ad_data=ad_data*0.49 だと

最初にad_dataの値がdoubleに型変換されて
その結果と0.49のdouble同士の乗算が実行されて
その結果がint型に型変換されてad_dataに代入される

合計3回のランタイム呼び出しが発生してしまうはず。
乗算はもちろん型変換もかなり時間がかかるので
組込系ではこういった記述は避けたほうがよい。
FPUとか搭載してるCPUなら問題はないけどね。

(参考)http://www.kusa.ac.jp/~kajiura/c/data/newpage1.htm
365774ワット発電中さん:2009/05/23(土) 15:50:26 ID:xGKjTUzT
型変換が気になる場合には、明示的にキャストするとか
数値定数にサフィックスを付けるようにした方がよい

ttp://www.geocities.jp/KY_webid/c/019.html
366774ワット発電中さん:2009/05/23(土) 19:41:56 ID:2/87dHcc
たすけてくだしあ・・・

H8/300Hってクロック入力(EXTAL)と出力(Φ)の位相関係が規定されていませんが、
デューティ補正回路とかのせいでフラフラ変動するのでしょうか?
367774ワット発電中さん:2009/05/23(土) 22:10:00 ID:FuG2xH7o
規定すると動作保証しなきゃいけなくなるから、規定しないはず。
同社保証するってことは検査項目が増えて結局はコストにはねかえる。
多分設計するときにも考慮にいれていないから、やれっていわれても難しいんだと思うよ。
デューティ補正回路は教えてもらったことあるけどそんなにふらふらするもんじゃ無いと思ったよ。
普通のユーザーはそんな規定いらないもん。
なんで必要なの?
Φ基準でタイミング計算すればいいんじゃない?
368774ワット発電中さん:2009/05/23(土) 22:53:14 ID:yDLak9td
システムの上位からのクロックでマイコン部を動作させるのですが、位相関係が決まっていれば
システム側でH8の信号を非同期信号として扱わなくてもいいかなと期待したのです。

やはり規定されてないようなのでマイコン部の信号は非同期扱いで繋ぐことにします。
どうも有難うございました。
369774ワット発電中さん:2009/05/23(土) 23:49:16 ID:WXPiFs7g
ルネサス???

逝ってよし、潰れろ!
370774ワット発電中さん:2009/05/24(日) 01:19:15 ID:qGaxi2zJ
とりあえずサムチョンが潰れてからでいいけどね
371367:2009/05/24(日) 01:57:48 ID:9uStQBaH
>368
非同期として取り扱った方が楽なような気が、、、

>369
ルネサスじゃないもん!
ルネサスに知っている人は多いけどね。
372774ワット発電中さん:2009/05/24(日) 23:06:48 ID:flsoHgaK
>>369
ルネサスが潰れたら日本の機能性LSIの技術基盤が崩壊する。
エレクトロニクス技術からすると、繰り返し回路のDRAMより、機能性LSIのほうがよほど重要
373774ワット発電中さん:2009/05/25(月) 23:40:17 ID:8QkGT7Y2
フォートランの授業みたいなテクだなぁ。
374774ワット発電中さん:2009/05/26(火) 02:09:46 ID:mgfcHMrS
今でもFORTRANって授業で習うの?
375322:2009/05/26(火) 18:01:57 ID:KRtBLgHc
ビットでずらして近似値にするという手法は教科書をみて思い出しました.

とりあえずところどころ訂正しました…
が,おそらく出力値が切り捨てられて0しか出力しないようになってしまいました…

型宣言などが原因のようです…

http://kissho.xii.jp/1/src/1jyou77916.c.html
DLP:denshi
376774ワット発電中さん:2009/05/26(火) 18:23:26 ID:Rie60egH
>>375

> da0*=(0xFF/5)/1000;
(0xFF/5)/1000
整数で計算すれば0にしかならないよ。

デバッガとかシミュレータは使わないの?
演算の各ステップごとに値を確認してやった方がいいんじゃないか?
377774ワット発電中さん:2009/05/26(火) 22:29:13 ID:uqFVXd4G
H8でつかえるシミュレータやデバッガでなにかいいものある?
378774ワット発電中さん:2009/05/26(火) 23:18:59 ID:Z7yK/4zS
>>375
基本はintとかlong型に統一した上で式をばらして
b = a * 49;
b = b / 100;
みたいな計算に置き換えていかないと。

変数 * 変数の場合は
c = (a * b) / 100
というスタイルになってくる。

一般に処理が重たくなる除算"/"も使いたくないから
普通はシフト演算子">>"の出番になる。
H8の場合はCPUに除算命令があってバレルシフト命令が
ないからどっちが有利か一概には言えないけど。

別にアセンブラで書く必要はなくてCでの記述がどういった
CPUの命令を引き出しているか見極めるのがポイント。
H8クラスだとこの辺の理解がないと高速化は難しいかも。

できるだけ速いSHにしたほうがいいような気もするがまあガンバッテ。
379774ワット発電中さん:2009/05/26(火) 23:19:23 ID:uMKp/XS3
ものすごく大雑把にソース見たけど。。。
基本、除算はチョー遅いよ?
式整理して、乗算が出てくるように、もしくは除算をまとめるとかしないと。
あと、関係なさそうだけどインデントとか、大域変数が酷い。。。
380322:2009/05/27(水) 00:48:29 ID:5tmBTZFc
>>376
そのあたりの計算は小数点の乗算にならないように>>348を参考にしましたが…
この場合,やはり型宣言をintからfloatにしないと整数化されますね…

>>377
自分も探しています.
通常はC++Builderを使用しているので変数も監視しながらステップ実行をしたりできるのですが,
GCCデベロッパではやり方がいまいち…

>>378
非常に勉強になります.
ただ,int や long int では49をかけて100で割った場合,小数点以下が切り捨てになりませんか?

なにか大きな勘違いをしているような気がしてきました…

>>379
本当に申し訳ありません.
タブでのインデントに統一するように直しておきます.
2人でソースをいじっていたため統一されていなかったようです.
グローバル変数に関してももう少しわかりやすいように,また使いすぎないように気をつけます.
381774ワット発電中さん:2009/05/27(水) 01:31:55 ID:kh/sTkN6
>>380
C++Builder使ってるなら、演算部分だけ抜き出して、C++Builderで確認できるんじゃないか?
整数型のデータサイズは注意しないといけないけど。
382774ワット発電中さん:2009/05/27(水) 08:05:23 ID:r8F3Har7
>int や long int では49をかけて100で割った場合,小数点以下が切り捨てになりませんか?
だったら,どうやったら整数演算で小数点以下の値が扱えるか考えてみたら?
筆算やった経験くらいあるんでしょ?
383774ワット発電中さん:2009/05/27(水) 08:32:14 ID:sGaSmZTP
>>380
固定小数演算については正規化とかそういうので調べてみると何かヒントがあると思うよ。

例) 3.1875 -> 110011(0x33)って表現する

ようは数値の入力部分で定数倍(2^nが楽?)して、演算中はその定数倍のまま演算して
最終的な演算結果を出力するところで定数で割り算すれば良いでそ。

演算途中で定数で割り算してたら固定小数演算じゃなくて整数演算だよね。
384774ワット発電中さん:2009/05/27(水) 15:44:44 ID:r8F3Har7
>演算途中で定数で割り算してたら固定小数演算じゃなくて整数演算だよね。
んなこたーない.
385774ワット発電中さん:2009/05/27(水) 18:26:33 ID:svlCY1Zi
>>377

HEWにシミュレータ付いてると思うけど?
試しにルネサスCコンパイラでやってみればどうでしょうか?
386774ワット発電中さん:2009/05/27(水) 18:37:25 ID:svlCY1Zi
>>382
四捨五入したいなら、
100で割る前に幾つか足してやればいいのかな
下2桁が
00--49までは切り捨て
50--99までなら、切り上げたい
なら、もうわかるよね。
387774ワット発電中さん:2009/05/27(水) 20:57:44 ID:/Q57B1JI
ayを求める式を整数で演算できるように式を分解するところからやらないと
388774ワット発電中さん:2009/05/27(水) 21:09:57 ID:m67SvaO4
みんなで教えてるんだかイジってるんだかw
389sage:2009/05/27(水) 23:58:59 ID:NQea6rgJ
暇だったので。あってるかどうか知らんが・・

ay = 0.0074 * ay_2 + 59.11 * (ad_data - ad_data0) + 0.5 * ay_1
da0 = -30.192 - 0.15096 * ad_data - 0.009435 * ay
390774ワット発電中さん:2009/05/28(木) 01:38:19 ID:05Me3MiW
391774ワット発電中さん:2009/05/28(木) 11:30:01 ID:js4sIk1Y
どうしても高速小数点演算が必要な時はどうする?
@FPU付CPUを使う
AFreescaleの16bitDSP(fraction機能)を使う
B32bit(SH等)でQ15固定で四則演算関数をアセンブラで作る
C16bit(H8等)でスケーリング管理して整数演算
Dその他

@楽勝だけどコストがメチャ高になる
ACPUが限定される
Cコストは低いがマンドクサイし時間が経つと忘れる

というわけでBにすることが多い。一度関数作ってしまうと、あとはOVFだけ注意すれば
スケーリング全く気にしなくていいし。
「32bitなぞ許さん」と客に言われたらブツブツ言いながらCにする。
その代わり自衛手段として、スケーリング管理表を作成し、コード中にもコメントをしっかり書いておく。

みんなどうしてる?他にいい方法があればおしえて栗。
392774ワット発電中さん:2009/05/28(木) 12:34:26 ID:TT0Fvotn
なぜDSPはFreescaleだけなんだよ?アナデバやTIの方がメジャーだろ。

TI:C2000,C5000,C6000
http://focus.tij.co.jp/jp/general/docs/gencontent.tsp?contentId=49154

アナデバ:Blackfin,SHARC
http://www.analog.com/embedded-processing-dsp/processors/jp/index.html

最近は3$以下のDSPもあるぞ。
http://focus.tij.co.jp/jp/docs/prod/folders/print/tms320f28023.html#pricingpackaging
393774ワット発電中さん:2009/05/28(木) 12:56:03 ID:idYkPpCD
>>391

DMULS.L R4, R5
STS MACH, R1
STS MACL, R0
RTS
XTRCT R1, R0

Bの乗算てこんな感じ?これならよく使う。

Freescaleは「fraction機能」とやらに特徴が有りそうだね。
多分使うこと無いから調べる気がおきないけど。

このスレ的には「RX」の普及に期待するべきかな。
低コストでFPUがついてくれば応用範囲も広がるし。
ピッコロなんかに負けないでもらいたいなあ。
394774ワット発電中さん:2009/05/28(木) 23:58:00 ID:VED96EeE
パソコンで演算をチェック&最適化してから、組み込むとか?
395391:2009/05/29(金) 10:12:14 ID:hM0dtj5i
>>393
>>Bの乗算てこんな感じ?
そうそう、そんな感じ。実際は計算の前にもう少しやっとくことがあるけどね。
「符号1bit + 整数15bit + 小数16bit」を"fixpnt"型で定義して使ってる。
396774ワット発電中さん:2009/05/30(土) 07:59:04 ID:+S8tkzTK
>>393
R32Cじゃ、あかんの
397774ワット発電中さん:2009/05/30(土) 19:12:42 ID:tdUsE8EW
ルネサス系のマイコンは設計してるやつがクソ!

早く撤退しろ!携帯事業みたいに。

三菱は、白物家電で十分だ。
398774ワット発電中さん:2009/05/30(土) 19:18:49 ID:q+0TPiCZ
NECエレの方ですね、休日なのにお疲れ様です。
399774ワット発電中さん:2009/05/30(土) 19:35:01 ID:eyJ5xQ/t
Nも椅子取りゲームに参加だから必死なのか。
400774ワット発電中さん:2009/05/30(土) 22:02:45 ID:qcMnWRbn
Nかー。78K0だったかな、一回だけ使ったことあるな。
H8に比べるといろいろめどかったな。
安いけど。
401774ワット発電中さん:2009/05/30(土) 23:42:33 ID:dnPNAZgf
NECお得意のエミュレーションモードつければいいじゃん
NECモード、日立モード、三菱モード、ルネサスモード
402774ワット発電中さん:2009/05/31(日) 01:35:17 ID:laHB5VTp
intelモード希望
403774ワット発電中さん:2009/05/31(日) 03:22:30 ID:pFzDG2Jm
クアッドコアですね、わかりま
404774ワット発電中さん:2009/05/31(日) 11:58:21 ID:cF1VbOl/
マジな話、デュアルコアなら既にあるよ
405774ワット発電中さん:2009/05/31(日) 19:31:34 ID:pFzDG2Jm
三菱コアと日立コアのがか?w
406774ワット発電中さん:2009/05/31(日) 19:43:05 ID:P+dI6Qjt
コードモーフィング技術で各プロセッサをエミュレートするんですね。
407774ワット発電中さん:2009/05/31(日) 21:50:54 ID:xJBfRcS5
こてこてのべたべたの日本人 大和魂

      柚木正章

終身雇用で老後も安泰。
408774ワット発電中さん:2009/05/31(日) 22:17:02 ID:MWojGv/U
>>407
柚木正章って誰なの?
409774ワット発電中さん:2009/06/01(月) 17:44:35 ID:P1W81NTm
>>408

会社に問い合わせてね。

410774ワット発電中さん:2009/06/04(木) 16:39:48 ID:zadAMWFg
クソ!ルネサスマイコン
特に、ゆのき
やせろよ。
411774ワット発電中さん:2009/06/07(日) 03:25:30 ID:yXYiLm0k
質問があります。教えて頂けないでしょうか?
H8/3067をCで使っています。ビットフィールドが使いたくて、構造体を書いたのですが、
今ひとつよくわかりません。例えば、bit5〜bit0にLCDが接続してあるとします。
struct poo {
  unsigned char dummy :2;
  unsigned char E   :1;
  unsigned char RS  :1;
  unsigned char DATA :4;
} BIT;
#define LCD (*(volatile struct poo *)0x00FFFFE) // アドレスは適当です。
のように定義して、LCDをI/Oポート(8bit出力)につないで、
LCD.BIT.DATA = 0x0eなどとして、うまく動きました。

ところが、これを常時16bitアクセスの領域(バンク)につなぎ変えて
以下のように合計を16bitになるようにしても、まったく動きません。
struct poo {
  unsigned char dummy :10;
  unsigned char E   :1;
  unsigned char RS  :1;
  unsigned char DATA :4;
} BIT;
さらに
struct poo {
  union {
    unsigned int WORD;
    struct {
      unsigned char dummy1 :8;
      unsigned char dummy2 :2;
      unsigned char E   :1;
      unsigned char RS  :1;
      unsigned char DATA :4;
    } BIT;
  } AAA
};
#define LCD (*(volatile struct poo *)0x00400000)  と書いたときは、
LCD.AAA.BIT.DATA = 0x0c; だと動かないですが、
LCD.AAA.WORD = 0x000c; のように16bit代入だと動きます。
ビットフィールドでだめなのに、16bit代入だとOkなのはなぜでしょうか?
412774ワット発電中さん:2009/06/07(日) 04:02:20 ID:HMpy3M2K
そいや、ビットフィールドでアクセスするときの上位下位って気にしたことないな。
コンパイラのバグはさすがにないか。
413774ワット発電中さん:2009/06/07(日) 04:15:31 ID:2+yKkFGF
>>411
>16bit代入だと動きます。
ということからして、&= |= するときに、データが読み込めていない、に10bit
414774ワット発電中さん:2009/06/07(日) 05:32:31 ID:ckiLzfXK
コンパイル結果がアセンブリ言語でどうなっているか確認してみよう
おそらく、下位8bitだけバイトアクセスしてるんじゃないか

#define LCD (*(volatile unsigned int *)0x00400000)
struct poo val16;
val16.AAA.BIT.DATA = 0xc;
LCD = val16.AAA.WORD;

のように
いったん変数val16でビット操作してから一括で書き出したらいいんじゃないか?
415774ワット発電中さん:2009/06/07(日) 12:18:12 ID:2+yKkFGF
>>414
でもそれだと彼の目的にそぐわないんじゃないか?
もともと構造体で1bit操作をしたいんだろうから
416774ワット発電中さん:2009/06/07(日) 14:02:57 ID:GC/jLkau
・コンパイル結果がどう実装されるか規定されていない
・ハード的な構成によってソフト的な実装が制限される
の2つがあるなら、アセンブラレベルで最終的な実装を確認して、必要に応じて
「許される実装」にコンパイルされるようなソースに変えるか、そもそも
Cを使わないしか選択肢がないよね。
417774ワット発電中さん:2009/06/09(火) 06:23:33 ID:ah/R1JLz
0x00400000番地がwrite-onlyになってるんじゃないの?
418774ワット発電中さん:2009/06/09(火) 10:09:32 ID:GsWmbVA2
H8のIICなんですが、下のようにデータをライトしたあと
送信完了待ちが必要です。これはどの程度待てばよいのでしょうか?
OUTPORT(ICDRT, dt); /* データを送信する */
while(TESTBIT(ICSR, TEND) != 1) { /* 送信完了待ち */
}

また下のようにwaitをいれた場合、実際はどの程度待つことに
なるでしょうか?CLKは20MHzです。
INCとCMPとBLEの3ステップ×1/20MHz ×1000?
while(P_IIC2.ICSR.BIT.TDRE == 0){
cnt++;
if(cnt > 1000){
return 100;
}
}

下はミックス表示です。
while(P_IIC2.ICSR.BIT.RDRF == 0){
BRA @H'0FB2:8
cnt++;
INC.W #1,E0
if(cnt > 1000){
CMP.W #H'03E8,E0
BLE @H'0FB2:8
return 100;
MOV.W #H'0064,R0
BRA @H'0FF6:8
MOV.B @H'FFF74C:16,R0L
BLD.B #5,R0L
BCC @H'0FA4:8
}
}
419774ワット発電中さん:2009/06/09(火) 14:39:17 ID:5NEqZH1X
411です。みなさん、いろいろとありがとうございました。

結論からいいますと「お陰様で出来ました!」です。原因は、私の無知でした。
原因 1.Cコンパイラの吐き出すコードが、構造体の共用体でWordで書くとバスアクセスもWordアクセスになるが、
    1bitメンバーをアクセスすると、Byteアクセスになってしまう。
   2.同じ偶数番地指定でも、WordアクセスとByteアクセスで、データbusのLSB位置が異なるのを知らなかった私。
上記2つの同時原因により、WordとByteでデータバスの異なる線に信号が出力されるため、でした。
みなさんの指摘がズバリ的中でした。みなさんの教えにより、アセンブラコードを見ながら、
なんとか解決できました。ありがとうございました。

一つ教えてください。
なぜ、データバスの上位が偶数で、下位が奇数に決められているのでしょうか? 下の図のような感じです。

アクセス      上8bit(H8のHWR=L)           下8bit(H8のLWR=L)
WORD(偶)15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00
BYTE(偶) 7  6  5  4  3  2  1  0 −− −− −− −− −− −− −− −−
BYTE(奇)−− −− −− −− −− −− −− −−  7  6  5  4  3  2  1  0

例えば、8bitメモリを、WORDアクセスする時のメモリの取られ方は、
「奇数番地が上位、偶数番地が下位の連続2番地のセット」で1WORDを表現する、と思っていました。
そうすれば、常に偶数で扱えば良いし、LSBがいつも右端に来るし、調子が良いと思うのです。
420774ワット発電中さん:2009/06/09(火) 15:34:11 ID:jAriKpE3
ビッグエンディアン / リトルエンディアン でぐぐれば
少しは無知が薄まると思うよ

確かにインテルのCPUはずっとリトルエンディアンだが
それが絶対的正解というわけでもない
421774ワット発電中さん:2009/06/09(火) 15:55:08 ID:L/pZDvZ9
ビッグエンディアンの利点がよくわからない。
まさかダンプが見やすいなんて時代錯誤なことじゃないよな。
大抵の処理は下位からやるのが自然だと思うんだが。
422774ワット発電中さん:2009/06/09(火) 16:29:29 ID:jAriKpE3
利点/欠点ではなくて単に決めの問題。どっちが有利/不利ということはない。
たとえばTCP/IPではビッグエンディアンが標準通信プロトコル(ネットワークオーダー)
423774ワット発電中さん:2009/06/09(火) 17:35:44 ID:5NEqZH1X
411です。みなさん、いろいろとありがとうございます。
エンディアンは知っています。卵の形状から来る話ですよね。
調べてみたら、H8はBigEndianなんですね。初めて知りました。(恥ずかし)
そのせいで、このようになってしまうのですね。納得しました。
ありがとうございました。

数値格納目的の場合は、ビッグ/リトルどちらでも良いと思いますが、
今回のように、ハード接続が絡んでくると、
LSBが常に同じ位置の方が良いのかな、と思います。

ちなみに、今回の私のようなケースでは、どのようにするのが、正しい道なのでしょうか?
A)LCDは、HWR側接続、偶数アドレスで構造体を書いて、バイトアクセスする。
B)LCDは、LWR側接続、奇数アドレスで構造体を書いて、バイトアクセスする。
C)好みの問題

424774ワット発電中さん:2009/06/09(火) 17:40:49 ID:5NEqZH1X
411です。たびたびすみません。
考えてみると、構造体の1bitメンバの読み書きをしたときでも、
アセンブラがWORDアクセスしてくれれば、他の16bitのものと同じように
全部偶数アドレスで記述できます。

1bitメンバの読み書きでもbyteアクセスにならずにWORDアクセスにアセンブルしてくれる
そんな記述はできるものなのでしょうか?
425774ワット発電中さん:2009/06/09(火) 20:33:45 ID:jAriKpE3
どうして ワードサイズの一時変数を作り、bit操作をその一時変数に行ってから
ワード単位でI/Oに書くという発想は出てこないの?
マクロでラッパ書けば見た目だけはすっきりするぞ。

つーか、ハードウェア構成によってはすべてのアクセスは
必ずワード単位って指定で、バイトアクセスすると誤動作するなんてよくある。
(単なるByteEnable対応のサボリ)
426774ワット発電中さん:2009/06/10(水) 01:20:37 ID:s/Jazn4t
>>425
ありがとうございます。

>ワード単位でI/Oに書くという発想は出てこないの?
はい、最後の手段として考えています。
が、日立のI/Oヘッダファイルでは、○○.○○.○○ = 1;とか書けばスグに値が変わるので、
僕の追加した外部バスI/Oも、そのように統一したいと思うんです。
僕の変なこだわりだけなんですが。すみません。

>マクロでラッパ書けば見た目だけはすっきりするぞ。
おっしゃる通り、ソースは見た目が半分以上重要で、視線移動の少ない方が、判読性が高いと思います。

if( a==12 ){
  b=5;
} else {
  b=8;
}       と、縦に何行にも渡って長く書くよりも、

if( a==12 ){ b=5; } else { b=8; } 

と1行で書いた方が、が判読性が良いと思います。特に同じパターンがの場合には、

   if( a==12 ){ b=5; } else { b=1; }
else if( a==16 ){ b=6; } else { b=0; }
else if( a==19 ){ b=8; } else { b=0; }
else if( a==25 ){ b=3; } else { b=1; }
のほうが、「a値によってb値を変えてるんだな」と、ビジュアル的で良いと思っています。

b = ( a==12 )? 5 : 1;
b = ( a==16 )? 6 : 0;
b = ( a==19 )? 8 : 0;
b = ( a==25 )? 3 : 1;  も好きで、多用しています。


>マクロでラッパ書けば
この場合のマクロとは、defineのことでしょうか?
よろしければ、教えてください。
427774ワット発電中さん:2009/06/10(水) 01:41:33 ID:cpbCCRPK
LCDを外部メモリ空間でアクセスするのと
内蔵ポートでアクセスするのと同じに考えていいんかいな?
428774ワット発電中さん:2009/06/10(水) 02:25:30 ID:OV5wkyBS
LCDだったら内蔵ポートでしょう普通。
でもI/Oが不足したときには、外部busでやらないわけでもない。
429774ワット発電中さん:2009/06/10(水) 06:02:08 ID:cpbCCRPK
E,RSはH8のどこにつながってるんだろうか?
430774ワット発電中さん:2009/06/10(水) 07:56:00 ID:gXum/5eW
>マクロでラッパ書けば
たとえば

#define LCD (*(volatile struct poo *)0x00FFFFE) // アドレスは適当です。
#define set_data(val) \
do { tempword.AAA.BIT.DATA=(val);LCD.AAA.WORD=tempword.AAA.WORD;} while(0)

static struct poo tempword;

func() {
 set_data(0x0c);
}

> 僕の追加した外部バスI/Oも、そのように統一したいと思うんです。
> 僕の変なこだわりだけなんですが。すみません。
超くだらないな
こんな自己満足のためにCコンパイラにイチャモンつけるのか…
431774ワット発電中さん:2009/06/10(水) 07:58:18 ID:tVezBbe3
>>428
俺は基本外部バスだなあ。
制御信号をソフトで面倒見るのはめんどくせえ。

シングルチップで使わんといかん場合は仕方なくI/Oでがんばるが。
432774ワット発電中さん:2009/06/10(水) 14:37:14 ID:s/Jazn4t
>>430
ありがとうございます。素晴らしいです。なんと言うか最高です。
そんな記述が出来たんですね。知りませんでした。

さきほど久しぶりに林晴比古さんの「プリプロセッサ・パワー」を読み直しましたが、
do{ }while(0)の書き方は載っていませんでした。スゴイです。
{}で複数行書けること、do〜while(0)でそれを実行する方法など、感激です。

すみません、一つ教えてください。
1) #define set_data(val) \
2) do { tempword.AAA.BIT.DATA=(val);LCD.AAA.WORD=tempword.AAA.WORD;} while(0)

1)の「\」は、何を意味する記号でしょうか? 定義の継続改行信号でしょうか?
1)の右に続けて2)を書いて1行にしても良いですよね?
2)の行で、do { temp...とスペースが入っていますが、ここにスペースが入っても良いのでしょうか?
今の今まで、詰めて書かないといけないと思っていました。
433774ワット発電中さん:2009/06/10(水) 16:28:12 ID:s/Jazn4t
411です。実際にやってみました。コンパイルOK、動作OKでした。ありがとうございました。

しかし、残念なことに、
  do {                \ //
    tempword.AAA.BIT.DATA=(val);  \ // 文字データのセット
    LCD.AAA.WORD=tempword.AAA.WORD; \ // データのword書き出し
  } while(0)
が、エラーになってしまいました。
もちろんコメントなしで、行末が\+CRLFならエラーは出ないのですが、
行末が\ <何か> CRLFだと、エラーになってしまいます。
ぜひとも行コメントが付けたいので、現在どうするか思案中です。
しかしながら、おかげさまで、関数へのover headの無い高速動作を保ちつつ、
ソースが格段に見やすくなりました。本当にありがとうございました。
434774ワット発電中さん:2009/06/10(水) 16:57:37 ID:Jyfy4FXP

  do {              /* */  \
    tempword.AAA.BIT.DATA=(val);  /* 文字データのセット */ \
    LCD.AAA.WORD=tempword.AAA.WORD; /* データのword書き出し */ \
  } while(0)

とでもしとけばいいんじゃないの?
435774ワット発電中さん:2009/06/10(水) 17:21:17 ID:Th82sdTP
定義にそんなに凝ったことないから、気になってググってみた

−−−
defineディレクティブの行末のバックスラッシュは、改行文字をエスケープしてdefineディレクティブの継続を意味する。
文字列リテラルまたは文字リテラルのバックスラッシュは、次の文字をエスケープする。
−−−

…へぇボタン。
436774ワット発電中さん:2009/06/11(木) 02:05:58 ID:KIqkqXCO
>>424
何で、誰もまじめに教えてあげないの?
オレがKYなのか。

struct poo {
  unsigned char dummy :10;
  unsigned char E   :1;
  unsigned char RS  :1;
  unsigned char DATA :4;
} BIT;

は、

struct poo {
  unsigned short dummy :10;
  unsigned short E   :1;
  unsigned short RS  :1;
  unsigned short DATA :4;
} BIT;

と書けばいい。
437774ワット発電中さん:2009/06/11(木) 02:15:03 ID:zk0P/qqG
>>436
そんな「今のバージョンではたまたま偶然望んだコードが出るだけ」の記述は、やっぱりまずいだろ。
コンパイラのリビジョンが変わるたびにアセンブラレベルで検証なんて、したくないだろ?
438774ワット発電中さん:2009/06/11(木) 09:26:44 ID:y6P5G2ph
いや、きわどいところはせざるを得ないだろう。
ファームウェアはどうしてもトリッキーな処理とか
必要だったりするし。
439774ワット発電中さん:2009/06/11(木) 09:32:02 ID:t9hqRKTb
所詮人の作ったコンパイラ。リビジョンどころかプログラム作る度に検証しなくては製品には使えない。
440774ワット発電中さん:2009/06/11(木) 09:52:56 ID:+zjWsJP8
ポータビリティ性が期待できないなら、あえてビットフィールド使う意味ないだろ
マクロでどうにかしたほうが現実的
441774ワット発電中さん:2009/06/11(木) 09:55:45 ID:B0gB3yzX
全然挙動の違う仕様にバージョンアップされて、コンパイラメーカーからも説明なくて、喧嘩するんよねー…賠償問題含めて
442774ワット発電中さん:2009/06/11(木) 11:26:45 ID:CIuVsiMX
>>436の記述で、charとshortで何が違って来るのでしょうか?
:1; とすることで、bitですよ、という意味になるんではないかと思います。
443774ワット発電中さん:2009/06/11(木) 11:48:55 ID:B0gB3yzX
>>442
ビット操作する対象のデータ幅が変わるんでねかな。たぶんコンパイラ依存で。
ビット操作命令を発効するにしても、8bitか16bitかでアドレス指定も発行命令も違うわけだし。

てかH8Sには16bitのビット操作ないから、それっぽい結果を返す16bitアクセスなコードを吐いてくれるんでなかろか。
444774ワット発電中さん:2009/06/11(木) 16:31:06 ID:zk0P/qqG
charとshortどころか、ビットフィールド使ってる時点で可搬性ないよ。
ビットフィールドのビット順は規定されてないからコンパイラによって違うし、
同じコンパイラでもバージョンが変わってビット順が変わった例すらある。
外部とやりとりするデータにビットフィールドを使うのは、使わなくてもよい労力を
わざわざ使うに等しいよ。
445774ワット発電中さん:2009/06/11(木) 22:43:38 ID:98VspSs/
いままで秋月の3069のDRAM乗ってる奴でデバッグしてて
これからH8/3694とか使うことになったんだけどE8aって買う価値ある?
446774ワット発電中さん:2009/06/12(金) 01:25:23 ID:BjlAT5RS
>>441
だから自動車屋は、バージョン固定してる。
特定バージョンに対して、バグ対策とか機能向上をコンパイラ屋に
やらせているんだよ。
447436:2009/06/12(金) 02:00:32 ID:HRl8xUze
>>437
ここが、charじゃ、Windows上でもまともに動かないんだし、
自分がコーディングするときは、ビットフィールドの使用を
回避できても、ルネのヘッダとかにもガンガン使われてるんだ
から、こういう文法機能の存在は知っていたほうが良いのでは。
448774ワット発電中さん:2009/06/12(金) 02:30:40 ID:CDyFjLbF
SH3-7709Sを使用しています。

今度AD変換機能を使おうと思っていますが質問があります。

入力したい電圧は+-10Vです。しかし、SH3はMAX3.3+0.3Vの3.6Vまでしか入力電圧を許容しません。
よってOPアンプで1/3のゲインにして入力しようと考えています。

-0〜10Vは通常通りの反転増幅回路(100kΩと300kΩ、また、バランスをとるためにアースへは75Ω)を使用します。
しかし、+0〜10Vはどのようにすべきでしょうか?
反転増幅(1/3ゲイン)をスルーし、その後反転増幅(1/1ゲイン)にすべきなのか、トランジスタ1つにすべきなのか…
非反転増幅ですとゲインが1以上しか設定できませんし…

プログラムと違って電子回路は実践型でなかなか飲み込めません。どうかお助けください。

ちなみにアナログVccも3.3Vまでしかダメなのでしょうか?
449774ワット発電中さん:2009/06/12(金) 03:06:25 ID:CDyFjLbF
あ、トランジスタは電流の増幅でした…





orz
450774ワット発電中さん:2009/06/12(金) 06:47:44 ID:dV9fXfuL
opAmp使うならレベルシフトもすればいいじゃないか
倍率 -0.16倍、オフセット+1.65V にすれば
-10V〜+10V が +3.25V〜+0.05Vに変換されるぞ

opAmpがあまっててそれを使うならいいけど
わざわざこの目的のためにopAmp載せるんなら
-10Vから+10Vまで取り込める外部A/D載せた方がいいかもな
451774ワット発電中さん:2009/06/12(金) 07:19:15 ID:XHvhzThP
>>447
>ルネのヘッダとかにもガンガン使われてるんだから
それ、コンパイラに同梱されてる分じゃなくて独立して配布されてるもの?
独立配布でも使われてるなら安心だな。そうでなければ「ヨソでも使われてるから」
なんて気休めにもならないが。

>ここが、charじゃ、Windows上でもまともに動かないんだし
それはビットフィールドの問題か?w
452774ワット発電中さん:2009/06/12(金) 09:38:32 ID:fy7mbn+f
つMISRA-C
453774ワット発電中さん:2009/06/12(金) 10:01:08 ID:XPiVy2t5
H8/300Htinyの3664/3694より高機能なタイプや
300L SLPシリーズを個人向けに単品で売ってるところってあります?
454774ワット発電中さん:2009/06/12(金) 10:30:39 ID:dV9fXfuL
DigiKey.jp で普通に買えませんか?
455774ワット発電中さん:2009/06/12(金) 11:03:26 ID:GBYXlIEh
>>450

あ、その手がありました!!

100kΩと16kΩにして356オペアンプのオフセットピン1と5の印加電圧をずらして1.65V出るようにするのですね!
これなら1つで済む!

デメリットといえば入力の分解能が荒くなる…ってことかな。
考えていたのが+側と-側で別のチャンネルを使うことだったので、予定より2倍ほど荒くなりますね。
ただ、果たしてその荒さがどう出るかは疑問なので実際に試してみます。
456774ワット発電中さん:2009/06/12(金) 12:17:17 ID:dV9fXfuL
>>455
そろそろスレ違い過ぎかも知れないが、ものすごい誤解なので看過できずレス
356のpin1とpin5っていきなり言って通じると思うな! まぁわかったけど…
balance端子はVos調節用。そこをいじってもレベルシフトできないよ

たとえば 反転増幅回路においてIN+端子をGNDではなく
Voffボルトの定電圧源を接続すると
 Vout=Voff-(R2/R1)(Vin-Voff)
になる
457774ワット発電中さん:2009/06/12(金) 13:34:59 ID:Ydq1Bbsa
>>455
こんなんでどうでしょ?
http://mcnc.hp.infoseek.co.jp/cgi-bin/img-box/img20090612132704.png

OP AMPのBAL端子は、外部信号で出力をずらす目的ではなくて、
自分自身のズレをゼロに調整するためのものなので、
そのピンを使うのはよくないと思う。

>デメリットといえば入力の分解能が荒くなる…ってことかな。
分解能が粗くなるってどういうことでしょう。
±入力のA/Dコンバータでなく、+入力ADを使う以上、offsetするだけなら、
分解能は落ちないと思う。
分解能という視点でADコンバータを選ぶと、入力振幅の広大なものはなく、
多くのADが±1V入力とかになるから、結局 抵抗分圧を使う以外に手はなかろうと思われる。
±10V→(分圧)→0と3.3V→buffer→A/Dコンバータ
458774ワット発電中さん:2009/06/12(金) 14:15:09 ID:qeI1ZbTW
>>457

有力な情報ありがとうございます!
というか手書きが素敵すぎます!
分解能は…

例えば+側で1チャンネル毎に10ビットの分解能があります.

+0〜10VをAN0ピン入力,-10〜0Vを反転させ,AN1ピン入力
(もちろんそれぞれ利得を1/3に)
こうすれば合計で20ビット分の分解能が得られるかと思っていました.

オフセットすると1チャンネルで-10V〜+10V(計20V分)を10ビットで分解することになるかと…

459774ワット発電中さん:2009/06/12(金) 14:56:16 ID:Ydq1Bbsa
>>458
1つの信号の上半分と下半分を別々のADに担当挿せるということですか?
それは難しいでしょう。0.0000Vのとき両者はどのような変換値になると
思いますか? 
もしアナログ技術がおありなら、上下分担方式をやってみてください。

単調性のないAD変換はダメだと思います。
1個のADで、全域をカバーさせたほうが良いと思います。
それよりは、24bitのADを外部につないで、H8からシリアルアクセスのほうが
高精度で取り込めます。
460774ワット発電中さん:2009/06/12(金) 14:58:10 ID:Ydq1Bbsa
× もしアナログ技術がおありなら、上下分担方式をやってみてください。
○ もしアナログ技術がおありなら、やってみてください。

× それよりは、24bitのADを外部につないで、H8からシリアルアクセスのほうが
○       24bitのADを外部につないで、H8からシリアルアクセスのほうが
461774ワット発電中さん:2009/06/12(金) 15:02:02 ID:XPiVy2t5
上下分担でやると
しっかり調整しないと+方向から0になった場合と
-方向から0になった場合で値が異なるという悲惨なことになるよ
実体験として
462774ワット発電中さん:2009/06/12(金) 16:25:49 ID:qeI1ZbTW
>>459

一応動いているのがH8で0〜6Vは100Ωの抵抗をかませてスルー,-6〜0Vは反転増幅(利得1/1)でスルーしています.
回路的に+10〜-10Vが出力される端子からオペアンプの-入力端子とスルーしてマイコンへ行く端子に分岐しているだけです.
おそらく+側ではオペアンプ直前の100kΩよりマイコンへの100Ωの方が電流が流れやすく,そちらへ.
-側が入るとマイコンからは流れずにオペアンプへと流れ反転しマイコンへ.

無知で申し訳ない;;

463774ワット発電中さん:2009/06/12(金) 17:11:16 ID:qeI1ZbTW
すみません,訂正です.
勘違いでした.

>おそらく+側ではオペアンプ直前の100kΩよりマイコンへの100Ωの方が電流が流れやすく,そちらへ.
>-側が入るとマイコンからは流れずにオペアンプへと流れ反転しマイコンへ.

+電源が入力されれば反転増幅回路では-電源になり,ビットが0になり,スルーした回路ではそのままの電圧を検知
逆に-電源が入力されればスルーした回路ではマイコン側で-電源となりビットが0に,反転増幅回路では+電源になりその電圧を検知.

プログラム上で反転増幅に接続されたポートのビットが0ならスルー回路の電圧を採用,逆ならしかり.
というようにしています.

>>459さんのツェナーを使う方法で試そうと思います.
変換式もデータシートで見ましたが1.24という数字がネックなのでボリュームで調整なのですね.
適正な抵抗値も…とりあえず調べてみます.
464774ワット発電中さん:2009/06/12(金) 17:33:46 ID:dV9fXfuL
>>458
> 例えば+側で1チャンネル毎に10ビットの分解能があります.
> +0〜10VをAN0ピン入力,-10〜0Vを反転させ,AN1ピン入力
> (もちろんそれぞれ利得を1/3に)
> こうすれば合計で20ビット分の分解能が得られるかと思っていました.

合計して20ビットなんてバカなことはない (笑)
そんな小細工しても得られる分解能は11ビットにすぎないぞ

>>462 >>463
スルーとか流れやすいとかビットが0とか±10Vなのか±6Vなのかイマイチ不明だが
H8の回路はかなりやばいことになっているぞ

アナログ入力端子の電圧範囲の絶対定格は -0.3V〜+AVcc+0.3V
これから外れた電圧を入れたらデバイスが壊れるとルネサスは言っている

AN1はVinと100Ω通して接続、AN2は反転増幅器出力に接続と仮定すると
Vinが+3Vの時 AN1には+3V、AN2には-3Vが印加 →AN2が絶対定格違反
Vinが-3Vの時 AN1には-3V、AN2には+3Vが印加 →AN1が絶対定格違反

おそらくアナログ入力端子の保護ダイオードにどばどば電流が流れている状態
動いているように見えても、いつ壊れてもおかしくない状態にある
465774ワット発電中さん:2009/06/12(金) 20:14:56 ID:QH7ziFZ4
柚木正章はオタク
466774ワット発電中さん:2009/06/13(土) 01:31:26 ID:YHSjzXKA

>>462
悪いけど、あなたの説明はさっぱり理解できない。
原因は、句読点が無いのと、使用している言葉が適切ではないことです。

>一応動いているのがH8で0〜6Vは100Ωの抵抗をかませてスルー,
これは、どこで話が切れているの?
「一応動いているのが、H8で0〜6Vは100Ωの抵抗をかませてスルー」なのか
「一応動いているのがH8で、0〜6Vは100Ωの抵抗をかませてスルー」なのかさっぱりわからない。
H8以外のマイコンでも試しているけど、その中で運良く動いているのがH8ということ?

>0〜6Vは100Ωの抵抗をかませてスルー,
>-6〜0Vは反転増幅(利得1/1)でスルーしています.
スルースルーって盛んに出てくるけど、スルーって何? どんな状態のこと? 

あと、何で6Vなの? 10Vという話じゃなかった?

こんなに長い文章なのに、句読点が無いので何が何を説明しているのか、さっぱりわからない。
     ↓
>回路的に+10〜-10Vが出力される端子からオペアンプの-入力端子とスルーしてマイコンへ行く端子に分岐しているだけです.
>おそらく+側ではオペアンプ直前の100kΩよりマイコンへの100Ωの方が電流が流れやすく,そちらへ.
>-側が入るとマイコンからは流れずにオペアンプへと流れ反転しマイコンへ.

>無知で申し訳ない;;
そんなこと言わなくてもいいから、他人にわかるように書き直してください。
文字だけで説明するなら、こんな感じだとわかりやすいです。

・信号源→100Ω→H8のAN0
・信号源→100kΩ→OP AMP(-)→H8のAN1
・OP AMP(-)→100Ω→OP AMP出力
・OP AMP出力→H8のAN2


467774ワット発電中さん:2009/06/13(土) 07:30:02 ID:tBhykHOy
なんか問題解決アプローチがコピペ厨っぽいなぁ
 ソフトウェアでとにかく動いているコードを見つけ出してきてコピペ。
 コード全体を読んで動作原理を理解することなく、斜め読みして見つけた
 それっぽい値を書き換えて、自分の目的に合致させるような手法。

ソフトでもダメダメなやり方だけど、それをそのまま回路設計に持ち込んだ感じだ。
 opAmpのデータシートに載ってる反転増幅回路の例をそのままコピー。
 この抵抗とこの抵抗は増幅比を決める抵抗だから、最後に残った可変抵抗が
 出力をレベルシフトできる調整箇所だろうと根拠もなくあたりをつけて試みる。

ソフトならコンパイルエラーとかランタイムエラー出してくれるけど
ハードは黙って壊れて終わりだよ。

もうちょっと基本原理を学んでほしい。
468774ワット発電中さん:2009/06/13(土) 13:21:43 ID:gZPyVtJU
>もうちょっと基本原理を学んでほしい

電気・電子は理工系の落ちこぼれが選択する学科なんだからそんなこと言っても無理
469774ワット発電中さん:2009/06/13(土) 14:12:00 ID:0l21iK/5
習うより慣れろ
考えるな、感じろ
自分を信じて

こうですよね、よくわかります。
470774ワット発電中さん:2009/06/14(日) 03:54:39 ID:vjtqobcD
先日の構造体エンディアン男です。
すみません、また教えてください。
条件は先日と同じで、H8の16bitアクセスに設定したメモリ空間に、ラッチICを接続してデータを保持するような場合です。
また、Cの上で構造体により、そのラッチICの特定bit、例えばD00(LSB)をon/offするという場合です。
CPUからWORD Accessの場合は、0x0001とすれば、目的のbitをon制御でき、バスとデータがイメージ通りになります。
しかし、構造体にしてAAA.BIT.B0=1;と記述すると、コンパイラはByteアクセスの命令を吐きます。(具体的にはBSETとBCLR)
このとき、下位byteをアクセスするのかと思ったら、上位byteがアクセスされ、データバス16本のD08が1になります。
これでは私の目的のbitにはなりません。
これは、H8がBigEndienということに起因することを教わりました。
図にすると、こんな感じです。

       HWR                LWR
15 14 13 12 11 10 09 08 - 07 06 05 04 03 02 01 00 ←WORDアクセスした場合
07 06 05 04 03 02 01 00                   ←偶数番地、Byteアクセス
                  15 14 13 12 11 10 09 08 ←奇数番地、Byteアクセス

そこで質問ですが、上記のような場合にデータバスのD00にアクセスしたかったら、
奇数番地に0x01としてアクセスすれば良いのでしょうか?
471774ワット発電中さん:2009/06/14(日) 07:30:17 ID:f+bVfABS
>>470にある現象は変だ。ありえない。

>        HWR                LWR
> 15 14 13 12 11 10 09 08 - 07 06 05 04 03 02 01 00 ←WORDアクセスした場合
> 07 06 05 04 03 02 01 00                   ←偶数番地、Byteアクセス
>                   15 14 13 12 11 10 09 08 ←奇数番地、Byteアクセス

こうなっていると判断した材料は何か、生データを示してほしい。

ロジアナで外部バスをすべて観察したわけではなさそうだ。
すごい誤解があって、現象を誤って捕らえているとしか思えない。
ロジアナがあるならアドレスバス/データバス/制御線すべてキャプチャしてみよう。
472774ワット発電中さん:2009/06/14(日) 12:35:25 ID:4fpQqRNp
例えば、あなたが以前書いたように

struct poo {
  unsigned char dummy :2;
  unsigned char E   :1;
  unsigned char RS  :1;
  unsigned char DATA :4;
} BIT;

こう書いたとするとメモリはunsigned char単位でアクセスされる。
これをもし、

struct poo {
  unsigned int dummy :2;
  unsigned int E   :1;
  unsigned int RS  :1;
  unsigned int DATA :4;
} BIT;

こう書けば、メモリはunsigned int単位でアクセスされる。

ついでにビットフィールドは、実際にメモリに割り当てられる
ビットの順序はコンパイラの好きに任されているので、必ずしも
あなたが書いた順序と一致するとは限らない。

従って、IOのレジスタなどハードの特定のビットをアクセスするために
使うのは適当ではない。
473774ワット発電中さん:2009/06/14(日) 18:19:53 ID:FziyTa8X
>>472
そういうことは既に指摘されている。
それにもかかわらず、いまだに同じことをやっているのは聞く耳を持たない人という事だから放っておけばいい。
474774ワット発電中さん:2009/06/14(日) 18:55:21 ID:w64Et3oz
そういや、統合環境(HEWとかKPITとか)が最初に吐くIO定義はビットフィールドだけど
あれは、その統合環境の中のコンパイラ狙い撃ちだから成立する、ってことでいいのかしら
475774ワット発電中さん:2009/06/15(月) 00:18:07 ID:Lx64JnKa
>>471
ありがとうございます。
>こうなっていると判断した材料は何か、生データを示してほしい。
生データと言われても、すぐに定時できませんが、以下の通りです。
・H8のバスアクセスの図で、16bitアクセスの、
  word access時 → /HWR=LでD15〜D08に、 /LWR=LでD07〜D00
  byte acces (偶数番地) → /HWR=LでD15〜D08に、 /LWR=HでD=H(Hiz)
  byte acces (奇数番地) → /HWR=HでD=H(Hi_z)に、 /LWR=LでD07〜D00 でした。
・Cのソースでword/byte(even)/byte(odd)の1bit構造体メンバをアクセスしたときの アセンブラ展開でも
 そのようになっていることを確認しました。
・ロジックアナライザを使って、/CS, /HWR, /LWR, D15-D00、A15-A00を観測して、
上記項目と同様なことを確認しました。
生データを示せと言われても、困ります。測定し直して波形を提示するということですか?
それはちょっとできません。すみません。

>>472
ありがとうございます。
  (略)
> こう書いたとするとメモリはunsigned char単位でアクセスされる。
  (略)
> struct poo {
>   unsigned int dummy :2;
>   unsigned int E   :1;
>   unsigned int RS  :1;
>   unsigned int DATA :4;
> } BIT;
> こう書けば、メモリはunsigned int単位でアクセスされる。
はい、この書き方にはその後やっていて気づきまして、実験済みです。
ただ、私のcompilerでは、上記のようにintと書いてもbyte accsessになります。
しかし、accessされるaddressが 期待する位置のaddressにセットされることを
突き止められました。ありがとうございます。

> ついでにビットフィールドは、実際にメモリに割り当てられる
> ビットの順序はコンパイラの好きに任されているので、必ずしも
> あなたが書いた順序と一致するとは限らない。
はい、これについてはcompilerの設定で、bit filed orderを上から配置/下から配置の設定があり、
上から配置に設定してあります。(でないと日立のheader fileが使えないためです)

> 従って、IOのレジスタなどハードの特定のビットをアクセスするために
> 使うのは適当ではない。
  重要な情報を、ありがとうございます。この件を少し教えてください。
  適当でないということは、世の中一般的に、外部バスでI/Oをaccsessするときは、
・構造体で1bit定義でon/offをせず、必ず16bitでword accsessする
・byte accsess空間に設定して、byte accessでお使いということでしょうか?
    (/CS かつ address(奇数) かつ /HWR の時にD15〜D08でやりとり)
476774ワット発電中さん:2009/06/15(月) 01:08:49 ID:ovc7haHv
それは繋ぐ対象と制御回路次第では。

どちらかでしかアクセス出来ない対象、あるいは制御回路ならそれでアクセスするしかない。
どちらでもアクセスできる対象かつ制御回路ならどちらでも好きなようにすればいい。
ライトオンリで読み出せない対象、あるいは制御回路ならビットフィールドは使えない。
読み出せるが、読み出すと状態が変わってしまう対象についてもビットフィールドの使用は要注意。
477774ワット発電中さん:2009/06/15(月) 02:01:13 ID:Lx64JnKa
>>476
夜遅いのに、ありがとうございます。

>どちらでもアクセスできる対象かつ制御回路ならどちらでも好きなようにすればいい。
この「どちら」というのは「構造体でないword accsess と bitfield」のことでよいでしょうか。
でしたら、今回の私の回路はこれに該当します。
どちらの方法でも可能なので、どちらにしようか悩んでしまうというのが本当の所ですが、
日立のI/O header fileが、P1.DR.BIT.B0=1;とかできるものですから、
私の追加した回路も同じ指示が可能なほうが、設計思想としてよいかな?と思っています。
別の要因もあり 先日、バスの窓口としてCPLDを挿入しました。

>ライトオンリで読み出せない対象、あるいは制御回路ならビットフィールドは使えない。
>読み出せるが、読み出すと状態が変わってしまう対象についてもビットフィールドの使用は要注意。
上記2つのお話は、
bit fieldのアクセスを、&= や |= を使うアセンブラコードを吐いてしまうとマズイ、ということでしょうか?
もしそうでしたら、compilerのアセンブラコードを見てみると BSETとBCLR を使っているようで、
読んで変更して再書込ではないようでしたので大丈夫かなと思っています。
ただ、しかし自分自身でも AAA.BIT.data &= 0x0f; などとやってしまうので、
念のため &= |= も可能なように双方向バス対応に改造し、readができるようにしてあります。

>>476さんの >どちらでもアクセスできる対象かつ制御回路ならどちらでも好きなようにすればいい。
というお話を聞いて、私の方法でも さほど変なやり方ではないようで、安心しました。
どうもありがとうございました。
478774ワット発電中さん:2009/06/15(月) 03:47:17 ID:ZuRKgSz3
>>この「どちら」というのは「構造体でないword accsess と bitfield」のことでよいでしょうか。

バイトアクセスとワードアクセスという意味です。


>>BSETとBCLR を使っているようで、読んで変更して再書込ではない

いやいやいや、H8を含めて世の中の普通のCPUはバスに繋がっているデバイスに
ビット単位でのアクセスすることなんて出来ない。

BSETやBCLRという命令自体がまさにその、1バイト読み込んで、その中の対象の1ビットだけ変更し、
1バイト書き戻す、という処理を1命令で行うものだよ。
ま、読めるならいいけど。
479471:2009/06/15(月) 07:05:38 ID:HOfudF8b
>        HWR                LWR
> 15 14 13 12 11 10 09 08 - 07 06 05 04 03 02 01 00 ←WORDアクセスした場合
> 07 06 05 04 03 02 01 00                   ←偶数番地、Byteアクセス
>                   15 14 13 12 11 10 09 08 ←奇数番地、Byteアクセス

上と下 全然違うだろ?

> ・H8のバスアクセスの図で、16bitアクセスの、
>   word access時 → /HWR=LでD15〜D08に、 /LWR=LでD07〜D00
>   byte acces (偶数番地) → /HWR=LでD15〜D08に、 /LWR=HでD=H(Hiz)
>   byte acces (奇数番地) → /HWR=HでD=H(Hi_z)に、 /LWR=LでD07〜D00 でした。

自分で違うこと書いているのがわかっていないのか?
もちろん下が正しい

ロジアナでHiZを動確認したのだろう?
11111111を出力しているかも知れないじゃないか(笑

それに、BSETやBCLRの動作をロジアナで確認していたら
読んでから書き戻していることがわかるはずなのだが
480774ワット発電中さん:2009/06/15(月) 12:37:02 ID:Zlush36p
>>478, >>479
> BSETやBCLRという命令自体がまさにその、1バイト読み込んで、その中の対象の1ビットだけ変更し、
> 1バイト書き戻す、という処理を1命令で行うものだよ。

> それに、BSETやBCLRの動作をロジアナで確認していたら
> 読んでから書き戻していることがわかるはずなのだが

ありがとうございます。
今確認したら、仰る通り「read modify write」でした。すみません。反省です。
波形確認したら、ちゃんとRD→WR→RD→WRなどとやっています。
http://mcnc.hp.infoseek.co.jp/cgi-bin/img-box/img20090615120623.png
また、H8のマニュアルにも実行ステート=8となっていました。8ステートかかるのも頷けます。

今の今まで、BSET BCLRは
・事前readなしに一方的にそのbitだけにset resetできる
・なのでとても高速に実行できる
などと思っていました。バカでした→私。

もし1bit単位でバスの読み書きができるのならば、
・WR信号線が16bit分存在するか、または
・word書込でもbyte書込でも、何某かの方法で他のbitの情報がわかっている
でないと事前readなしで書込むなんて、できないですね。
なるほど、納得しました。教えていただき、ありがとうございました。

「BSET or BCLR≠1bit単位」となると、テンポラリの16bit変数に構造体を定義して、
それに対して1bit操作し、
バスアクセスは、常時word accessした方がすっきりしていて、よいですね。

もう少し考え直して、プログラム改造したいと思います。
指摘いただき、ありがとうございました。大変感謝いたします。
次回もぜひ叱咤をお願いいたします。
481774ワット発電中さん:2009/06/15(月) 13:48:43 ID:ElN6encT
これだからCしか出来ない奴はw
482774ワット発電中さん:2009/06/15(月) 15:22:50 ID:HOfudF8b
結局のところ
いままでビット操作で誤動作していた理由は、エンディアンの問題ではなく
リード対応してないI/Oに対してビット操作していたからなのでしょうか?
483774ワット発電中さん:2009/06/15(月) 15:26:08 ID:9FwDWL1N
417で指摘されてるね
484774ワット発電中さん:2009/06/15(月) 15:41:17 ID:Zlush36p
>>482
いえ、違います。read modfy writeは始めから考えていましたので、
当初よりreadは出来ていました。
エンディアンにより番地が違っていたこと、
構造体の1bit操作でword accessするものだと勘違いしていたこと、
などが理由です。
485774ワット発電中さん:2009/06/15(月) 18:19:46 ID:HOfudF8b
>>484 それは変だな

バイトリードとバイト書込みに正しく対応していたら
エンディアンの問題は出ないはずだ

ビッグエンディアンの場合
>   word access時 → /HWR=LでD15〜D08に、 /LWR=LでD07〜D00
>   byte acces (偶数番地) → /HWR=LでD15〜D08に、 /LWR=HでD=H(Hiz)
>   byte acces (奇数番地) → /HWR=HでD=H(Hi_z)に、 /LWR=LでD07〜D00

リトルエンディアンの場合 (もしモードがあれば)
>   word access時 → /HWR=LでD15〜D08に、 /LWR=LでD07〜D00
>   byte acces (偶数番地) → /HWR=HでD=H(Hi_z)に、 /LWR=LでD07〜D00
>   byte acces (奇数番地) → /HWR=LでD15〜D08に、 /LWR=HでD=H(Hiz)
ってだけの話

ワードアクセスの時D15-D08だったものが、バイトアクセスでD07-D00に出たりはしない
486774ワット発電中さん:2009/06/15(月) 22:04:11 ID:Zlush36p
>>485
こういうことです。
・H8を外部I/O機器をつないだ空間を16bitアクセス空間に設定した。
・H8がビッグエンディアンとは知らない。リトルエンディアンだと思っていた。
・というか16bit空間に設定したのだから、常時word accessされると思っていた。
 だから、下位bit(D00)に機器を接続していた。
・16bitアクセスだからword access時もbyte access時も常に偶数番地で指定しないといけない、と考え、
 bit fieldを偶数番地で定義していた。
・構造体のbit order の上から/下からは知っていて、上からに設定していた。
・構造体の1bitアクセスが、BSET/BCLRに展開されることを知らなかった。しかもそれらの命令がbyteアクセスになると知らなかった。

です。てか、なんで自分自身のまとめを書いているのか・・・・
487774ワット発電中さん:2009/06/15(月) 22:47:49 ID:HOfudF8b
共用体を使って
struct qoo {
  union {
    unsigned int WORD;
    struct {
      unsigned char dummy:12;
      unsigned char B3  :1;
      unsigned char B2  :1;
      unsigned char B1  :1;
      unsigned char B0  :1;
    } BIT;
  } AAA
};
#define QOO (*(volatile struct qoo *)0x00400000)

QOO.AAA.BIT.B0 = 1;

って書いたんじゃないの?
488774ワット発電中さん:2009/06/15(月) 22:56:29 ID:HOfudF8b
>>486
あ なんとなく 斜め上の思考が理解できた

>>470
> しかし、構造体にしてAAA.BIT.B0=1;と記述すると
でいう構造体が 8bitしかない構造体だったってこと??

つーか>>470読んでまさか8bitの構造体だったとは想像もつかなかった
そりゃバイト アクセスするだろ
アドレスが偶数なら上位8bitになるだろ
何の不思議もない

しかし疑問も残る。なぜ16bitのサイズの構造体にしなかったのか…
489774ワット発電中さん:2009/06/16(火) 02:00:10 ID:0Ww2D4de
なんか、こっちが不安になってきた。

>>487 unsigned char dummy:12;

>>411 unsigned char dummy :10;

こんな行を通すコンパイラがあるのか?
490774ワット発電中さん:2009/06/16(火) 02:11:59 ID:W0GwpQB3
16bit/8bitの構造体の書き分け方を知らなかったんです。

    struct {
      unsigned char dummy:12;  ←これらの数字の合計が8を超えると
      unsigned char B3  :1;    wordアクセスしてくれると思っていたんです。
      unsigned char B2  :1;
      unsigned char B1  :1;
      unsigned char B0  :1;
    } BIT;
           ↑
         日立のI/O header fileにcharと書いてあったので、
         charと書くものだと思っていました。
         intも書けるなどとは考えもしませんでした。
         またcharとintと書き分けると、どのようになるのか
         知らなかったんです。ていうか考えもしませんでした。
         すべては、bit数の合計でwordアクセス、byteアクセスをcompilerが
         自動的にやってくれると思っていたんです。
          それまでも、構造体は何度も使っていましたが、
         RAM上だけの構造体だったので、上位下位とかは全然関係無かったんです。

実際、手持ちのC言語教本で、:1; と char int の2つの要素の意味や
それらの組み合わせで何が起こるか書かれたものは見つかりませんでした。

>>487
>って書いたんじゃないの?
いえ、共用体は使いませんでした。その理由は、ユニオンかける毎に変数名が長くなって見にくくなると考えたためです。
理想は、AAA.BBB = 1;程度にしたいんです。AAA.BBB.CCC.DDD=1;とかは、何がなんだか.....。
491774ワット発電中さん:2009/06/16(火) 06:27:19 ID:LZD5idoy
> ワード単位で0x0001と書くとOKなのに
> それをビットフィールドで AAA.BIT.B0=1; と書くとNGでした
> どうしてなんでしょう?

こんな相談で、実はビットフィールド構造体のサイズが16bitじゃなかったとは
お釈迦様でも見抜けない。

見た目をよくするためには、動作が変わっても構わないという思想が理解できない。
ソースの見栄えのよさなんて動作に影響がない範囲で努力すべきものじゃないの?
変数名を短くするために、動作が変わったら意味がない。

変数名を短くしたいなら変な小細工しないで普通にマクロを使えばよい。
492774ワット発電中さん:2009/06/16(火) 09:14:36 ID:lvar64lA
>実際、手持ちのC言語教本で、:1; と char int の2つの要素の意味や
とりあえずこのあたりとかは持っておくと良いかと
http://www.open-std.org/JTC1/SC22/WG14/www/docs/n1256.pdf

>unsigned char dummy:12;
これをgccにかけるとwidth of 'dummy' exceeds its type.といって叱られる

The expression that specifies the width of a bit-field shall be an integer constant
expression with a nonnegative value that does not exceed the width of an object of the
type that would be specified were the colon and expression omitted. If the value is zero,
the declaration shall have no declarator.
とか
A bit-field shall have a type that is a qualified or unqualified version of _Bool, signed
int, unsigned int, or some other implementation-defined type.

>CPUからWORD Accessの場合は、0x0001とすれば、目的のbitをon制御でき、バスとデータがイメージ通りになります。
機器をD[7:0]につないだならそれでOK

>しかし、構造体にしてAAA.BIT.B0=1;と記述すると、コンパイラはByteアクセスの命令を吐きます。(具体的にはBSETとBCLR)
これもとりあえずOK(B0ビットが正しくアクセスできれば良い)

>このとき、下位byteをアクセスするのかと思ったら、上位byteがアクセスされ、データバス16本のD08が1になります。
ということはやっぱりB0は上位ビット側(偶数番地側)に割り付けられていて
dummyは下位ビット側(奇数番地側)に割り付けられたか、文法上おかしいって
いうんで無視されちゃった(本当なら酷い話だ・・)んじゃないの?
あるいは構造体自体が奇数番地から割り付けられているとか
493774ワット発電中さん:2009/06/16(火) 12:42:09 ID:W0GwpQB3
>>491
>見た目をよくするためには、動作が変わっても構わないという思想が理解できない。
私、見た目という言葉を使ってしまいましたか? だったらそれは適切では無かったです。すみません。

「わかりやすさ」というか、「パッと見て動作がわかる記述」という意味です。
それについては、>>426に書きました。
見てわかるソースが書きたいと思うんです。人様に見せるということでなく、自分で1ヶ月後、
半年後、1年後に見て動作が分かり易い、正しく思い出せる、というのが目的です。
本当は、Cの記述よりも、回路図で示すのがベストではないかと考えています。
(実際には回路図では書けませんが) 例えば、
ifやswitchなどは、回路図記号でいうところの「セレクタスイッチ」に相当すると思います。
回路図は、読むよりも先に見ることを行い「ははーん、こんなことやってんだな」と
動作がビジュアルでわかります。
詳細の動きはその後に、線のつながりを1本1本追うことで理解できます。
ところが、マイコンソースではそれを文字で表現する必要がありますから
どうしてもわかりにくいものになってしまいます。無理もありません。
でも、なんとか自分にとって分かり易い(正しく思い出せる)ソース書く要件として、
分かり易い変数名は、その重要な位置におります。短いから良いという訳でもなくて
長い方が良い場合もあります。あるいは、a, b, とか抽象度を上げることで、テンポラリ
的に意味を持たせることもできると思うのです。

>ソースの見栄えのよさなんて動作に影響がない範囲で努力すべきものじゃないの?
>変数名を短くするために、動作が変わったら意味がない。
私の言い方が見た目のみのような言い方をしてしまったようです。すみません。
もちろん、動作が1番です。で、同じ動作なら、上記のように「正しく思い出せる表記」
がしたい、ということです。すみません。

494774ワット発電中さん:2009/06/16(火) 13:13:06 ID:W0GwpQB3
>>492
本の紹介、ありがとうございました。検討したいと思います。
>unsigned char dummy:12;
これをgccにかけるとwidth of 'dummy' exceeds its type.といって叱られる
はい、私のcompilerでも怒られます。書き込むときには頭で思い出しながら文章を書いたので、
何も考えずに書いた=誤記だと思います。すみません。

>このとき、下位byteをアクセスするのかと思ったら、上位byteがアクセスされ、データバス16本のD08が1になります。
(略)
あるいは構造体自体が奇数番地から割り付けられているとか
これらも何も、私の無知さに起因することでした。訳もわからず「結果オーライ」で
やってきて、基礎が不十分なものですから、ちょっと変わったことをするだけで、
ワケがわからなくて慌ててしまいました。(今までmode=7ばかりで、外部busモードは初めて使いました)

今回調べた結果で、次のようなことがわかりました。みなさんには釈迦に説法だと思いますが、
他山の石にしてもらえれば、と思い以下に記します。

共通
#define AAA (*(volatile struct poo *)0x400000)

記述A メンバーをcharで宣言、bit数の合計を8
 struct poo{                    結果
  unsigned char dum :5;          番地→    0000        0001
  unsigned char C  :1;          内容→ ・・・・・CBA  ・・・・・・・・
  unsigned char B  :1;          番地→    0002        0003
  unsigned char A  :1;          内容→ ・・・・・・・・  ・・・・・・・・
 };

記述B メンバーをcharで宣言、bit数の合計を16
 struct poo{                    結果
  unsigned char dum :13;          番地→    0000        0001
  unsigned char C  :1;          内容→ ・・・・・・・・  ・・・・・・・・
  unsigned char B  :1;          番地→    0002        0003
  unsigned char A  :1;          内容→ CBA・・・・・  ・・・・・・・・
 };

記述C メンバーをintで宣言、bit数の合計を8
 struct poo{                    結果
  unsigned int dum :5;          番地→    0000        0001
  unsigned int C  :1;          内容→ ・・・・・CBA  ・・・・・・・・
  unsigned int B  :1;          番地→    0002        0003
  unsigned int A  :1;          内容→ ・・・・・・・・  ・・・・・・・・
 };

記述D メンバーをintで宣言、bit数の合計を16
 struct poo{                    結果
  unsigned int dum :13;          番地→    0000        0001
  unsigned int C  :1;          内容→ ・・・・・・・・  ・・・・・CBA
  unsigned int B  :1;          番地→    0002        0003
  unsigned int A  :1;          内容→ ・・・・・・・・  ・・・・・・・・
 };
記述Dの結果が出て、初めてint/charの意味、:1;の意味がわかりました。


495774ワット発電中さん:2009/06/16(火) 13:16:43 ID:W0GwpQB3
連投すみません。これで最後です。

記述E メンバーをintで宣言、bit数の合計を16
 struct poo{                    結果
  unsigned int dum1:5;          番地→    0000        0001
  unsigned int F  :1;          内容→ ・・・・・FED  ・・・・・CBA
  unsigned int E  :1;          番地→    0002        0003
  unsigned int D  :1;          内容→ ・・・・・・・・  ・・・・・・・・
  unsigned int dum2:5;
  unsigned int C  :1;
  unsigned int B  :1;
  unsigned int A  :1;
 };
記述Eの結果が出て、初めてint/charの意味、:1;の意味がわかりました。

長文すみませんでした。

496774ワット発電中さん:2009/06/16(火) 15:26:05 ID:/hB1woja
ところで、
>私のcompiler
って何?
497774ワット発電中さん:2009/06/16(火) 16:01:30 ID:W0GwpQB3
イエローのやつです。使いやすく好きです。
498774ワット発電中さん:2009/06/16(火) 16:43:58 ID:lvar64lA
>>494
記述Bの
unsigned char dum :13; 
がエラーにならない?
499774ワット発電中さん:2009/06/16(火) 19:06:36 ID:W0GwpQB3
>>498
今、もう一度やってみました。
unsigned char dum :1;   errorなし
unsigned char dum :8;   errorなし
unsigned char dum :9;   errorなし
unsigned char dum :16;   errorなし
unsigned char dum :17;   error ビットフィールドの定義エラー
500774ワット発電中さん:2009/06/17(水) 02:38:47 ID:x6nRrTb/
>>437
正解でした。

>>494
>>499
記述Bの割り当ては、コンパイラ仕様として許されてるんだろうか。
しかし、仮にバグで、通報したとしても、そのバグを利用して使って
しまっている客先があったりして、今さら修正すると、まさに >>441
ようなことになるから、簡単には修正されない。
そのコンパイラでビットフィールドを使うなら、コンパイラの取説を熟読
して、出力されたアセンブリコードを必ず確認し、不審な点は、イエロー
に問い合わせるしかない。
501774ワット発電中さん:2009/06/17(水) 08:21:30 ID:3mGQpNn/
>>493
ソースコードとは第一義として機械が読むもの。
もちろん人間可読性も大事だがそれは二の次。

人間様が「パッと見て動作がわかる記述」にしたいなら
適切なコメントを入れればいいだけの話。
正しくコメントが埋め込まれたソースは見ただけで何やっているかわかるぞ。
コードだけ書き換えてコメント修正しない馬鹿がメンテしない限りはね。

適切なコメント書くのサボりたいがために、コンパイラ依存バリバリの記述を
無理矢理使ったり、勝手にunionはずしたりするのは移植性が落ちるだけ。
それは機械にとって解釈困難にする方向でソースコードの本義として間違っている。
502774ワット発電中さん:2009/06/17(水) 13:17:01 ID:K1/SvygH
499です

>>501
そうですね。全くもって仰る通りだと思います。激しく同意です。

私は適正なコメントを各行に入れていますし、
コメント書きをサボってもいませんので、どなたか他の人のお話ですね。
参考にしたいと思います。ありがとうございます。
503774ワット発電中さん:2009/06/17(水) 13:19:09 ID:K1/SvygH
499です
追記訂正です。すみません。

× そうですね。全くもって仰る通りだと思います。激しく同意です。

○ そうですね。先頭2行と最後の1行以外は、全くもって仰る通りだと思います。激しく同意です。
504774ワット発電中さん:2009/06/17(水) 17:21:11 ID:3mGQpNn/
>>503
あのさ
人間が読んでパッとわかる回路図(スケマ図)って機械可読じゃないでしょ?
機械が読める制約をはずすからこそわかりやすく書けるわけよ。

機械で読めるのはスケマ図をCADに入れてアートワークした結果
出てくるカーバーデータだろ?
それはもう人間には読みにくいデータとなる。せいぜいシルクで説明が入るぐらい。

アートワークレベルで、データフローに沿ってとか
機能モジュールごとにまとめようとか、邪悪な下心を持って
無理矢理パーツの配置を変えたら動くものも動かなくなる。
ソースコードにおいて人間可読性にかまけるのはそれと同じことだ。

ソースコードを書く作業は、スケマ図を書く作業ではなく、
アートワーク(ガーパを作る)作業に相当するんだよ。

ソフトウェアで人間がぱっと見てわかるようにしたければ
UML記法でドキュメント書ればよい。
もちろんそのUMLドキュメントは機械非可読だが。

CとかJavaとかにUMLに期待されるような機能を要求するのは無茶。
だって目的が違うのだから。
505774ワット発電中さん:2009/06/17(水) 17:42:46 ID:wS27h8Iu
すげー屁理屈のような気がしないでもない。
506774ワット発電中さん:2009/06/17(水) 18:01:08 ID:K1/SvygH
503です。
>>504
ありがとうございました。
いただいたアドバイスを元に、これからも頑張りたいと思います。
またどうぞ宜しくお願いいたします。本当にありがとうございました。
507sage:2009/06/17(水) 19:11:33 ID:l1DI6vYd
超初心者な質問だとは思うのだが…
なんでスタックって 2つ必要なんだろう(ISP、USP)。
割り込みの時だけ ISPにしないと何か困るのかなぁ?
結局、多重割り込みした時って ISPで積んで、積んでってなるんでしょ?
USPだけじゃまずいのだろうか?
508774ワット発電中さん:2009/06/17(水) 20:49:25 ID:q7vYdazb
USPとISPは基本的にOSを実装するための物
ってどこかに書いてなかった?
市販OSでなくても自分用のタスクスイッチャを実装するときには役立つはず

そういう使い方をしないなら、使い分けは不要
USPを使わずに、ISPだけでイイ
509774ワット発電中さん:2009/06/17(水) 22:34:58 ID:0nZRzyT0
(株)髭男爵のギャグ-「ン」設計の
柚木正章は、宮ア勤みたいなオタク!まあ、大人だろう?!
510774ワット発電中さん:2009/06/19(金) 16:01:13 ID:upwJhMvL
M16C62p をE8aを使ってデバッグしていますが、LEDを点滅させるだけの
プログラムでCで作ったのですが実質記述量は10行程度。
pd0 = 0xFF;
p0 を 0xFFと0x00にループを使って時間稼ぎして点滅させるような処理
普通に動作しました。E8aの画面からダウンロードでプログラムをダウンロードさせました。
フラッシュROMには書き込まれているはずなので
E8aをはずしてフラッシュROMから起動すると正確にはLEDの点滅が起きません。
点灯さえも。なので動作していないのではと思うのですが。
E8aでのエミュレータ用とフラッシュROM用でなにかHEW3で変更させる必要な項目
ありますか?
511774ワット発電中さん:2009/06/20(土) 00:10:01 ID:A8cgj8Qt
E8aを外部電源で使用する場合
コネクタ8のVCCには5Vを入力、でよいのでしょうか?
512774ワット発電中さん:2009/06/23(火) 21:13:53 ID:g8aZWI+P
柚木正章はまごヲタク!!
513774ワット発電中さん:2009/06/23(火) 21:18:40 ID:jJCOtXTg
http://science6.2ch.net/test/read.cgi/denki/1243349313/
これはどの程度ヒドイのか、ぜひ聞かせて下さい。
514774ワット発電中さん:2009/06/24(水) 03:35:49 ID:DOYAJq2P
4bitマイコン 今、予約してきました。早く来い来い。

ちなみに、○bitマイコンのbit数は、データ幅のことですよね。
アドレス幅は、どのように決まるのでしょうか?
8bitマイコンなのに、アドレスが32本あるというのは変な感じ。
アドレスの数は、何できまるのでしょう。
515774ワット発電中さん:2009/06/24(水) 05:17:56 ID:VGxt27nG
>>514
設計者の趣味
516774ワット発電中さん:2009/06/24(水) 16:47:56 ID:HHofp2xn
了解です。趣味ですか。(カラオケ、スキー、ゴルフ、盆栽、映画鑑賞 う〜ん・・・・)

H8で16MByteは要らない=デカ過ぎだと思うんですが、どうでしょう。
517774ワット発電中さん:2009/06/24(水) 18:35:28 ID:BO7AJN2o
>>510-511にレスがついてないところをみるに、E8aの所有者いなさげ?
518774ワット発電中さん:2009/06/24(水) 21:38:53 ID:9xQvmFUj
H8かSH2にOS載っけないで、tcp/ipスタック載っけて
LANでpcとつなげて、ブラウザ使ってピコピコとマイコンを動かす(まずはLED点灯とか)をさせたいんだけど
参考になるサイトとか本ってあります?

どこを探してもみんなUDPの説明だけで終わってしまっているんです
519774ワット発電中さん:2009/06/24(水) 22:17:40 ID:Q8Z19hZF
OSのソースを読めば大抵スタックあるでしょ
ライセンスに気を付けてね
520774ワット発電中さん:2009/06/25(木) 01:10:41 ID:v/oIxHq9
521774ワット発電中さん:2009/06/25(木) 03:59:25 ID:FGBsOraw
>参考になるサイトとか本ってあります?
本はいくらでもあるだろ.
http://www.amazon.co.jp/%E3%82%BB%E3%83%B3%E3%82%B5%E3%81%A8%E3%82%
A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%8D%E3%83%83%E3%83%88%E6%8E%A5%
E7%B6%9A-%E3%83%9E%E3%82%A4%E3%82%B3%E3%83%B3%E6%B4%BB%E7%94%A8%E3%
82%B7%E3%83%AA%E3%83%BC%E3%82%BA-%E6%97%A5%E9%AB%98-%E4%BA%9C%E5%8F%
8B/dp/4789837246
とかとか(行長すぎで叱られるんで改行入れた)
522774ワット発電中さん:2009/06/25(木) 11:00:02 ID:BALqjUj3
>>521
Amazonはdpと後ろの数字だけでいけるんよ
http://www.amazon.co.jp/dp/4789837246
523774ワット発電中さん:2009/06/25(木) 19:07:57 ID:EyHQrzwB
オタキング 岡田斗司夫 一番 助手

オタッキー 柚木正章 !!!

524774ワット発電中さん:2009/06/30(火) 03:54:05 ID:3wo++Z6s
H8で教えてください。
H8のI/O出力についてです。
PICやAVRでは、I/Oピンから取り出せる電流が±20mAとかだっりします。
が、H8ではなぜ-0.5mA, +5mAとか 弱いのでしょう。
これでは押しでLEDを点けることもままなりません。
しかも吸いより押しがとても非力だと思います。
「大電流ポート」とあったので見てみると、引きだけ10mAでした。
どうしてPICやAVRのように±20mAとかではないのでしょうか?
525774ワット発電中さん:2009/06/30(火) 06:07:58 ID:n7lIWRJU
>>524
>H8ではなぜ-0.5mA, +5mAとか 弱いのでしょう。
そういう構造だから

>これでは押しでLEDを点けることもままなりません。
バッファ使おうぜ

>どうしてPICやAVRのように±20mAとかではないのでしょうか?
そんな事しても売り上げに貢献しないからじゃね?
526774ワット発電中さん:2009/06/30(火) 08:41:19 ID:7Y12o0aZ
吸い込みが大きい方のが普通


ってのは、オヤジだけの常識なのか・・・
527774ワット発電中さん:2009/06/30(火) 09:34:30 ID:E/irn5xp
> 吸い込みが大きい方のが普通
俺もそう思ってる。まあ、俺もオヤジだけど。

というより、マイコンの出力で直接ドライブしない


ってのは、オヤジだけの常識なのか…。

できる能力があったとしても、できる限りトランジスタとか使うけどな。
528774ワット発電中さん:2009/06/30(火) 09:48:12 ID:MDMQ0K7a
>>527
>というより、マイコンの出力で直接ドライブしない
>ってのは、オヤジだけの常識なのか…。

今時化石みたいなジジイの常識だな。
バスでも無いのに20mAの能力を付けてるのは明らかに直接ドライブを意識して設計されてる。
ワンチップマイコンはもともとローコスト向けだし、PIC等は元もとの開発意図がそうなってる。
20mAのドライブ能力があるのに基板上のインジケータLED如きにトランジスタつけるなて愚の骨頂だな。
まあ、素人はなにも考えずに、うまく行った事のある回路をつぎはぎするのも手だけど。
529774ワット発電中さん:2009/06/30(火) 10:42:52 ID:/WpwqU1G
何かやらかしたときにTrが体を張ってCPUを守ってくれる。
と思って入れるようにしてる。

Trなら「あ〜やっちまったよ」で交換できるからのう。
530774ワット発電中さん:2009/06/30(火) 12:19:35 ID:LKQv42rW
部品点数が増えるほど消費wが下げれる傾向あるのかにゅ
531774ワット発電中さん:2009/06/30(火) 12:29:22 ID:2ht/c08U
524です。
みなさん、ありがとうございました。

>そういう構造だから
>バッファ使おうぜ
>そんな事しても売り上げに貢献しないからじゃね?
>吸い込みが大きい方のが普通
>というより、マイコンの出力で直接ドライブしない
>できる能力があったとしても、できる限りトランジスタとか使うけどな。
>バスでも無いのに20mAの能力を付けてるのは明らかに直接ドライブを意識して設計されてる。
>ワンチップマイコンはもともとローコスト向けだし、PIC等は元もとの開発意図がそうなってる。
>Trなら「あ〜やっちまったよ」で交換できるから
良くわかる回答を、ありがとうございました。
私は、試作実験でH8でLEDを駆動するときには、LEDを直接、しかも吐きで灯けていますが、
製品ではデジトラ使います。(精神的な安心感、というか仕様外の電流は....)

みなさんのご回答は、全て使うときのコツや使い方の話ですが、お聞きしたいことは、
PICなどが±20mAとかと対称出力インピーダンスかつ大電流で売っているのに、なぜH8はそうしないのか? です。
例えば、
・設計時期が古いためで、最新機種はそうになっている、とか
・そのようにしてしまうと○○機能ができなくなる、あるいは性能が低下する、とか
・製造プロセスが....とか
・別製品にPICのような製品があるので、H8ではそうしなくても良い
・H8とPICでは、棲み分けが違う。一緒にするな。
という感じの理由が知りたいのですが、どうでしょう?
532774ワット発電中さん:2009/06/30(火) 12:42:30 ID:OGJYF++2
>>531
想像はいくらでもできるけど開発元じゃないと答えなんてわからないと思いますよ。
533774ワット発電中さん:2009/06/30(火) 12:52:35 ID:E/irn5xp
>>531
それはメーカーに聞くしかないだろう。教えてくれないだろうけど。
設計上不都合とか、コンセプトが気に入らないなら使うなということだね。
その昔、サニョのマイコンで、Write 信号が立ち上がるまで
データバスの出力が維持できないすごいマイコンがあったんだぜえ。
534774ワット発電中さん:2009/06/30(火) 13:20:31 ID:LKQv42rW
よく聞く例で
トランジスタの動作を水道の蛇口になぞるけれども
そんなやり取りを聞く度水流に引き寄せられるピンポン球の画がうかぶのです
でも物理的な霧吹きの実験を見たとき無い人にはこれまた説明出来ないのも事実でして
やっぱ法則に抗う何か力が働いてるのかなとは思う
535774ワット発電中さん:2009/06/30(火) 13:33:28 ID:2ht/c08U
524です。
みなさん、ありがとうございました。
やっぱりわからないですかね。了解です。

以前どこかで読んだ?本に、ADRやDATAバスI/F部分に大電流Bufferを入れると、
バスの速度が上がらないから非力なんだと聞いたことはあります。
でも、バス以外のピンはPICのようにしてくれればいいと思うのですが。
さらに言うと、H8/3687のような外部バスできないマイコンでも、
押しは弱く引きは少しいい程度なので、何かあるのかな?と思う訳です。
もっとも、QFPばっかりでDIPを出さないところを見ると、
PICなんざ相手にしてないんだよ、って感じもしますけど。

ありがとうございました。

536774ワット発電中さん:2009/06/30(火) 13:36:23 ID:o+nfyD8K
所詮例え話。

>>531
大量採用決めて開発依頼した所の都合かもしれない。
537774ワット発電中さん:2009/06/30(火) 14:09:24 ID:EYlY2Uex
用途によって見方は変わるな。

民生用超コスト重視の場合=外付けTrすら付けたくないので全I/Oとも±20mAにしる!
計測機器や自動車用途=ノイズ発生器になる(EMC通らなくなる)からバス駆動能力は最小限にしる!

M16Cはバスドライブ能力のHi/Lo切替えスイッチついてなかった?
538774ワット発電中さん:2009/06/30(火) 17:05:30 ID:2ht/c08U
そう言う意味では、FPGAはエライですよ。
電流制限が2mA, 4mA,8mA,12mAとかプログラマブルですし、
スルーレートもfast/slowありますし。
539774ワット発電中さん:2009/06/30(火) 17:17:14 ID:vmg7QeRx
>>538
他社のだけど(TIに買収されたLuminaryMicro)、
それくらいの調節はできるっぽい。設計が新しいからだろうね。
540774ワット発電中さん:2009/06/30(火) 17:22:35 ID:EYlY2Uex
初期のH8は設計が古いこともあるけど、
趣味人相手に結構のほほんと設計してたって聞くからなぁ。
541774ワット発電中さん:2009/06/30(火) 17:27:37 ID:vmg7QeRx
R8Cも調べてみたけど、R8Cも一部のピンで駆動能力は変えられるみたい。
たぶん、537の言うとおりM16Cもそうなんだろうね。
542774ワット発電中さん:2009/06/30(火) 17:28:06 ID:ZIsAX7Qt
>>535
質問の仕方がアホなんだよ。

ある商品の特定機能を取り上げて「この機能の開発意図は何ですか」なんて聞いても、
開発したとこにしか分かるわけないだろ。ちょっとでも常識があればそのくらいの
判断はできるはず。

>>535みたいに特定機能の欠点を挙げた上で、「この機能の利点は何ですか」と聞けば、
開発者でなくてもいろいろ挙げられるだろ。
543774ワット発電中さん:2009/06/30(火) 21:03:53 ID:2ht/c08U
>>542
だって欠点なら、みなさんに聞かなくたってわかりますもの。
それより、>>542は、
544774ワット発電中さん:2009/06/30(火) 22:45:04 ID:aAdlAgeF
>>542
開発したとこでさえ分からないことも多々あるよ。
545774ワット発電中さん:2009/06/30(火) 22:51:11 ID:cJ/feiRr
工業用だとノイズ対策に絶縁したいからあまり電流容量増えると困るし

1チップマイコンみたいにスペースやコストをギリギリまで削る用途じゃなければ
7セグLEDのドライブにTD62083とか追加してもバチあたらないと思うw
546774ワット発電中さん:2009/06/30(火) 23:11:30 ID:QTOPPwAx
>>543
逆に聞きたい。

PICのメモリはなぜあんなに少ないのですか? もっとたくさん積めばいいのに。

PICの命令セットはなぜあんなに貧弱で回りくどくてわかりにくい命令ばかりなのですか?
もっとスマートでわかりやすい命令セットにしてくれればいいのに。
547774ワット発電中さん:2009/06/30(火) 23:13:34 ID:ZGotaUQj
>>546
じゃあ使うな。
548774ワット発電中さん:2009/06/30(火) 23:20:03 ID:QTOPPwAx
>>547
それはID:2ht/c08Uに言え。

もちろん俺はPICなんか使わない。
549774ワット発電中さん:2009/07/01(水) 01:30:23 ID:y4OLx9S2
H8の出力をPICのポートにつないで、PICのポートでLED駆動すればいいんじゃね?
550774ワット発電中さん:2009/07/01(水) 03:05:12 ID:8KG4WyJm
542=546=548は、PICを使わない(使えない)のでございましょうか?

PICのメモリが少ないのは、大きな仕事をさせるように考えていないからです。
たかだか30程度のI/Oのマイコンに、さほど大きなRAMは必要ないでございましょ。
しかし、LEDは直接駆動できます。Sourceが-0.1mAのようにひ弱ではありません。
TD62083を使うのも結構ですが、抵抗1つでも削減したいのに、1個100円もするトランジスタアレーは
コストを押し上げますよね。ともするとマイコン本体より高くなるかも知れませんね。

命令セットがわかりにくいとのことですが、それは内部のアーキテクチャによるものです。
しかし、Cなどの言語で組んでいただく分には、そのような命令セットは関係ございませんので
どうぞ安心してお使い下さい。

QFPしかないマイコンと異なり、PICには、DIP8pin〜QFPパッケージまで、あらゆる形状がございますので、
ユニバーサル基板の上で簡単に試作ができますし、入門者にも低コストで環境が整います。
DIP品を使用することで基板実装にメタルマスク等は必要なく、低コスト生産が実現します。
551774ワット発電中さん:2009/07/01(水) 03:08:06 ID:MJPEb4To
AVRのが安いしわかりやすい
552774ワット発電中さん:2009/07/01(水) 03:12:55 ID:8KG4WyJm
×さほど大きなRAMは必要ないでございましょ。
○さほど大きなRAMは必要ないでございません。
553774ワット発電中さん:2009/07/01(水) 10:54:54 ID:KaIA+Zfn
>>552
訂正した方が意味わからんぞ。w

俺はピン数少なくていいから処理用のメモリがもっと欲しいと思うことが
たびたびあるがな。
554774ワット発電中さん:2009/07/01(水) 11:05:32 ID:pnBEd3ZE
PIC24とかdsPICなら内蔵メモリ比較的容量あるのに
しらないのか?
555774ワット発電中さん:2009/07/01(水) 14:20:56 ID:E6rBAHlA
PICでも多ピンのはパッケージの熱容量が決まっているだろうから
全部電流取れるわけがないと思うんだけど、PICって全部のピンから20mAとか
電流が取れる魔法のICなのか?
556774ワット発電中さん:2009/07/01(水) 15:01:47 ID:+ePlLqSt
まさか、ピン出力とは別にI/Oグループ(?)ごとに上限が決まってますよ、だんな。モータードライバ入りのPICなんかもあるし。
と思って調べたら、我が友PIC16F59(I/O数だけが取り得の安PIC)は入出力とも1ピンにつき25mAまで、5つある各I/Oグループの最大は入出力とも100mAだったでござる。
(1グループ最大6本だから流石に全ピンがフル出力とかすると足らないな。)
で、石全体の許容出力電流ってMax. current into VDD pinsでいいのかなぁ…これだとすると全出力ポートから同時に出力可能な電流は200mAだな。

これ、流石に熱くなるんじゃねーかぁ…?
557774ワット発電中さん:2009/07/01(水) 18:59:05 ID:oim4TEXc
下記のコードなんですがiicSendStop関数でwhileにはまらない
ようにタイマ―割り込みによる監視をしてるんですが、getIicErrFlg
の戻り値が1にならずにはまってしまうことがあります。
個人的にはタイマー割り込みが止まってしまったときしか考えられ
ないのですが、他にまずいところありますか?
iicErrTime関数が割り込みで実行されています。

ttp://blog-imgs-24.fc2.com/s/o/u/soundreview/txt.txt
558774ワット発電中さん:2009/07/01(水) 19:16:15 ID:d8/PziRe
void startIicErrCnt(void)
{
iicTimeOutCnt = TIME_OUT_ERROR;
timeOutFlg = OFF;//これがいるんじゃないかいな?
}
559774ワット発電中さん:2009/07/01(水) 19:40:17 ID:owjxK/Hr
R8C/27のハードウェアマニュアル読んでてよく分からない事があるので教えてください。
RXD1/TXD1に関してですが、設定でピンを変更できるというのは分かったのですが、
246ページのレジスタの説明みてもイマイチわかりません。
まず、送受信を別のピンで行う場合、P3_7とP4_5の組み合わせかP0_0とP4_5の組み合わせしか使えないのでしょうか?
P3-6とP4_5を使いたいのですが、その場合
・UART1SEL0、UART1SEL1
・U1PINSEL
・TXD1SEL
・TXD1EN
は、それぞれどのように設定すればいいのでしょうか?
560774ワット発電中さん:2009/07/01(水) 21:19:08 ID:owjxK/Hr
質問なので一応あげときます
561774ワット発電中さん:2009/07/01(水) 22:30:55 ID:ug4VI+Nm
  柚
  木
  正
  章
宮 は
崎  、









562774ワット発電中さん:2009/07/01(水) 23:34:21 ID:d8/PziRe
>>559
一番下の表に組み合わせが書いてるみたいだけど?
シリアルの送受をタイマー割り込み使ってやれば、P3-6とP4_5の組み合わせが出きるんじゃないの?
563774ワット発電中さん:2009/07/02(木) 03:42:22 ID:PpMPUknk
564774ワット発電中さん:2009/07/02(木) 09:16:24 ID:RwdL663t
>>558
処理としては必要そうですね。
while文の中に一度も入らない場合を考えると
flgがONになってしまうので、次の呼び出しの
ときwhile文の中に入った場合いきなりstop
とreturnを実行してしまう場合もありそうです。

ただ仮にstartでtimeOutFlgを0にしなくても
while文のgetIicErrFlgにいきなり入るだけで
whileではまってしまう要因にはならないような気
がします。
565774ワット発電中さん:2009/07/02(木) 10:00:53 ID:hz7xdl/9
iicErrTimeだけstatic宣言されてるのはなぜ?
566774ワット発電中さん:2009/07/02(木) 10:39:51 ID:RwdL663t
>>565
下4つの関数は本当は別ファイルでiicErrTimeは
外部に公開しなくてもいい関数だからです。

ところで自己解決しました。whileにはまっているのではなく
タイマ―の設定ミスからカウントアップが5Sのつもりが5分
になっていました。
それと558さんのいうようにstart関数でのフラグクリアで
なおったっぽいです。
567774ワット発電中さん:2009/07/02(木) 12:31:36 ID:hz7xdl/9
5sも時間待できるとはうらやましい
568774ワット発電中さん:2009/07/04(土) 17:26:23 ID:oXFVb+bP

fputc( 0xFC, SCI0 );
fputc( 0x08, SCI0 );
fputc( 0x4C, SCI0 );
という3行のソースを、fprint()を使って
1行で書くには、どのようにすれば良いでしょうか?
たとえば fprintf( SCI0, " (この部分に16進3つを書く) " ); とかにしたいのです。
あるいは
unsigned char s[] = { 0xFC, 0x08, 0x4c };
fputs( s, SCI0 )
というように、配列+命令の2行になってしまうのでしょうか?
569774ワット発電中さん:2009/07/04(土) 18:48:59 ID:Cqcwf8/i
"\xfc\x08\x4c"
570774ワット発電中さん:2009/07/04(土) 23:22:50 ID:oXFVb+bP
>>569
ありがとうございました。さっそく試したところ、ちゃんと動きました。
通信回線をプロアナで確認し、確かに送れておりました。ありがとうございました。

しかし、残念なことに、0x00が送れませんでした。0は終了なので、送れないのでしょうか。
実行結果は、こんな感じです。
fprintf( SCI0, "\xfc\x08\x01\x02" ); → fc 08 01 02
fprintf( SCI0, "\xfc\x08\x01\x00" ); → fc 08 01
fprintf( SCI0, "\xfc\x08\x00\x02" ); → fc 08 02    (00なので打ち切り)
もしよろしければ、何か0x00の送り方をご存じでしたら、ぜひ教えてください。
571774ワット発電中さん:2009/07/05(日) 00:10:39 ID:h2DTaNov
fprintfで0はダメなので、0の時だけfputcを使う
572774ワット発電中さん:2009/07/05(日) 02:06:58 ID:PcTL69jn
>>571
ありがとうございました。やはりprintfで0x00はダメですね。
RS232タイプのLCDを駆動しているのですが、cursorの位置を指定や
その他の設定に0を伝える必要があるため、質問していました。
どうもありがとうございました。

あと、前回の実験結果に誤りがありましたので、訂正します。
×fprintf( SCI0, "\xfc\x08\x00\x02" ); → fc 08 02    (00なので打ち切り)
○fprintf( SCI0, "\xfc\x08\x00\x02" ); → fc 08      (00なので打ち切り)

どうもありがとうございました。
573774ワット発電中さん:2009/07/05(日) 05:55:38 ID:e1AXu4iT
組み込みでprintfは禁則だと思っていたんだけど、最近の若いのは使うんかねぇ・・・
574774ワット発電中さん:2009/07/05(日) 06:47:22 ID:aPc+xU2Q
>>568の知識は printf()系が重い以前の話だからな
何も考えていないに違いない

手段にすぎない目の前のソースコードの美しさにかまけて
最終目的である実行コードの汚さには気付いていないのだよ
575774ワット発電中さん:2009/07/05(日) 07:48:14 ID:9StXox8A
最近の若いもんです
printfがよろしくないのは引数が不定なのスタック馬鹿食いだからかと思うんですが
整形した文字列を作りたいときってどうすればいいんですか?

ちなみに今はprintfを使ってます
576774ワット発電中さん:2009/07/05(日) 10:11:56 ID:h2DTaNov
577774ワット発電中さん:2009/07/05(日) 12:08:10 ID:9StXox8A
ありがとうございます
こういうものがあったんですね
578774ワット発電中さん:2009/07/05(日) 12:24:35 ID:FSZWnxM1
バイナリーモードで fwrite すればいいのではないだろうか?
579774ワット発電中さん:2009/07/05(日) 13:43:53 ID:PcTL69jn
>>578
fwriteですか、了解です。調べてみます。
可能ならば、
fprintf ( SCI0, "\xC8\x5A\x00\x02" ); とか
fprintf ( SCI0, "\xC8\x5A%??%??", cursor_x, cursor_y ); とかのように
1文で書けないかと、思っています。
ありがとうございました。

>>574
実行コードが汚なくならないようにすることも、必要かもしれませんが、
動作に問題が無ければ、それで良いかと思います。実行コードを私たちは直接見ませんし。

それよりも私たちに重要なのは、
あとあとの修正や変更などが短時間に確実に実施できるように
見やすいソース、動作が分かり易いソースを書くことだと思います。
当然、適切なコメントは必要で、ふんだんに使っています。

ソースリスト1画面内で
1行で書けるコードが3行、4行に渡ってしまうと、得られる情報が減ってしまいます。
場面にも依りますが、多くの場合1行で書かれたものは「なるほど」となる場合がほとんどです。
ソースコードは、我々人間が修正するものですので、
1画面中に、短い行数で視界の移動を減らし、わかりやすい記述をしたいと思っています。
580774ワット発電中さん:2009/07/05(日) 14:13:11 ID:vfJm0xz2
人間の把握可能行数は言語に寄らず一定というのが十何年も
前から知られているのでリソースが許せばそれでいいんじゃね。

でも

 行を短く簡潔に

と指定すると

 foo(qux(qix(haha() ? qaz(quz(...)) : bar(baz(hehe()),hore()),heno())

とか書いて先生短く書きました!とかやるやつがいるから行数論争は
ほどほどにな。
581774ワット発電中さん:2009/07/05(日) 14:41:06 ID:FSZWnxM1
>実行コードを私たちは直接見ませんし。
プロじゃないならそれでいいかもしれんけどな。

>場面にも依りますが、多くの場合1行で書かれたものは「なるほど」となる場合がほとんどです。
>>580 が言うみたいに、見にくかったり、トリッキーなコードになりがちだから
いいとは思わないよ。

>それよりも私たちに重要なのは、
>あとあとの修正や変更などが短時間に確実に実施できるように
>見やすいソース、動作が分かり易いソースを書くことだと思います。
>当然、適切なコメントは必要で、ふんだんに使っています。
後半は同意だが、「私たち」ってのは誰?

君に必要なのは、スキルを上げることだね。
582774ワット発電中さん:2009/07/05(日) 16:48:04 ID:PcTL69jn
579です。
>行数論争はほどほどにな。
>見にくかったり、トリッキーなコードになりがちだからいいとは思わないよ。
ありがとうございます。たぶん、そういう突っ込みが入るだろうと思いました。
時と場合によりますね。
583774ワット発電中さん:2009/07/05(日) 19:16:23 ID:rZv/DNCw
一目でわかる構文はいい。

長くて見にくい表記の例
if( A==B )
{
  C=D;
}
else
{
  C=E;
}

見やすい表記の例
if( A==B ){
  C=D;
} else {
  C=E;
}

さらに見やすい表記の例
if( A==B ){ C=D; } else { C=E; }

別表記
C=( A==B )? C=D : C=E;   すばらしい。
584774ワット発電中さん:2009/07/05(日) 19:21:56 ID:fF+JEUZ4
ぜんぜん素晴らしくない。
勉強し直せ
585774ワット発電中さん:2009/07/05(日) 19:59:12 ID:Ds0zDVi5
>C=( A==B )? C=D : C=E;   すばらしい。

これが余計だったな
頭悪すぎ
586774ワット発電中さん:2009/07/05(日) 20:47:42 ID:9StXox8A
C = (A==B)? D: E;
587774ワット発電中さん:2009/07/05(日) 21:47:35 ID:h2DTaNov
この書き方は?
fprintf ( SCI0, "\xC8\x5A%c%c", cursor_x, cursor_y );
588774ワット発電中さん:2009/07/05(日) 22:28:50 ID:fF+JEUZ4
元ネタでは、0が送れないのが問題なんじゃなかったか?
589774ワット発電中さん:2009/07/05(日) 22:36:18 ID:h2DTaNov
"\x00"がダメってことでしょ。
小出しなもんだから、何したいのかよくわからんで答えてるからね。
590774ワット発電中さん:2009/07/05(日) 23:45:43 ID:rZv/DNCw
訂正です。
× C=( A==B )? C=D : C=E;   すばらしい。
○ C = (A==B)? D : E;    大変すばらしい。

みなさん、指摘ありがとう。
591774ワット発電中さん:2009/07/06(月) 07:31:22 ID:gBXEaE67
文法的には間違いではないけどね。
動くと思うけど、最適化依存だし。

でも、スペースの使い方が気持ち悪いぞ。
592774ワット発電中さん:2009/07/06(月) 09:41:06 ID:95tYEGzC
スペースの使い方も、難しいものがあるね
なるべく塊で意味を持って見えるように使っています例えば、
わかりにくい例
if( ( A == B ) && ( C ==D ) ){

わかりやすい例
if( (A==B) && (C==D) ){

わかりにくい例
if( A==B )

C=D;

else
if( E==F )

G=H;

else
if( I==J )

K=L;


わかりやすい例
if( A==B ){ C=D; }
else if( E==F ){ G=H; }
else if( I==J ){ K=L; }

593774ワット発電中さん:2009/07/06(月) 10:30:49 ID:ECBZ6avI
わかりやすい例だとブレークかけにくくない
594774ワット発電中さん:2009/07/06(月) 12:00:39 ID:95tYEGzC
確かにブレークはかけにくいね。
そういうときは、途中で改行してやるしかない。
デバッグが済んだら元に戻す覚悟なので、何でもありだけどね

わかりやすい例として、こういうのもあった。

A = ( B==LEFT )? C :
( B==RIGHT )? D :
( B==UP )? E :
( B==DOWN )? F ;

if() else if()と同じだけど、
パッと見で、何か選択しているな というのが わかる
595774ワット発電中さん:2009/07/06(月) 13:44:11 ID:PefAYqAo
>>594
お前は少しズレていると言わざるを得ない。
596774ワット発電中さん:2009/07/06(月) 16:16:41 ID:5SzFuM/b
スレ違いじゃヴォケども
その辺の話がしたいならプログラム板で好きなだけ議論してこい

プログラム板
http://pc12.2ch.net/tech/
597774ワット発電中さん:2009/07/06(月) 16:28:20 ID:5iM33ASy
すこしの脱線もゆるされないのか…
598774ワット発電中さん:2009/07/06(月) 18:47:56 ID:95tYEGzC
H8活用に直結した話だと思いますが。
何が気に入らないのか教えてください
599774ワット発電中さん:2009/07/06(月) 19:07:15 ID:A9Zjkyhz
単発だし、ネットアサヒじゃね?
なんでこんな板に居るのかということ自体に疑問があるが。
600774ワット発電中さん:2009/07/06(月) 20:25:04 ID:Jl+S1Us1
NECとRTが合併すると残る16bitCPUは何ですか?
78K0 R8C 300Hまさか
601774ワット発電中さん:2009/07/06(月) 20:33:10 ID:JvQfHtj1
V30
602774ワット発電中さん:2009/07/06(月) 21:09:40 ID:/Vy034vI
ルネはシリーズが多すぎるよな
603774ワット発電中さん:2009/07/06(月) 21:12:31 ID:LfVNXNmB
HD64180
604774ワット発電中さん:2009/07/06(月) 21:18:17 ID:DHJ8S7xX
>>601
復活の予言?
605774ワット発電中さん:2009/07/06(月) 21:25:34 ID:vU7G+pI4
見やすいと言ってる方が見にくくて、見にくいと言ってる方が見やすい件

元ネタに戻るけど、シーケンスフォーマットが要らないなら↓で
いいんではないのか?



buf_send ( char *send_buf , int channel , int length )
{
   int i;
   for ( i=0 ; i<length ; i++ )
   {
       fputc ( send_buf[i] , channel );
   }
}
606774ワット発電中さん:2009/07/06(月) 23:32:10 ID:ECBZ6avI
fputcだから
int channel
じゃなく
FILE *fp
じゃ、なかろうか?
607774ワット発電中さん:2009/07/07(火) 01:33:00 ID:y/xHGNau
>>605
えーっ? なんでたったそれだけのことに8行も割かないといけないの?

コレの方が格段にわかりやすいと思うけど。

buf_send ( char *send_buf, int channel, int length ){           ←1space開けるのは、カンマの後だけ
   int i;
                                      ←変数宣言と本体の間は1行開ける
   for ( i=0; i<length; i++ ){ fputc ( send_buf[i], channel ); }    ←たかだかこれだけの実行なら、
}                                      このようにfor(){xx}と1行にしたほうが
                                      何かを繰り返しているんだなと、動作が一目でわかる。
608774ワット発電中さん:2009/07/07(火) 05:52:06 ID:r/SLColR
長文だと、前者は一度で目に入る量は少ないけど、繰返し範囲間違えにくい
後者は量は多いけど、繰り返し処理を見落としやすい

どっちもどっち
609774ワット発電中さん:2009/07/07(火) 06:58:33 ID:YZbui31u
>>605のほうが段違いに見やすい。
610774ワット発電中さん:2009/07/07(火) 09:46:10 ID:a6GBfUcL
コーディングスタイルは宗教みたいなものだからな
buf_send ( char *send_buf, int channel, int length )
{
 int i;

 for ( i=0; i<length; i++ )
   fputc ( send_buf[i], channel );
}                                      このようにfor(){xx}と1行にしたほうが
611774ワット発電中さん:2009/07/07(火) 10:20:27 ID:bipnDD1U
見やすさは大事だけど、もっと大事なのは徹底すること。
612774ワット発電中さん:2009/07/07(火) 20:47:03 ID:jxCtG+LH
コーディングスタイルでオブジェクトに差が出るならいいんだけどね。
613774ワット発電中さん:2009/07/07(火) 20:47:49 ID:UHGxSvM4
もっと大事なのは、仕様通り動くこと
614774ワット発電中さん:2009/07/08(水) 00:16:18 ID:lTmXwJoI
仕様の読解力が足りないとか結構ありそう...
615774ワット発電中さん:2009/07/08(水) 00:21:14 ID:y3F/lYmC
にんげんだもの
616774ワット発電中さん:2009/07/08(水) 01:25:10 ID:BYO20evF
>>610
それだと、fputcの行の次にデバッグコードを入れたらfputcとデバッグコードで
動作の差が出てくるからわかりにくい
{}で括っていますよって明示的に出しているからこそわかりやすい

・・ってまあ、宗教論争だ罠
617774ワット発電中さん:2009/07/08(水) 03:30:17 ID:uCbID81Q
>>616
ぼくも全く同意見。{}を書かない人がいるけど、次行だけの特典であり、間違いのもと。
ちゃんと{}を書いて欲しいと思う。
if(){}
while(1){}
for(){}
618774ワット発電中さん:2009/07/08(水) 07:12:19 ID:+Pnujc5s
多くの場合ソースコードを一番良く読むことになるのは書いた
本人だから未来の自分がわかりやすいのが一番大事かな
1行ですむところにわざわざ無駄な{}があるのが過剰な装飾っぽくて
うっとおしく感じられたりもするけどね。
if (xxx) {
}
と書くか
if (xxx)
{
}
と書くかなどなど含めてこのあたりは本当に昔から(大学生なんかにとっては
生まれる前からだな・・)ずっと続く宗教論争だね。
619774ワット発電中さん:2009/07/09(木) 22:00:04 ID:Y5xv6wz6
自称女子高生の教えてクン登場ですぅ〜。

H8 3694Fでシリアル SCI3 にブレーク機能?があるけど、
使い方わからないですぅ〜。
頭いい人教えて欲しいですぅ〜。

エラーが発生してない時にフレーミングエラーに 0 書き込むと
CPU がストップ?するっぽいけど、あれ一体ナニ?ナニ?ナニ??
620774ワット発電中さん:2009/07/09(木) 22:08:17 ID:JI9zsDri
キモッ
呆れて止まるんじゃね?
621774ワット発電中さん:2009/07/09(木) 22:47:24 ID:PzmOue4g
受信の時フレーミングエラーでRxDが0の時はブレーク信号がきたと判断して
RxDが1になるまで受信しちゃいけないよってことでは?
622774ワット発電中さん:2009/07/10(金) 00:46:04 ID:B/Kurr0L
>自称女子高生

こういう付かなくてもいい嘘を付き続けると
精神にも影響を及ぼしてくる
623774ワット発電中さん:2009/07/10(金) 03:47:37 ID:0l+9uNMw
いい影響
624774ワット発電中さん:2009/07/10(金) 09:21:41 ID:JMMXd1Mq
>>622
真偽はともかく、質問の枕詞にこんな台詞をつけなくてはいけない位、実生活で相手にされてないって事だよ。
哀れではあるけど、

 気 持 ち 悪 い 奴
625774ワット発電中さん:2009/07/10(金) 14:55:30 ID:GBY+Qg5s
自己流ですが、仮に{}とかをつけない時は、

for() ;

と一行で収めるようにしますね。
626774ワット発電中さん:2009/07/10(金) 18:24:42 ID:2agjKNXU
E8aを使用するときステップ実行するとそのたびにflashメモリに書き込みを行う、というのは仕様なのでしょうか?
100回書き込みというのがメーカーが保証する値だとして実際はもっと長持ちするにしても

ちょっとした物を開発したらそれだけでメモリが使えなくなってしまいそうな気がするのですが・・・
なにか良い方法はないでしょうか?
627774ワット発電中さん:2009/07/10(金) 18:39:14 ID:IP6PgBMO
デバッグ用と運用用とに別ける。
628774ワット発電中さん:2009/07/10(金) 19:43:13 ID:c/Fljwdy
ステップ実行しないで机上デバッグとか?
loadするだけでflashに書き込んでるという...
629774ワット発電中さん:2009/07/10(金) 22:03:00 ID:GqstaI11
>>626
ステップ実行のたびには書かないでしょ?
630E8:2009/07/11(土) 00:05:14 ID:eXW/Ubha
保証は書き込みじゃなくて書き換え
631774ワット発電中さん:2009/07/14(火) 13:44:28 ID:tCn+8QW/
M16Cのマニュアルを読んだ感じ、イレース回数のことっぽい。書き込み自体は
カウントされない。イレース指令を出したら、該当ブロックの書き換え可能回数が
1減る、そんな感じ。実際は100回保証でも1000回ぐらいはふつーにいける、
ってのを聞いた。(100回保証品で100回を越えたら「自己責任」だろうけど)

あと、ステップ実行の度に書いてる。ブレーク命令を書き込んでおいて、
そこでブレークして、再開時に本来コードを書いて、みたいな。
632774ワット発電中さん:2009/07/14(火) 13:51:48 ID:weemGj9O
よっぽど糞なデバイスじゃなければ1万回ぐらいは書けるだろ。
デバッグしてる間ぐらいなら。
保証は書き込み後10年データ保持だから、書き込みエラーが出るほど
使いつぶすのもまた容易ではないと思うぜ。
633774ワット発電中さん:2009/07/14(火) 16:02:48 ID:o781uDOm
>>626
ブレークポイントをいくつも設定してるとそうなるけど、
必ず毎回毎回って事はないよ

まあ、安い装置でデバッグできてるんだからあまり文句言わない
634774ワット発電中さん:2009/07/15(水) 03:56:02 ID:2btqhZJo
外部バスのモードが使えて、一番ピン数の少ない300Hって、何だと思いますか?
やっばり3048oneでしょうか。
635774ワット発電中さん:2009/07/15(水) 06:09:32 ID:enQmSXcS
>>634
80pinのがあったような気がするが、
型番忘れた…
636774ワット発電中さん:2009/07/15(水) 11:27:42 ID:zFXOBDQM
外部バスってアドレスとデータが出てればいいのよね?
Flashもちなら3039、外ROMなら3001とかが80pinだな
ttp://japan.renesas.com/fmwk.jsp?cnt=h8300h_series_landing.jsp&fp=/products/mpumcu/h8_family/h8300h_series/
637774ワット発電中さん:2009/07/16(木) 04:18:32 ID:yZTWmNfL
>>635 >>636
ありがとうこざいました。
638774ワット発電中さん:2009/07/16(木) 22:16:03 ID:HCFMGqFj
オタクの柚木正章です。よろしくな。
http://changi.2ch.net/test/read.cgi/otaku/1241858991/

まだ勤務してるかな。こてこての岡山県人。
639774ワット発電中さん:2009/07/16(木) 22:47:14 ID:UanvAT1k
究極の破格の安さ!
NEC VALUESTAR N VN770/TG6W PC-VN770TG6Wが新品で消費税送料込みで20,000円
新品TOSHIBA ハイビジョンテレビ 32V型REGZA液晶テレビが消費税送料込みで30,000円
エアコンもなんでもある。
オークションよりも安く電化製品は在庫多数
詳しくはこちら
http://blog.goo.ne.jp/kotoni_001/
640774ワット発電中さん:2009/08/06(木) 23:26:22 ID:AT0kDfGq
教えてください。

2次元配列にデータを格納する場合、

unsigned char A[2][6] = {
 { 1, 4, 8, 12, 13, 14 },
 { 8, 10, 8, 5, 9, 15 }
}:
とやればOKなのですが、

unsigned char A[2][6];  といったん宣言して、
別のところで

A[0][] = { 1, 4, 8, 12, 13, 14 };
B [] = { 5, 18, 3, 9, 19, 5 };
D [] = { 4, 60, 3, 9, 0, 11 };
A[1][] = { 8, 10, 8, 5, 9, 15 };

というように他の配列と並べて、まとめて代入がしたいのですが、
どのようにスレばよいのでしょうか?
641774ワット発電中さん:2009/08/06(木) 23:43:55 ID:we/titxg
まとめて代入じゃなくて、一個ずついれる
642774ワット発電中さん:2009/08/07(金) 00:01:11 ID:NaLQjquj
ですよねぇ、1個ずつ。それはそれで変な感じがします。
643774ワット発電中さん:2009/08/07(金) 00:06:37 ID:OQoZcR+1
>>640
まとめて代入できない言語を使うと、できません。
まとめて代入できる言語を使えばいいです。
644774ワット発電中さん:2009/08/07(金) 01:32:23 ID:NaLQjquj
ありがとうございます。
ネットで探し回りましたが、そちらでもCではダメのようでした。
ありがとうございました。
ちなみに、「まとめて代入できる言語」とは。何になるのでしょうか?
645774ワット発電中さん:2009/08/07(金) 01:56:44 ID:NaLQjquj
頭の悪い初心者ですが、もうひとつ教えてください。

unsigned char A[3];

for(b=0; b<3; b++){
  A[b] = ・・・・・  何か計算などを実施
}
          // その結果を、PORTに出力する。
P1DR.BYTE = A[0]; // ○○出力1
P2DR.BYTE = A[1]; // ○○出力2
P3DR.BYTE = A[2]; // ○○出力3

というのはOKです。
forの所では、繰り返しなので配列で添え字を変化させた方が、スマートに書けます。
しかし、本当はA[0]=teikou、A[0]=condenser、A[0]=coil、と内容が決まっていますので、
最後の出力の所で、
P1DR.BYTE = teikou;   // 抵抗値出力
P2DR.BYTE = condenser; // コンデンサ値出力
P3DR.BYTE = coil;    // コイル値出力
と、書きたいのです。このような場合、どのようにすればよいでしょうか?

調べたところ、共用体(共有体?)を使うとできそうなのですが、

unsigned char A[3];

union test{
  unsigned char teikou;
  unsigned char A[0];
};
としたら「エラーだぜ」と言われました。たしかに2箇所でA[]を宣言しているので
おかしいことがわかります。
表の顔はteikouでも、裏の顔はA[0]の配列メンバ のような二重人格のような表記は、
できないのでしょうか?


646774ワット発電中さん:2009/08/07(金) 02:40:09 ID:Cz7e9tEX
これでいいんでないかい。
#define teikou A[0]
#define condenser A[1]
#define coil A[2]

どーしても共用体にするなら
struct foo {
 unsigned char teikou;
 unsigned char condenser;
 unsigned char coil;
};

union bar {
 unsigned char A[3];
 struct foo name;
};
とかやれば出来なくはないが。
647774ワット発電中さん:2009/08/07(金) 03:20:06 ID:OQoZcR+1
>>644
定数ないし初期化子を並べてランタイムに一括代入できる言語となると心当たりが
ないが、Matlabあたりならできそうな気がする。Perlもできたような・・・
648おっぱい:2009/08/07(金) 03:28:30 ID:GJqkjI0T
A = [[],[]]
A[0] = [1, 4, 8, 12, 13, 14]
B = [5, 18, 3, 9, 19, 5]
D = [4, 60, 3, 9, 0, 11]
A[1] = [8, 10, 8, 5, 9, 15]
649774ワット発電中さん:2009/08/07(金) 17:18:20 ID:zOngg+OC
char _A0[] = { 1, 4, 8, 12, 13, 14 };
char _B[] = { 5, 18, 3, 9, 19, 5 };
char _D[] = { 4, 60, 3, 9, 0, 11 };
char _A1[] = { 8, 10, 8, 5, 9, 15 };

void hoge0(void)
{
char *A[2];
char *B;
char *D;

A[0]=_A0;
B=_B;
D=_D;
A[1]=_A1;
}

void hoge1(void)
{
char A[2][6];
char B[6];
char D[6];

memcpy(A[0],_A0,sizeof(_A0));
memcpy(B,_B,sizeof(_B));
memcpy(D,_D,sizeof(_D));
memcpy(A[1],_A1,sizeof(_A1));
}
650774ワット発電中さん:2009/08/07(金) 19:18:49 ID:NaLQjquj
みなさん、ありがとうございます。645です。

いろんなやり方があるようですね。
>>646の方法は、理解できました。
>>648の方法は、A = [[],[]] の意味が理解できずに、諦めました。
その後、結局、コメントだらけですが、1つ1つ書き込んでも事なきを得ました。
例ではteikou, condenser, ciolと3個でしたが、本当は120個程度あるのでした。
>>649
勉強になります。理解する時間をください。
「*」が出てくると、とたんにわからなくなります。
ほとんどのことは配列でできてしまうので、ポインターの嬉しさが湧かないためか、
使ったことがないんです。使ったことがない=覚えようとしない、僕の悪い癖です。
すみません。
651774ワット発電中さん:2009/08/07(金) 19:26:57 ID:kVgKIoYy
ポインタに慣れると便利すぎるぞ
652774ワット発電中さん:2009/08/08(土) 09:21:43 ID:b9NEZtE/
柚木正章は、髭男爵のギャグー「ン」設計の
宮崎勤みたいなヲタク!!!
653774ワット発電中さん:2009/08/09(日) 01:37:22 ID:D/KOdexK
初心者の質問、その3って許されますか?   (こっそり質問しちゃおうっと)

printf()で教えてください。
printf()の書式で、
よく使う printf( "%02x", A ); ではなく、
printf( "%02lx", B ); のように、02とxの間に小文字のl(エル)を入れる書き方があります。
このlの意味は、Longという意味だということまでは知っています。今まで、結果オーライで、だましだましに使ってきました。

このlの意味が知りたいです。
上記のprintf()には、longに関係するところが、2箇所あります。" "内の書式と、" "の後の変数、の2つです。
それで、このlは、どちらに影響するものでしょうか?

1) " "の中で表現したい書式がlongのように長い場合にlを書くのか、
    例 printf( "%05lx", char変数 ); 変数はcharでも書式が16進5桁なのでlを付ける。

2) あるいは、" "の後の変数がlongの場合に書くのか、ということです。
    例 printf( "%02lx", long変数 ); 書式の桁数に関係なく、変数がlongのときに書式にlをつける。

宜しくお願いします。
654774ワット発電中さん:2009/08/09(日) 08:49:29 ID:s3xI0QxK
(2)だろ
16bitCPUなどで、longとintのビット幅が違う場合に効いてくる
655774ワット発電中さん:2009/08/09(日) 11:34:32 ID:dsRqvHSi
なんで組み込みでprintf???
656774ワット発電中さん:2009/08/09(日) 12:31:52 ID:wZZ07Y3w
>>655は、デバッグでprintf使わないのか?
657774ワット発電中さん:2009/08/09(日) 13:05:02 ID:p3EqsGtr
横から
俺もprintf使ったことないや
658774ワット発電中さん:2009/08/09(日) 15:29:36 ID:dsRqvHSi
>>656
画面もないのにprintf??
fprintfにしてシリアルに流すにしたって組み込みで使うのはナンセンス
659774ワット発電中さん:2009/08/09(日) 16:14:40 ID:FsGOhKHx
やれやれ。printfデバッグは21世紀じゃ流行らねえんだとよ。
660774ワット発電中さん:2009/08/09(日) 16:32:38 ID:lx+zPlIE
デバッグではprintfは楽
661774ワット発電中さん:2009/08/09(日) 18:13:32 ID:iLHi0KcE
組み込みだからこそ
シリアルに垂れ流すんじゃないのか?
662774ワット発電中さん:2009/08/09(日) 18:23:56 ID:f6hPjDwS
>>661
fprintfとか使ってるのがって話じゃなかろうか

シミュレータ上の話は知らない
663774ワット発電中さん:2009/08/09(日) 18:44:35 ID:D/KOdexK
>>658
何がどうナンセンスなのか教えてくれよ。

>>660, >>661
その通りです。
664774ワット発電中さん:2009/08/09(日) 18:52:46 ID:RL5muZps
>>663
めたぼ
665774ワット発電中さん:2009/08/09(日) 21:05:56 ID:4BIZfmn4
組み込みだからシミュレーションでやれって話でないの。
シミューレタの使い方しらん。
666774ワット発電中さん:2009/08/09(日) 22:09:22 ID:RF0KLXGK
>>663
スタックバカ食い
遅い
余計な処理をしすぎる

printf系を使うのと浮動小数点を使うのは組み込みでは禁則だった。
浮動小数点はCPUがやってくれるようになったので、今は関係ないけど
H8なんかではあんまりよくない。
667774ワット発電中さん:2009/08/09(日) 23:49:37 ID:/+4M1GON
>>663
コンパイラによってはダメダメなコードを吐く。
昔はそういうコンパイラが多数派だったんで、その頃の経験で一律に
無用扱いする人が多い。
668774ワット発電中さん:2009/08/10(月) 00:29:21 ID:97hQ3g/h
なるほど、
でもそれは、コンパイラがいけないんであって、printf()がいけないのとは違うよね。

E8などのエミュレータもいいんだろうけど、
printでサクッとデバッグしてる俺。
669774ワット発電中さん:2009/08/10(月) 00:40:49 ID:VOBb1Zi+
ロボットとかでセンサの値とか見なきゃいけない場合、printf系は必須なんじゃないの。
670774ワット発電中さん:2009/08/10(月) 01:13:25 ID:ZMvA9cmj
コンパイラじゃなくてライブラリじゃないか?
671774ワット発電中さん:2009/08/10(月) 02:24:20 ID:97hQ3g/h
>>670
そうですね、ライブラリです。

いずれにしろ、それが「組み込みでprintf()を使うのがナンセンス」という>>658の根拠には
全然なり得ない。

何がどうナンセンスなのか教えてくれよ。 なあ>>658よ、教えてくれよ。


672774ワット発電中さん:2009/08/10(月) 05:46:15 ID:unK1pial
>>669
シリアルで流すにしても文字列整列は自分でライブラリを作るモノだと思うけど、
最近の若いのはprintfを簡単に使うのか。
自分のところの部下が使っていたら止めさせるな。
どういう弊害があってどんなバグが出るか解らないしな
673774ワット発電中さん:2009/08/10(月) 08:20:11 ID:u3BTqxg0
>>645

union test{
  unsigned char teikou;
  unsigned char A[0];
};

重箱の隅ですまんが要素数 0 はない。
674774ワット発電中さん:2009/08/10(月) 09:59:31 ID:YXJqiZA8
>>670
いや、printf系(というか可変引数関数)のサポートのないコンパイラでprintf系を
作ろうとすると、どうしても巨大なコードのライブラリにせざるを得ないんだよ。
フォーマット文字列に何が来るかライブラリレベルだと判断できないから、どの
フォーマット文字列が来てもいいように、サポートしているフォーマットすべてに
対応したコードを吐かざるを得ない。

もっと近代的なコンパイラだと、printf(に限らんけど)の引数の内容と数にあわせて
リンクするライブラリを調整できる。たとえばフォーマット文字列が"%d"だけの場合、
%d⇒文字列変換用のライブラリだけ使って、そのライブラリ関数を1回だけ呼び出す
形にコンパイルしてくれるから、コード効率はitoa⇒fputsとほとんど変わらない。
675774ワット発電中さん:2009/08/10(月) 10:35:37 ID:u3BTqxg0
>>674
それならなおのこと、必要な機能の表示関数を作ればいいだろ。
別に printf じゃなくてもいいんだから。

広い意味では本来のコードと関係ない表示のための副作用を行うコードを
埋め込む手法をprintfデバッグと言うよ。
(知らなかった人、瞬間的に反発するのはご勘弁な)
676774ワット発電中さん:2009/08/10(月) 11:09:41 ID:YXJqiZA8
>>675
表示関数を自分で作りたいなら作ればいいし、誰もそれに反対するレスはしてないって。
作るのが面倒なら、モダンなコンパイラでprintfを使えばいい。
>>674は、>>666みたいな時代錯誤に対するレスだよ。
677675:2009/08/10(月) 11:45:55 ID:u3BTqxg0
>>676
よく分かった。おれ素直。
678774ワット発電中さん:2009/08/10(月) 22:04:26 ID:BpfjOVM+
そうか、あなたの名前はもとなお君か。
679774ワット発電中さん:2009/08/11(火) 14:24:26 ID:5ikrWb/e
HEWって、「60日期間限定」はダウンロードできるけど、
「ずーっと使えるMCU限定版」って、無いのでしょうか?
昔はあったような気がする。

製品版って、買うといくらぐらいですか? 30万くらい?
680774ワット発電中さん:2009/08/11(火) 15:12:42 ID:AEFiBSE2
CPU毎にコンパイラ、アセンブラとパッケージで\198k。
ttp://crm.hitachi-ul.co.jp/system/XSOFT/xsoft_catalog071001.pdf
681774ワット発電中さん:2009/08/11(火) 17:59:49 ID:5ikrWb/e
ありがとう
682774ワット発電中さん:2009/08/12(水) 19:55:40 ID:/npW7b6r
>>1-681

オタクって友達いないことなんだよ。

   by 柚木正章(ゆのきまさあき)
683774ワット発電中さん:2009/08/13(木) 11:07:15 ID:+O5thB5s
秋月のH8 3069FLANを使ってI2Cを操作してみたいのですが、
MESに搭載されているドライバはEEPROM専用ですか?
I2Cスレーブを使いたいんですが、例えばRTCなどを制御したいとき、
デバイスドライバとしてopen関数で呼んで、
read, writeするだけで使えるものなのでしょうか?
それと、やっぱりメモリと同じでマウントする必要あるの??
RTCスレーブを扱うサンプルがありましたら、お教えください。
684774ワット発電中さん:2009/08/13(木) 22:13:44 ID:wUsXZ81x
MESのソースを読む
685774ワット発電中さん:2009/08/13(木) 22:34:22 ID:uhXG940o
あの気持ち悪いMLに質問してみる
686774ワット発電中さん:2009/08/14(金) 14:40:15 ID:Km7Kuox6
>684さん
>685さん
ありがとうございます。MESのソースを呼んでみたんですが、
I2C_startとかを直接扱う場合、デバドラ経由じゃなくて、やりたかったんですね。
ん?でもi2c.cを通常のプログラムにすればよいのかなぁ???
組込初めてなんで、試行錯誤しています。
あのMLには登録済みですが、使い方が...
ありがとうございました。
687774ワット発電中さん:2009/08/14(金) 18:45:43 ID:jiYJCaQL
ポートの方向レジスタ切り替えてるところが分かれば
688774ワット発電中さん:2009/08/17(月) 17:26:55 ID:1rqrPL6L
I2Cの前に、そもそもマイコン制御の基礎がわかっていないので、
そちらの方から攻めてみたいと思います。
C屋だとおもっていたけど、マイコンに移ってきて、
打ちのめされました...ハードをかなり意識しないと
マイコン制御ってむずかしいですねぇ...orz
689774ワット発電中さん:2009/08/17(月) 21:25:42 ID:mMaddMAo
ヲタキング ルネサスマイコン
柚木正章!!!!
キタ━━━━━━(゚∀゚)━━━━━━ !!!!!
690774ワット発電中さん:2009/08/18(火) 00:06:40 ID:sSIZfSDq
I2Cならハードウェアマニュアルとアプリケーションノートのサンプルとにらめっこしてたら
そのうちだいたいわかるよ…多分

SH2とかのI2Cサンプルってナゼかグローバルサイトにしかなくて困るが。
なんで日本語サイトにないのか
691774ワット発電中さん:2009/08/18(火) 04:21:16 ID:D58iJAhG
英文資料で充分,あるいは自力で何とかなるという人以外は使うなってことで
692774ワット発電中さん:2009/08/18(火) 10:05:14 ID:R9Z2Ll47
いいフィルタリングだよね > 英語読めないフヌケは排除
693774ワット発電中さん:2009/08/19(水) 21:15:04 ID:y7MFWCX+
質問です。
H8/3694 グループのハードウェアマニュアル
ttp://w3.quake3.jp/sushi-k/pool/H8-3694.pdf
を読んでいて気になったところがあります。
21.電気的特性の 21.2.2 DC特性というところの 出力Highレベル電圧 という項目の測定条件に、

−IOH=1.5mA

という式があります。
IOHの前に存在するハイフンは何を表しているんでしょうか?
出力とは反対方向に電流が流れるってことなんでしょうか・・・

下の方にある出力Lowレベル電圧のところにはIOL=1.6mAと書いてあり
その意味もきちんと分かるので、出力Highレベル電圧との違いが気になってしまいます。

どなたか教えていただけないでしょうか?
694774ワット発電中さん:2009/08/19(水) 21:24:10 ID:PZwrygHd
出力がHのとき、出力ピンから外部に電流を吐き出すことができる。
出力がLのとき、外部から出力ピンに電流を流し込むことができる。

そういうこと。
695693:2009/08/19(水) 21:28:03 ID:y7MFWCX+
>>694
即レスありがとうございます。
何やら難しい話みたいなので、もっと勉強することにします。
ありがとうございました。
696774ワット発電中さん:2009/08/19(水) 21:52:59 ID:XBxaAR7K
3664のI2Cにはいろいろと不具合があるみたいだけど3694ではそのあたりどうなってるんでしょうか?
697774ワット発電中さん:2009/08/19(水) 22:01:06 ID:KAVymQSc
オープンコレクタとかいろいろ考えるの、めどいよね。

そういや、ポートの等価回路って見ないなあ。
ふるーいハードウェアマニュアルで見た覚えがあるんだが。
698774ワット発電中さん:2009/08/19(水) 23:59:22 ID:lD2W0oqA
>>696
そのへん直したのが3694
699774ワット発電中さん:2009/08/20(木) 04:10:34 ID:9tagVoaw
>>693
どこかの誰かが、外からマイコン内に流れ込む電流方向を正方向と決めたみたい。
なので、オープンコレクタ出力の「吸う電流「を、+10mAとか表現する。
だからマイコン内から外に向かって流れ出る方向の電流をマイナス記号をつけて
表記する。
3694のデータシートに書かれている、-Ioh = 1.5mAというのは、変な書き方の代表。

一般的な表記
・吸い込み電流 IoL = 10mA
・吐き出し電流 Ioh = -1mA

なぜ吐き出しがマイナスになったか、経緯を知っている人、ぜひ教えてください。

700693:2009/08/20(木) 06:35:10 ID:lgBAEnug
>>699
丁寧な解説ありがとうございます。
IoLは I out Lowの略だと思っており、
当然、+ で吐き出し電流だと思っていたことが勘違いの原因でした。
混乱した原因が分かってすっきりしました。ほんとうにありがとうございました。
701774ワット発電中さん:2009/08/20(木) 06:37:16 ID:a/e9gRBG
経緯というより常識頼りじゃね?
ピンからの「出力」電流を、ピンから「出る」向きを基準に考えるのは自然。
むしろ、それ以外の基準が思いつくようなら聞いてみたい。
702774ワット発電中さん:2009/08/20(木) 06:39:11 ID:a/e9gRBG
げ、ちゃんと読んでないのはオレのほうだ。
大変すまんかった。吊ってくる・・・
703774ワット発電中さん:2009/08/20(木) 08:33:49 ID:ea/38u0w
Transistor-Transistor-Logicの常識だとsink方向が正だろ JK
704774ワット発電中さん:2009/08/20(木) 12:24:31 ID:x/ShygOZ
>Transistor-Transistor-Logicの常識だとsink方向が正だろ
なんで? TTLはsinkが大電流取れる、H側電圧の方がノイズマージンが高いというだけのことで、
方向を+に定義する理由にはならないと思うけど。
705774ワット発電中さん:2009/08/20(木) 19:16:48 ID:eYqas/2B
>>1-704
ヲタキング ルネサスマイコン
柚木正章!!!!
アメリカ人的考えのはずが
終身雇用!!こてこてのべたべたの日本人(大和魂)

キタ━━━━━━(゚∀゚)━━━━━━ !!!!!
706774ワット発電中さん:2009/08/20(木) 20:44:09 ID:FSGge/Zl
インターネット接続環境だとAutoupdateをやるとHEW3などが最新版になりますが
ターゲット環境がネット接続ができないので新バージョンにならないので
なにかUSBメモリなどを経由してAutoupdateみたいに最新版にする方法ありますか?
現時点ではHEW3とE8a関係のソフトウェア、E8aのファームウェアあたりが必要です。
どなたか教えてください。
またはある時点のバージョンに戻すことができますか?
707774ワット発電中さん:2009/08/20(木) 22:25:35 ID:BLz9kAwn
H8 の SCI を使って 38.4 Kbps で通信しようとしています。
上位側のソフト修正は NG といわれ、
下位側の H8 のみを変更して動かすよう
上から指示が出てしまいました。

H8 側は 8MHz 駆動、 35K bps が最大精度で、
H8 側で 7% 誤差が出てしまう状況です。
フレーミングエラーはなぜか出ません。(なぜ?)


クロックの IC を変えるしかないでしょうか?

ハンマーで「発注元」を殴り倒すのが正解?

あくまでソフトが悪いと主張し続ける上の指示を
撤回させる良い方法はありませんか?
708774ワット発電中さん:2009/08/21(金) 00:04:39 ID:A62uRcGc
上とやらが、ソフトが悪いと主張してるのに、
なんでH8変更させる指示出すの?
クロックのIC?

意味不明。
もう一回書き直せ。
709774ワット発電中さん:2009/08/21(金) 00:10:09 ID:A62uRcGc
つーか、そうやって意図もうまく伝えられないようだと、
無理難題押し付けて切ろうとしてるんではないかおまいの上司は。
会社大丈夫かい?
710774ワット発電中さん:2009/08/21(金) 00:14:35 ID:yYvmQJr7
上司側の言い分も聞いてみないと判断つかんな。
実は上司にごく当然の要求をされてるだけかもしれん。
711774ワット発電中さん:2009/08/21(金) 01:00:57 ID:8Ak8s94t
1byteずつ細切れでデータが来てても、38.4kと35kで1ビット落としそうだな。
クロックのICってシリコンオシレータのことだろうか?

上流を変えられないってのは
全体が古いシステムで、上流を置き換えるコスト考えたら、下流から乗っ取って操りたい、とかかな?
712774ワット発電中さん:2009/08/21(金) 08:54:09 ID:QOIMMuYC
オシレータ変えるのが嫌な理由は何? コスト?
713774ワット発電中さん:2009/08/21(金) 13:15:26 ID:dcHdql+P
通信がうまくいかないのにどうやってチェックしたんだろうか
714774ワット発電中さん:2009/08/22(土) 16:26:06 ID:CZgXTJ8S
>>708
>>709
「通信が出来ません」の一言が抜けていましたね。
単純に切ろうとしているだけかも知れません。

>>710
ダメです。景気最悪でまだ全然回復してません。
挙句に社内では愛と勇気だけが友達、
かつデジタルを理解できる人が上以外にいません。


>>711
通信データは全て全部D7が1です。
おそらくはこのためフレーミングエラーが出ないのですが、
上に口頭で説明しても納得して頂けません。
クロックのIC==水晶振動子です。

上流変更不可の理由は、
  ・上の担当領域である事
  ・上から変更不可と指示が出ている事、
  ・社内の上位側「最新」ソースを私がリビルトして書き込んでも一部機能が動作しない
    − 開発環境などの資料がない
    − 社内管理のソースが最新でない可能性が高いため
       (他のプログラムでも最新ソースを紛失している物があったため、今回も同様の可能性が高い)

上位側に35Kpbsにしたソフトを書き込んだ所、
一部欠陥動作ながらも通信できました。
上位側デバッガの使用許可が出ないため
H8の机上デバッグ、シンクロ以外に確かめる方法がありません。


>>712
ICを変えるとなると何十個単位で8MhzのICを捨てる羽目になるからです。
最悪の場合、IC変更を考えています。


>>713
ボーレートを落としてのH8<->PC間通信やH8<->上位側
通信成功を確認済みです。LEDで動作が確認できます。
715774ワット発電中さん:2009/08/22(土) 17:05:34 ID:QvI44HXd
なぜ、38.4 Kbpsで通信することになったの?最初から?
716774ワット発電中さん:2009/08/22(土) 21:55:44 ID:xddO4Kg2
>>714
とりあえず、この流れで、オシレータなりクリスタルなりをICって言うのはどうだろう?
集積回路じゃないしさ。

>>715
上とやらが作った仕様の段階でそーなんじゃないか?


さて
H8のSCIだと、8MHzの38400bpsは確かに穴になってるけど
n=0,N=0 って設定できなかったっけ?
717774ワット発電中さん:2009/08/22(土) 22:05:51 ID:+iMy9Gkb
何十個程度なら変えたほうがいい。高々数千円でしょ。
まともに動かないと判っているものを動かそうとするよりはいい。
あんたの日割りの賃金よりも安いんでは。

ところでソフトウェアUARTは却下?
8MHz / 4サイクル / 38400bps = 52命令/bit
こんだけ余裕があれば作れないこともないと思うが。
718774ワット発電中さん:2009/08/22(土) 22:45:17 ID:rvboKfow
受信するばっかりに忙しくて、他のことが出来ないよー
719774ワット発電中さん:2009/08/22(土) 22:48:02 ID:+iMy9Gkb
サイクルじゃなくてステートか。
半二重になるけど、誤差修正するならSUARTの方がやりやすい。
>>718
スタートビットのたち下がりだけ割り込み使えばいい。
720774ワット発電中さん:2009/08/22(土) 22:56:38 ID:vnAveQU7
元の質問が
>あくまでソフトが悪いと主張し続ける上の指示を
>撤回させる良い方法はありませんか?
なのに、受信を実現する方法をあれこれ考えても助けにはならんよな。
「良い方法はない」と真実を告げるしかあるまい。
721774ワット発電中さん:2009/08/22(土) 23:19:38 ID:QvI44HXd
ソフトが悪いっていうより、今回はハードが悪いと思うよ。
722774ワット発電中さん:2009/08/22(土) 23:48:19 ID:rvboKfow
>>719
>スタートビットのたち下がりだけ割り込み使えばいい。
受信開始まではそれでいいけど、受信数が連続して多いと
そればっかりにならない?
723774ワット発電中さん:2009/08/23(日) 00:04:17 ID:/6zGoIkf
>>722
何を流すのか謎だけど、流しっぱなしってことはないだろう。
38.4kで通信するという要求は果たせるんだから問題ない。
送信した後はこれだけwait取れ、って要求ぐらいは通るでしょ。
無茶をやるんだから。
724774ワット発電中さん:2009/08/23(日) 04:07:55 ID:ZriAnU9p
典型的なデスマーチwww
725774ワット発電中さん:2009/08/23(日) 18:19:13 ID:UTYpLBGB
それはいってはいけないw


しかし部品を捨てるのがイヤでも買うのはOKなんだろうか?
いや、ハードウェアシリアルドライバを付けるとか…さ。
726774ワット発電中さん:2009/08/23(日) 20:21:20 ID:fArtQz00
8MHzのICを捨てるって意味がよくわからないが
たとえば クロックを8MHzから7.68MHzに変えれるのは許されないの?
ちょっと処理は遅くなるけどな
727774ワット発電中さん:2009/08/23(日) 21:57:18 ID:FwiX4mKB
何故H8みたいな何の特徴も無いマイコンを使い続けるの?
728774ワット発電中さん:2009/08/23(日) 22:29:01 ID:OpuraJir
秋月のおかげでH8なら使えると思っているヤツが多いから。
いやな仕事は、そいつらに投げておしまい。
729774ワット発電中さん:2009/08/23(日) 22:53:16 ID:FwiX4mKB
正直H8は時代遅れだよな。
まだPICとか使ってる方がマシ。
SHも中途半端、SH使うならAVRの上位かARMを使う。
730774ワット発電中さん:2009/08/23(日) 23:00:46 ID:mzQJctXN
日本に金を落とせよ。
731774ワット発電中さん:2009/08/23(日) 23:14:18 ID:/6zGoIkf
5V系で速度もメモリもそこそこ、外部バスにDMA付きで
情報も集まりやすいし入手性も良い、別に使い続けてもおかしくない。
732774ワット発電中さん:2009/08/23(日) 23:32:39 ID:CwX+jYKT
それでもH8はないわ
733774ワット発電中さん:2009/08/24(月) 00:10:21 ID:nriT7dtt
何か突然アンチががが
中途半端な要件というか隙間産業的な用途はスルーされている気がするな。

H8と同じ系列なら、NECの78kあたりだと思うけど、アドレスがバンクなんだよなあ…
734774ワット発電中さん:2009/08/24(月) 00:21:01 ID:raRa+PJX
78kって、何でバンクなの? バンクはPC98だけで もう十分なのに。
その点H8は、リニアで良いと思う。
735774ワット発電中さん:2009/08/24(月) 00:26:31 ID:n2WkLXm+
アーキテクチャの違い。
736774ワット発電中さん:2009/08/24(月) 00:34:33 ID:VRqb839v
まだPC98は稼働中だから
保守するための技術が途絶えないように
737774ワット発電中さん:2009/08/24(月) 01:30:11 ID:weNuM7Oi
>>729
H8はレジスタを32bitで使えるから意外と速いよ
8bitのPICやAVRなんかと比べちゃなんねえ
少なくとも同クロックのAVRの半分以上の速度は出るんじゃねーの
PICなんかそのまた半分以下だし
32bit演算やらしたらAVRとも逆転する
738774ワット発電中さん:2009/08/24(月) 07:39:38 ID:tj/R91tt
32ビットの演算は滅多にしないから、普通にプログラムするとH8は
遅い。メモリ空間が16Mバイトもあるのは、この手のCPUでは珍しく、
uClinux を動かすこともできる。

今のところルネサスは将来もH8を継続するっていっているみたいだが、
RXが出てくれば、徐々になくなっていくだろう。H8は高いので
使うのやめたっていうのを何度か聞いたが、やめたいからかもな。

個人的にはR8Cがおすすめ、簡易ICEのE8aが使えるし、E8aが
なくても、シリアルI/FだけでROMコードがデバッガを使って
デバッグできる。秋月の新しいR8CボードにRS232Cケーブルと
電源をつなぐだけで、ROMのコードをHEWを使ってデバッグできるし、
E8aのコネクタも最初からある。ただし、秋月のボードの説明書には
シリアルI/Fを使ってのデバッグについては何も書いてない。

加えて、R8Cは結構使われているし、ルネサスはローエンドCPUは
今後もR8Cで対応すると言っているので、将来性もある。



739774ワット発電中さん:2009/08/24(月) 17:40:28 ID:TEbkEOie
普通に考えて16bit演算ならPIC24Hの方が速いし、32bit演算ならAVR32の方が圧倒的に速いだろ。
それ以前にARMの方が速いが入手性を考えたら現実的では無いが。
740774ワット発電中さん:2009/08/24(月) 18:11:02 ID:3xqdMq2j

Basic

10 PRINT"ゆのきまさあきは、";
20 PRINT"オタク"
30 GOTO 10

741774ワット発電中さん:2009/08/24(月) 23:55:06 ID:weNuM7Oi
>739
そうだね悪かったね

>>738
R8Cってアドレスがスカスカなイメージしかない
それこそAVRでも使った方が良くない?
SPIも5Mbpsまでみたいだし(AVRはtiny2313でも10Mbps)
よく知らないから間違ってたらごめんよ
742774ワット発電中さん:2009/08/25(火) 04:34:48 ID:BLdFIker
>R8Cってアドレスがスカスカなイメージしかない
スカスカ?  R8C/2DでもROM 128K RAM 7.5K 結構あるぞ。
SPIの能力についてはついては知らないなー。

AVRののGCCで、ROMコードをデバッガでデバッグできるのかな?
ROM書き込みGOでUARTにログ出力だと面倒なんだよな。

ライターもたいしたことないけど面倒に感じるな。AVRのWebページって
ライターのことばっかだもんな。
743774ワット発電中さん:2009/08/25(火) 06:17:43 ID:2yHGcvun
>>742
外部バス付きのAVRは約64KBまでのSRAM等を追加できる
ただアドレスが64KB内で共有だから外部64KB全て使えるわけではない

R8Cはアドレス1MBある割に実際使うエリアが少ない印象=スカスカ

SPIはR8CではSSUって名前になってるらしいけど
転送クロックレート選択がf1/4まで、つまり20MHz/4、
対してAVRはf1/2の20MHz/2まで
外部バスのない種はSPIを多用する事になるから
このクロックは実行速度にそのまま反映されやすい

最短命令はR8Cが100nsに対してAVRは50ns
AVRはレジスタメモリ間は100ns単位になる
ただR8Cは16bitだしアドレッシング種類から言えば
かなり速そうだという印象はある

AVRのデバッグにはバグ付きのエミュレータやJTAGがある
arduinoとかもあってグルーなユーザーが多い
744774ワット発電中さん:2009/08/25(火) 06:36:24 ID:2yHGcvun
あと16bit演算はAVRは8bit+キャリーで2クロック、
レジスタのワード転送は1クロックで済む
100ns単位なR8Cとさほど変わらないはず
745774ワット発電中さん:2009/08/25(火) 06:41:03 ID:x48+iK9/
おまえらさぁ。
H8以上のマイコン使うならRT`OSも使おうぜ。実際楽だし、処理量もほとんど変わらない。
なんでRT OSの話題って出ないの?
746774ワット発電中さん:2009/08/25(火) 09:53:08 ID:BLdFIker
>>743
スカスカってそういうことね。R8Cはローエンドだからな、
めいっぱいメモリ使いたければM16Cを使うべきだろうな
R8CはM16Cとコアが同じだけどバス幅半分なので速度を
考えれば使わない方がいい。

SPIは使い方次第じゃない。外部バスがないのをSPIで
カバーするんだったら、最初から外部バス付きを選ぶな
自分なら。

JTAGがあるのは知っているが、使われているのか
Web見てもJTAGでデバッグしてますっていう記述は
あまり見かけない。JTAG ICE2って純正だと結構高いんだろう。

実際のところは、Write
747774ワット発電中さん:2009/08/25(火) 09:54:21 ID:BLdFIker
>>746の続き

実際のところは、Write and GOのデバッグがほとんどじゃないのか。
748774ワット発電中さん:2009/08/25(火) 12:13:17 ID:2yHGcvun
>>746
まあほんとに使い方によるだろうけどさ、
外部バス使うのだと大掛かりになって数百円じゃなかなか作れないし
DIPやSOP辺りのMCUになるとシリアル速度は要の1つになるわけ
SDカードみたいな遅延の多いデバイスでも10Mと5Mじゃ数割程度違ってくる
それとデバッグなんて一応JTAGもあるけどシリアルで十分だよ
AVRは特に素直だからね

だからH8なら用途はまだ見出せる気はするけど
R8Cはこのクラスの選択肢としてはどうかと思った
8bitx2hのDACは魅力的だけどね

関係ないけど上のPIC24HでもSPIは10M限界なのね
40MIPSでDMAあるから効率は違う物だろうけど
749774ワット発電中さん:2009/08/25(火) 17:05:15 ID:q7CxRx70
>Web見てもJTAGでデバッグしてますっていう記述は
>あまり見かけない。
そりゃ,Webで嬉々として書いているのは殆ど(ド素人 && 貧乏人)さんですから
750774ワット発電中さん:2009/08/25(火) 19:12:14 ID:BLdFIker
>>748
シリアル速度とかSPIの速度が重要ってのはよく分からないな。
狭い範囲で有効なことを一般的なことと勘違いしているように見える。
具体的な使い方を教えてほしいな。

SPIで接続するのは、EEPROM,RTC,LAN,SDカードみたいな感じじゃない、
AVRのどのあたりのCHIPをイメージしているのか分からないけど、
速度が必要なLANとSDカードとかは数KバイトのRAMのCPUには適してないような。

それに、SDカードの転送速度が数割違ってとても重要なことのように書いてあるけど、
数割の違いなんて体感ではほとんど分からない。些細なことじゃないかな。

5MってのはR8CのSSUの場合の制限だね。UARTの同期シリアルなら
もっと高速に接続できそうだけど。確認してないけどね。

AVRが素直だからうんぬんはのは同意はできんが、ROMが少ないからなんとかなるのかな。
751774ワット発電中さん:2009/08/25(火) 19:19:59 ID:kVpLgCeM
>>748
俺もシリアルで通信速度を気にする意味が今一分からん。
どんな使い方がしたいの?
752774ワット発電中さん:2009/08/25(火) 22:32:29 ID:2yHGcvun
具体的な使い方教えろって、
まるっきりAVRのライタしか思いつかない連中と同じじゃないかw
教えてやる義理もないし、同意しないならそれでいいよ

それと同じMCUに積まれてる同期UARTが
SPIより高速になる可能性はまずありえないね
R8Cがそうだと主張するなら実験して示してほしい
まあデータシート読めばすぐに無理だと判ると思うけど
753774ワット発電中さん:2009/08/25(火) 23:11:50 ID:kVpLgCeM
>>752
何に切れてるのか分からんが、SPIでそんなに速度が必要なデバイスは無いだろという話しな。
どうしても速度が欲しいなら具体的に言えば他に解決策があるかもと思って聞いてるんだろ?
自分だけの少ない知識が全てだと思わない方がいいよ。
どうしても速度がいるならもっと高速な通信手段は何種類かあるんだし。
754774ワット発電中さん:2009/08/25(火) 23:20:58 ID:qlLzw8FD
752ではないけど、
個人的にはグラフィックLCDを使う時に
漢字フォントをSPIのフラッシュメモリに入れることがあるので
SPIが高速な方がうれしいことはある。そこまでクリティカルじゃないけど。

あと、ピンポイントな話題だけど
SPIバスで接続するEthernet用のコントローラにENC28J60というのがあるけど
リビジョンによってはSPIバスのスピードが遅い(8MHz以下)とうまく動かないErattaがあったはず。
で、H8とかでENC28J60を使おうとしてはまった人が結構いたっぽい。
755774ワット発電中さん:2009/08/25(火) 23:46:51 ID:2yHGcvun
>>753
うーん、
インターフェースを問わなければって話をするなら
始めからシリアルなんか出てくる余地はないんじゃない?
必要かどうかなんて主観的な議論はしたくないなあ
756774ワット発電中さん:2009/08/25(火) 23:50:38 ID:1XEtYJXF
超初心者です。
割り込み禁止フラグをセットしているときに外部割り込み要求(エッジ検出等で)が発生した場合、
その割り込み要求フラグをクリアしない限り、割り込み禁止を解除した直後に
外部割り込み処理が実行されますか?
757774ワット発電中さん:2009/08/26(水) 03:06:25 ID:uj6AkqUV
>>752
ぶっちゃけ、ピン数が少ないからってシリアルの速度が
要だなんてナンセンスだと俺は思っている。 

また、SPIの速度の違いが、重要だとも思ってない。

別に教えてほしいとも思ってないが、なんて答えるかなと思ってんだが。
残念だが、最もつまらない回答だったけど。
758774ワット発電中さん:2009/08/26(水) 03:18:29 ID:uj6AkqUV
>答えるかなと思ってんだが
答えるかなと思ってたんだが

の間違いね。 何か面白いやりかたがあるのかなって
僅かな期待もあったんだが。
759774ワット発電中さん:2009/08/26(水) 20:27:23 ID:IvKbXYNs
>>756
される。
割り込みはIEと要求フラグのandで、成立すればいつでも発生する。

フラグを置いておけないと、多重割り込みでも有効にしないかぎり
割り込み実行中に、別の割り込みを取りこぼすことになるし
それでは割り込み使う意味がない。
760774ワット発電中さん:2009/08/26(水) 22:33:40 ID:i2b7oW7z
>>758
上から目線すなあwww
761774ワット発電中さん:2009/08/26(水) 23:42:56 ID:0yUQ6NP9
>>759
丁寧なご回答をありがとうございました。
762758:2009/08/27(木) 00:27:42 ID:1SXhU6Uw
>>760

お前ら下々に話してやってるだけでもありがたいと思えゴミ
763774ワット発電中さん:2009/08/27(木) 04:13:43 ID:9qv8QHTm
>>754
H8にSPIってあったっけ?
764774ワット発電中さん:2009/08/28(金) 02:37:44 ID:8+Hy3eeR
ない
765774ワット発電中さん:2009/08/28(金) 22:06:52 ID:MAceIwyC
マスクROM仕様ってどういう事?
766774ワット発電中さん:2009/08/28(金) 22:14:46 ID:BesjNVZR
>>765
マスクROMが入ってる。
というか、マスクROMが何者かは解ってる?
767774ワット発電中さん:2009/08/28(金) 22:33:32 ID:MAceIwyC
何者なんですか?
768774ワット発電中さん:2009/08/28(金) 22:53:58 ID:BesjNVZR
とりあえず…少しはググろうぜ。といってみる。うぃきぺに書いてあることでいいし。

そういやF-ZTATしか触ったことないな。
ROM発注するような…FLASHじゃアテにならんような用途って何だろう?
769774ワット発電中さん:2009/08/28(金) 23:10:58 ID:nb/WsD5b
原子炉とかコスモクリーナーDに使ってるんじゃ
770774ワット発電中さん:2009/08/28(金) 23:37:42 ID:D2sIwgRE
>>768
・ものすげー大量に使うので少しでも安くしたい
・はがされて中身読まれたら困る
とか

俺もMASK起こしたことはないのう
マスタ出す時に胃に穴あきそうだなあ…
771774ワット発電中さん:2009/08/29(土) 10:56:43 ID:/M2BGfxA
>>765
インフルが流行るとラインでくしゃみとかして不良率が増えるので、
作業者がマスクして作ったROMということ。
マスクして作った分だけコストが上がる。
772774ワット発電中さん:2009/08/29(土) 10:57:25 ID:/M2BGfxA
>>770
300万パーにしたことあるよ。
773774ワット発電中さん:2009/08/29(土) 18:46:24 ID:3asQn7G1
>>771
うわあ。つまんね・・・
774774ワット発電中さん:2009/08/29(土) 21:11:56 ID:PBuCUv4E
俺が疑問なのはマスクROMって書き換えできないよね?
じゃあ、出荷時にどんな内容で書き込みされているの?
好きに使えないならROM無しとどう違うの?

というあたりですがどうでしょうか?
775774ワット発電中さん:2009/08/29(土) 21:40:54 ID:pj6vubOW
>>774
ググろうぜ…といっても、まあROM発注を知らんと無理か。
ルネサスにプログラムを送って、そのプログラムで動く「製品」としてのマイコンを作ってもらって、ソレを買う。
書き換えできないからバグでも出そうモノなら>>772みたいなことになる。

で、いいかな
776774ワット発電中さん:2009/08/29(土) 22:25:09 ID:PBuCUv4E
>>775

なねほど、そうでしたか。
ありがとうございました。
777774ワット発電中さん:2009/08/30(日) 00:37:28 ID:MXNWPDJf
解決しました。
基板作り直し>立ち消えになりました
有難うございました。

>>715
上位側は変更しない、という指示のためです。

>>720
数日かけてビットずれの原因が分かる資料を作って提出したら
納得して貰えました。

>>721
ハードまで追ってません。

>>724
>>725
「無事」終了フラグが遂行されましたよ。
778774ワット発電中さん:2009/09/01(火) 19:49:56 ID:5hQjHJhg
柚木正章 ゆのき!!!!!!!!!!!!

キタ━━━━━━(゚∀゚)━━━━━━ !!!!!
779774ワット発電中さん:2009/09/02(水) 10:08:15 ID:ig7trK3Q
>>777
いちお…… おめでとう?

しかし理解の遅い上司がいると工数が無駄になって仕方ないな。
780774ワット発電中さん:2009/09/03(木) 18:08:05 ID:OIEoLXwh
H8なんですがメモリマップで内臓RAM2kがあり、とんで
さらに下に内臓RAM2kとあり、内1kはフラッシュメモリ用書き換え用
ワークエリアで残り1kがユーザエリアとあります。
このユーザエリア1kの部分はふつうにRAMとして使っても問題
ないのでしょうか?それとも何か特別な意味のある領域なんでしょうか?
781774ワット発電中さん:2009/09/03(木) 19:15:57 ID:SouwSBRA
ひょんなことからE8エミュレータを手に入れたのでマイコン弄りを始めてみようかと思うのですが
H8tinyの系列かR8Cの系列、どちらの方が扱いやすいでしょうか?

資料の多さだとH8のほうが良さそうですが、R8cのほうがE8でのデバッグが容易などとい言う話も聞きますし・・・
あとはルネサスマイコンの機種がどう整理されていくのかも気になるところです
782774ワット発電中さん:2009/09/03(木) 19:52:42 ID:humwVbBx
糞マイコン使うな。
半導体は、やっぱり東芝。
783774ワット発電中さん:2009/09/03(木) 19:59:10 ID:AocTybXv
http://it.nikkei.co.jp/business/news/index.aspx?n=AT2G02001%2003092009&landing=Next

デジタル家電向けCPU、国内勢が規格統一へ

 富士通、東芝、パナソニックなど半導体・電機大手はデジタル家電や携帯電話に搭載する
新型CPU(中央演算処理装置)の規格を統一する。基幹技術を共有化することで、一からソフトを
開発する手間が省ける。新型の台頭を機に国内勢が結束し、CPU市場で圧倒的なシェアをもつ
米インテルの牙城に挑む。2012年度を目標に業界標準の実現を目指す。

 ルネサステクノロジ、NEC、日立製作所、キヤノンなども参加する。早稲田大学の笠原博徳教授が
考案した省エネ性能に優れたソフト規格に対応する新型CPUを各社が開発し、性能を検証する。


デジタル家電や携帯電話のような組み込み用っていってんのに、なんでインテルなんだよ。ARMだろ。
大体、富士通、東芝、パナって、素直にルネのCPU使ってりゃええがな。今更なにしたいの。
ルネはおつきあい程度で参画するんだろな。これまでも携帯電話用エンジンの共同開発とかルネが中核でやってきたわけだし。
これ音頭とってるの経産省とかじゃねーだろな?
784774ワット発電中さん:2009/09/03(木) 20:12:40 ID:6TFJEETl
>>780
H8の、何だすか。
後ろの3桁なり4桁の型番言えば、そんなアドレスの説明しなくても、知ってる人が答えると思うが。

あと「内蔵」。
785774ワット発電中さん:2009/09/03(木) 20:17:11 ID:j388IR7w
 ニュースの元ネタがわからんので何とも言えんがインテルって書いたのは
記者じゃないの?

 技術的な元ネタはこれか?
ttp://japan.renesas.com/fmwk.jsp?cnt=press_release20080204.htm&fp=/company_info/news_and_events/press_releases
786774ワット発電中さん:2009/09/03(木) 20:19:10 ID:j388IR7w
こっちか。
ここのOSCAR-APIに対応するCPUみんなで作ろうぜってことかな
ttp://www.kasahara.elec.waseda.ac.jp/index.ja.html
787774ワット発電中さん:2009/09/03(木) 20:20:43 ID:echX8sCy
>これ音頭とってるの経産省とかじゃねーだろな?

文科省かもしれないが大学が保有する技術シーズを民間に移転するという名目の
補助事業でご想像通りの税金無駄遣い事業だよ。

788774ワット発電中さん:2009/09/03(木) 20:24:33 ID:WUvuGu3C
第五世代コンピュータ思い出すな
789774ワット発電中さん:2009/09/03(木) 20:45:59 ID:fJdz6H1f
そうか、TRONチップがとうとう実用化されるんだな。
アルファプロジェクト再来!
790774ワット発電中さん:2009/09/03(木) 20:50:18 ID:AocTybXv
どこが音頭とってるのかわからんが、
携帯電話エンジンの開発のように、民間発の共同開発なら大学のセンセなんかからめない。
理学やら、工学でも理論研究ならともかく、それ以外は企業の方がはるかに上ってことを役人は理解してない。
アホの一つ覚えの産官学の三位一体とか謳い文句にするのが好きなんだよな。
センセの下にいる実働部隊ってのはこれから、ここらの会社に就職しようっていう学生だろ。
ワセダの学生に体験入社かさせるのが目的か?
791774ワット発電中さん:2009/09/03(木) 20:50:26 ID:fJdz6H1f
シグマプロジェクトだった。アルファ〜は実在の会社だわ;;;;

ttp://pc11.2ch.net/test/read.cgi/os/1148458561/l50
792774ワット発電中さん:2009/09/03(木) 20:51:31 ID:AocTybXv
>>789
それじゃ。このワセダの笠原ってのは足折って入院ってか?
793774ワット発電中さん:2009/09/03(木) 20:55:15 ID:z5aSeuzw
H32Bロケットができたりして
794774ワット発電中さん:2009/09/03(木) 21:00:39 ID:AocTybXv
ルネはH8でもSHxでもそこそこシェアとってるし、覇権をかけてRXとか開発してる最中に迷惑な話だな。
富士通や東芝はともかく、これまで国内で組み込みプロセッサの強かった三菱と日立がルネつくってこれからってときに、はなはだ迷惑。
どーせなら、富士通や東芝のプロセッサやってるとこをルネに売却するほうが話は早くないか?これからでもRX開発に参画すると。
東芝は原発に軸足うつしてるんだからついでにフラッシュもエルピに売却すりゃどーよ。
795774ワット発電中さん:2009/09/03(木) 22:34:48 ID:P0A4cu1Q
>>780
RAMはユーザーが自由に使える。
flashのあの機能はROMエリアをRAMみたいに使えるよ。
でも、RAMの一部使うからそこ使うときは気をつけてねってこと
796774ワット発電中さん:2009/09/04(金) 18:19:19 ID:xdoI2Jsh
H8ってAVRやPICより高性能なの?
797774ワット発電中さん:2009/09/04(金) 20:12:45 ID:2Squu9sn
>>796
それは、ビット数やクロックの条件を同じにしての比較?

いまどき、もう、H8/300とかってあんまり見ない気もするけど。
798774ワット発電中さん:2009/09/04(金) 21:25:11 ID:RaJpnSTR
新規に使うもんじゃないけど、秋月で数百円で売ってる
AVRやPICよりかは・・・高性能だよ
AVRやPICじゃ無理でもH8だと簡単に実現できることが結構ある
用途次第だからデータシートよく見て選ぶこと
外部バスのないH8はゴミかな
799774ワット発電中さん:2009/09/04(金) 21:31:23 ID:ZsyB1gS3
柚木正章
柚木正章
柚木正章
柚木正章
柚木正章
柚木正章
柚木正章
柚木正章
柚木正章
柚木正章
柚木正章
柚木正章



800774ワット発電中さん:2009/09/04(金) 22:04:13 ID:NmvOv6Dt
購入価格を同じにしての比較じゃね?
801774ワット発電中さん:2009/09/05(土) 06:05:16 ID:uRtojR5k
PIC だっていろいろあるからなぁ
802774ワット発電中さん:2009/09/05(土) 13:13:32 ID:VR4cDizX
PICも16bitの高速版とかあるしな。AVRは知らんが。
803774ワット発電中さん:2009/09/05(土) 20:27:37 ID:lmF5xY9m
H8は32bitレジスタが使える。
68000-MMU → H8
804774ワット発電中さん:2009/09/06(日) 17:48:15 ID:wyvKhXw6
ビット数なら、PICは40ビットAccが使えるな。
805774ワット発電中さん:2009/09/06(日) 20:07:06 ID:cmdL2h0X
SHなら64ビットMACが使えますが何か?
806774ワット発電中さん:2009/09/06(日) 23:57:58 ID:pfa4qrui
>>804
おまえH8とPICの機能比べて恥かきたいのか?
あくまでもPICは8bitコントローラだろが。まっとうな16bitマイコンのH8と機能比較なんか持ち出してくるなや。
PICで、
外部バスは?外にDRAMつなげたいときどーすんの?
タイマは何チャネルだっけ?
間接アドレッシングしたいときどーすんの?
ホレホレ答えてみな
807774ワット発電中さん:2009/09/07(月) 00:29:35 ID:ZLIoGngd
>>806
頭悪すぎ、空気嫁
PICでも32ビットはあるし適材適所。
H8が32ビット扱えた所ででかいメモリ空間を自由にアクセスするには遅すぎる。
16ビットPICの40ビットAccはその筋に特化してるからH8の速度じゃ到底無理な信号処理が出来る。
必要ならSHやSHDSPを持ち出さないと無理な処理だって出来る事もある。
DRAM使うだけがマイコンの仕事じゃ無いんだよ、パソコン坊や。
808774ワット発電中さん:2009/09/07(月) 00:39:14 ID:2lY8gSBL
しかし適材適所はいいとして
H8/SHのスレで伸びる話じゃないなあ
809774ワット発電中さん:2009/09/07(月) 01:54:23 ID:VU+EE094
>>807

"機能"と書いてるところに何苦し紛れの処理スピードの話もってきてんだ。
機能と速度の違いもわからんってか?そもそも8bitと16bitの設計の違いはバス幅の違いより機能の差だ。
それを比較するオマエこそおつむ悪すぎなんだよアホ。
高速処理が必要な部分にH8ってアホかオマエ。適材適所考えられないのはオマエだろうが。マヌケ

>DRAM使うだけがマイコンの仕事じゃ無いんだよ、パソコン坊や。

使いたいのに使えない、結論:それはマイコンと呼ぶにはカタワチップだから
カタワチップだからマイコンは名乗らずコントローラと名乗ることにします←マイクロチップ談

ホレホレ
・外部バスは?外にDRAMつなげたいときどーすんの?
・タイマは何チャネルだっけ?
・間接アドレッシングしたいときどーすんの?

はよこたえてみ。

40bit Acc?まともな16bit DSPなら最低MAC+加算時桁あふれ8bit確保してて当たり前。何今更の機能自慢してんの。
これも速度関係なければソフトで回避対応できる。ハードウェアの機能ができて手も足もでないのと全く違う。
810774ワット発電中さん:2009/09/07(月) 02:03:12 ID:VU+EE094
結論

間接アドレッシングもできないカタワチップに用はない

811774ワット発電中さん:2009/09/07(月) 02:46:01 ID:1igJe7uB
>>809
>機能と速度の違いもわからんってか?

だから馬鹿だって言ってるんだよ。
速度が必要ない?www
なら、バンク切り替えでもI2cのSRAMでも繋げてエミュすれば68Kなんてセコイ事言わずに
8ピンPICでさえ16G乗っけたコアiと同じ事が出来る。原理的にはね。
40ビットのAccだって、速度を気にしなきゃi4004でさえ実現出来る。
が、まっとうなH8でリアルタイムに信号処理が出来ないのにかたわのPICが出来るのは事実。
大体、レジスタのビット数の話をしてる所に無理やり機能を持ち出したのは、知ったかパソコン坊やのほうだろ
812774ワット発電中さん:2009/09/07(月) 03:43:14 ID:eGXhpbPG
14V池沼を相手にしてはいかん。
813774ワット発電中さん:2009/09/07(月) 04:20:39 ID:VU+EE094
>>811
何を極端な例を持ち出してんだ。馬鹿者
桁あふれ処理をSWでやるなんてことは普通にやるだろうが。
MAC+桁あふれまでを含めて最小システムクロックでやりたきゃはじめからDSPを選べ。
繰り返し処理まで含めて1クロックでやりたきゃマッチドフィルタをFPGAで組めや。そんなチョイスもできないのかおまえは。
で、
おまえがまさに例として挙げた、外部メモリを使うしかない処理であっても、
16MB以内なら、H8ならそのままバスにつないで、バスアクセスタイミングでふつーに処理できるわな。
PICではそれこそSRAMエミュとI2Cでやるしかなくてリアルタイムじゃほとんど実現不能だよなぁ。ゲラゲラ
あったま悪いなオマエ、何自分で墓穴掘って、PICじゃリアルタイム処理できない実例挙げてんの。
どーせオマエがリアルタイムに処理できないってのはH8用に最適化したソフトも組まなかったんだろ?
ま、こういうオツムじゃしゃーない罠。

>まっとうなH8でリアルタイムに信号処理が出来ないのにかたわのPICが出来るのは事実。

全ての処理でいえるならともかく、オツムかたわのおまえがたまたま遭遇した一例をもとに軽々にレスすんな、
オツムかたわの >>ID:1igJe7uBがやったらたまたまH8ではリアルタイムでは動かすことができなくて
同類カタワチップのPICでは処理できました
と言い直せや馬鹿者

あとな、メモリ保護機能のないPICでバンク切り替えだけでどうやって68Kと同じことできるか説明してみろ。
MMUの意味わかってんのかお前
814774ワット発電中さん:2009/09/07(月) 05:09:00 ID:gXj6pjrx
>>813
>全ての処理でいえるならともかく、オツムかたわのおまえがたまたま遭遇した一例をもとに軽々にレスすんな、

頭の良いお前が遭遇しなかった上に想像も出来なかったからといって、そんなに悔しがる事は無いぞw


>あとな、メモリ保護機能のないPICでバンク切り替えだけでどうやって68Kと同じことできるか説明してみろ。
>MMUの意味わかってんのかお前

68KにMMUが乗ってるのかよw
漫画ばかり読んでないで、ひよっこはまずGEBでも読んで勉強しろ。
815774ワット発電中さん:2009/09/07(月) 06:29:21 ID:76mCfYzW
>>812
14V厨というよりは、
どっちかっつーと「PICは暴走しない」厨に似ているような。

なんにしても。H8よりPICが高性能だと思っているなら
黙ってPIC使ってりゃいいのに、わざわざH8スレに来て
挑発的な書き込みするあたり、荒らし目的としか思えん。

こんなやつ、相手にするのも荒らし。
816774ワット発電中さん:2009/09/07(月) 08:24:01 ID:QNFCYAgN
季節の変わり目はおかしいのが出てきやすいから仕方ないだろうね
817774ワット発電中さん:2009/09/07(月) 09:27:09 ID:VHUPAACe
>>814

>68KにMMUが乗ってるのかよw

こいつ神聖バカだな。
68kにUnixが載って、286にUnixがナンデ載せられないか、一から勉強し直せカス
話にならんなアホ過ぎて
818774ワット発電中さん:2009/09/07(月) 10:00:48 ID:Kqoq0/JR
H8はなぜ16ビットになっても8のままだったのだろうか。
SHってSuperHだのに、なぜ1から始まったのだろうか。
819774ワット発電中さん:2009/09/07(月) 10:23:20 ID:mbp6MZ4d
>>817
むか〜しXENIXてOSがあってのう…

ということで努力と根性でどうにでもなるのですよ。
820774ワット発電中さん:2009/09/07(月) 12:14:19 ID:dwv+SpWB
68kの話は、MMUとスーパバイザモードを混同してるのかなぁ?
821774ワット発電中さん:2009/09/07(月) 13:02:33 ID:fvxTkaFY
>>819

情報処理試験勉強をゼロから高卒と一緒にやり直せ
タスクごとのメモリの独立性はソフトウェアだけでどうにかなるとでも思ってんのか。

>XENIX

だからこそのなんちゃってUNIXだろうが。
822774ワット発電中さん:2009/09/07(月) 20:24:51 ID:cSa0m0X+
MMUという明確なものが乗ってるのは68030からみたいだな。
って、もはや、日立関係なくなってるな。
823774ワット発電中さん:2009/09/07(月) 22:48:32 ID:CGgQ1xHo
>818
H8についてはH16というマイコンがかつて存在したため。
68000を高機能化して周辺機能集積をしたようなチップ。
CPUレジスタをリングバッファ的にたくさん切り替えて使えた。

ちなみにH32はTRONチップのことで、当時の日立はいち早く
三菱と(ついでに富士通と)提携してた。
Gmicro100がM32、Gmicro200がH32、Gmicro300がF32だた。

SHについては赤鬼さんに聞いてけろ。

>814
68000にはMMUはありません。
68010で仮想記憶がサポートされました。
68020には外付けのMMUチップMC68851があり、Macintosh-IIでは
optionだったはず。
68030でMMUが内蔵されました。めでたしめでたし。
ちなみに当時の日立は68000とCMOS版の68HC000を作ってました。
824774ワット発電中さん:2009/09/08(火) 00:02:00 ID:sOWZRWCt
そういや東芝も68000のCMOS版を作ってなかったかな
825774ワット発電中さん:2009/09/08(火) 10:42:03 ID:Z5Dgq4PZ
>>823
d〜、そしてへぇボタン連打
H16って初めて知った。ぐぐってもほとんど当たらないのが悲しいが。
826774ワット発電中さん:2009/09/08(火) 11:17:23 ID:MoWX6XQ/
>>824
あったねえ。

>>825
あれは日立とモトローラが喧嘩した結果、闇に葬られてしまいました。
そういや昔いた所にマニュアルだけおいてあったなあ…
827774ワット発電中さん:2009/09/08(火) 11:31:10 ID:rzP+Pn83
なんで喧嘩しちゃったのですか?
モトローラの勝利でしょうか?
828774ワット発電中さん:2009/09/08(火) 23:48:26 ID:GeUQ7NCb
829774ワット発電中さん:2009/09/10(木) 15:15:11 ID:Y6kYwNYK
>>828
d〜
そのまま育っていればH8と並んでおもしろそうなアイテムではあるな…
830774ワット発電中さん:2009/09/10(木) 23:42:25 ID:oybCpkAM
H8は秋月の据え置き価格が異常なだけで
適正に直せば500円ぐらいじゃないかと
831774ワット発電中さん:2009/09/11(金) 12:02:27 ID:tcM8JJSv
ルネは新規にH8作ってるのかな?在庫品だけ?
新規に生産するなら、1世代遅れぐれいのプロセス使ってくれればまだまだ省電力になるのに。
832774ワット発電中さん:2009/09/11(金) 13:14:58 ID:S8ELw9N6
>>831
今時のロジックを1世代前のプロセスで?
1世代前のロジックを今のプロセスで?

今時のタイニーを激遅クロックで使うほうが幸せじゃなかろか
833774ワット発電中さん:2009/09/11(金) 13:28:41 ID:tcM8JJSv
>>832
H8のロジックがなんで今時なんだ。
834774ワット発電中さん:2009/09/12(土) 17:14:57 ID:Vs07LcVY
オタクの柚木正章です。よろしくな。
http://changi.2ch.net/test/read.cgi/otaku/1241858991/
835NEC社員:2009/09/16(水) 20:08:17 ID:3LHn7EME
RXにVシリーズの精神も盛り込んでね

NECエレとルネサス、事業統合後の会社名を決定
〜「ルネサス エレクトロニクス」へ

http://pc.watch.impress.co.jp/docs/news/20090916_315894.html
836774ワット発電中さん:2009/09/17(木) 10:32:30 ID:6PxPP0Lc
Vシリーズの精神って何?

V25,V33,V55も含む?
837774ワット発電中さん:2009/09/17(木) 11:21:24 ID:gG0zMjI4
V30のとき、日の丸マイコンのロードマップあったよね。V90ぐらいまであったかな。
838774ワット発電中さん:2009/09/17(木) 18:39:38 ID:mU05N+XC
すいません

gccのCで3069やろうと思うのですが、
秋月のCD-ROMのgcc(ver2.95)って古くないですか?

新しいんだと何か拙いのでしょうか、エロい人おねがいします
839774ワット発電中さん:2009/09/17(木) 23:07:08 ID:7x4mMxLR
すみません。教えてください。
H8/3069, mode5(内蔵ROM,RAM有効モード)で、回路を作ったのですが、
動作が変なのです。ヒントをいただけないでしょうか?

1. main()と、関数だけ(タイマー割り込みなし)だと、main()動き続ける。。
2. main()と、タイマー割込を有効にすると、main()が0.1秒くらいで止まってしまいます。
  しかしタイマー割り込みは正常にかかり続けます。

測定例
・LEDをon/offさせる関数、LED1を作ります。
・main()で、関数LED1()を呼び、LED1をon/offをさせてオシロで波形を観測
・timer1()でも、LED2を直接on/offさせてオシロで波形観測  とした場合、

1. main()だけ(timer1()を禁止)の場合
  RESET ____|〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
  LED1  _____||||||||||||||||||・・続く

2. main()+timer1()の場合
  RESET ____|〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
  LED1  _____|||_______________ 0.1secくらいでmainが止まる
  LED2  _____||||||||||||||||||続く・・・・

という感じです。さらに、外部バスのHWR,LWR,AS,RDは、
どれを見ても常にHのままで、まるでシングルチップモードのような感じです。
どうぞ宜しくお願いします。
840774ワット発電中さん:2009/09/17(木) 23:17:54 ID:hJT2FBjj
とりあえず回路図とソースをうぷしろよ
笑ってやるから
841774ワット発電中さん:2009/09/17(木) 23:45:24 ID:FhqOG94D
Vシリーズの精神というとやっぱ8080エミュレーションモードかな
842774ワット発電中さん:2009/09/17(木) 23:45:58 ID:QTV1Bz58
>>838
俺は最新版?にオリジナルパッチ当ててるな
843744ワット発電中さん:2009/09/18(金) 00:37:12 ID:rei2WU8l
>>839
Timer2の周期が早すぎるんじゃね
あと、割り込み処理が腐ってるとか
844774ワット発電中さん:2009/09/18(金) 00:43:14 ID:a0ykcvdd
割り込みフラグを消してないに10メセタ
845774ワット発電中さん:2009/09/18(金) 01:28:46 ID:OtoKh/+z
839です。直りました。ありがとうございます。
>>843が「腐ってる」と言うので、リストをプリントアウトして、臭いをかいでみましたが、
特に臭いところはなかったです。
>>844
timer1はちゃんとTGFA=0にしています。その証拠に、10ms毎に正しくLEDがon/offしますので。
ところが、実はtimer2も走らせていたことを忘れていました。
timer1=10ms周期、TSTR=on、割込内でTGFA=0実施済み、割込登録済み、
timer2=100ms周期、TSTR=on、割込内でTGFA=0実施済み、割込登録「忘れ」 → TPUは動いているのに、割り込みかからず。
で100ms後にmain()に戻れなくなってしまった。ということで、僕がアホでした。

ありがとうございました。大変助かりました。
今からプログラム再開です。
846838:2009/09/18(金) 07:42:47 ID:XDZoULR7
>>842
そうですか、オリジナルパッチを当てるほどスキルはないので
このままでやります
847774ワット発電中さん:2009/09/18(金) 10:16:45 ID:kJsDSpLP
KPITってとこがHEW含めてフリーのを配布してたな
今でもやってると思うけど。

RAMが定義通りに並ばなくてくずおれた覚えがある
848774ワット発電中さん:2009/09/20(日) 00:12:34 ID:V8pfHLHq
>>838

だ・か・ら

何でHEW使わないんだよタダだし、gccなんかより遙かにコード品質もいい,
call walkerもついてる。しかも、事実上期限制限なんてないに等しい。
849774ワット発電中さん:2009/09/20(日) 07:26:06 ID:hCXQGdu0
>>838
そもそもHEWはVisual StudioやEclipseなどと同様に、統合開発環境(IDE)
であって言語コンパイラではない。 したがって、生成されるコードの
品質となんら関係ないし、影響も与えられない。

KPIT GNU ToolsのgccはHEW上でも走るが、gccコンパイラ自体はコマンド
プロンプトからも起動できる。 Visual C/C++についても同様。
850838:2009/09/20(日) 10:23:41 ID:kUfDE1Lk
60日の使用期限があるので躊躇しています

これだと
http://sourceforge.jp/projects/tsuru-develop/
http://www.alpha.co.jp/biz/products/knoppix/download/pamphlet/pamphlet_edu8.pdf

3052ができるらしいので、ゴチョゴチョして3069に使えないかなあと思っています
851774ワット発電中さん:2009/09/20(日) 11:33:31 ID:ScmvNfWk
windows用のバイナリがほしいなら、GDLでいいじゃねえの
852774ワット発電中さん:2009/09/20(日) 18:32:27 ID:QvoSTD43

今日も半日、入力が取り込めないバグで悩みました。
原因は、P1.PORT.BIT.B1 を、
    P1.DR.BIT.B1 にしていました。
このPORT, DRをなんとかでせませんか?→日立
3069では同じDRで良いのに、なんでH8SはPORTとDRで分かれなきゃいけないの?
使いにくいな〜もぅ。イライラします。

はぁ〜。
853774ワット発電中さん:2009/09/20(日) 19:20:16 ID:YxUZ7N5K
DRがライトで、PORTがリードだっけ?
ロジック的には、いちいち1つのレジスタに書き込み読み込みを切り替えてさせるより
パラにアドレスバスに繋いでしまうほーが楽だしなあ。って、そんな設計屋の思想は知らんかしらんが。

入出力をいちいちポートで書くのはめどいから、私は大抵defineでラベル化してしまうな。
ラベルのdefine書くときに入力だけ、出力だけ、って並べておけば間違わないし。

周辺ロジックの設計思想のムラは結構前から言われてるような…
854774ワット発電中さん:2009/09/20(日) 20:11:55 ID:uug32kdh
そもそも3048系(F1,3052)と3067系(3068,3069)という
似て非なる石を出す意図がわからん。
どっちかひとつでいいのに。
855774ワット発電中さん:2009/09/21(月) 01:38:31 ID:GhU9K3Ch
ROM/RAMの容量から言って、3067系があれば、3048は要らないと思うな。
856774ワット発電中さん:2009/09/21(月) 14:04:39 ID:0LxVIoGx
>>849
何をくっだらんことにちゃちゃいれてんだ糞野郎。
gccのかわりにVisual Studio使えとか普通にいうだろうが。
わざわざgccの糞品質で、スタック容量も手計算でやるしかない言語環境で
せいぜいシングルタスクのコード書くのが関の山かいテメエはよ。

>影響も与えられない。

統合環境ならではのcall walkerを使えるかどうかで作ったコードの信頼性を向上させることができるね。
んなこともしらんとアホかお前は
857774ワット発電中さん:2009/09/21(月) 14:07:50 ID:0LxVIoGx
ほぼ、ユーザが望む全てを無料で提供してくれてるHEWを使わずにgccやらKPITから言語環境として検討するなんざ、
本末転倒なんだよ馬鹿たれ。cpuメーカが開発環境を無料提供してくれてるのに何のためにgcc使うのか説明してみろカスの >>849
858774ワット発電中さん:2009/09/21(月) 14:22:46 ID:f5YYS0DD
汎用性のない技術を学ぶだけの価値がルネサスのマイコンには無いってことだろ。
簡単なことじゃないか。
859774ワット発電中さん:2009/09/21(月) 15:06:09 ID:k6DkawZu
統合環境に使われてる人が
860774ワット発電中さん:2009/09/21(月) 18:49:16 ID:epJV7FQi
そういう話はこちらで

H8/SH gcc vs 純正コンパイラ
http://science6.2ch.net/test/read.cgi/denki/1183216226/l50
861774ワット発電中さん:2009/09/22(火) 00:01:52 ID:jUfZfvLb
>>860
そのスレ、ゴミカスが建てたネタスレだから、こっちで議論したほうが有意義だよ。
862774ワット発電中さん:2009/09/22(火) 02:16:35 ID:bLDAaB2V
>>856-857
そもそも、ルネサスの純正コンパイラやHEWって、実際のところKPITにオフ
ショア開発で丸投げしているんじゃないの? わざと最適化レベルを変えて
純正コンパイラの価値を相対的に底上げしていると言うか、フリーのgccの
方をわざと下げていると言うべきか。

C言語なんて、詰まるところ汎用アセンブラなんだから、gccでも何でも
マルチタスクのコードなんていくらでも書けるだろ。JK

ルネサス純正コンパイラが無償提供されているというなら、使ってやらなく
もないが、所詮ルネサスのマイコンじゃあ多少最適化したところで知れてる
し、コンパイラの最適化なんかに頼るより、一度アセンブラのソースコード
吐かせて、手作業で最適化した方がマシ。
863774ワット発電中さん:2009/09/22(火) 03:03:56 ID:a5pgO9Aa
こんなことで熱くなるような変な連中がユーザなのかぁ・・シミジミ
864774ワット発電中さん:2009/09/22(火) 03:19:51 ID:Ea+epmiy
>>862
こんな知ったか厨を相手にしてたらコストアップは必須だな。
865774ワット発電中さん:2009/09/22(火) 04:36:25 ID:kwofVpYU
>862
ルネサス純正コンパイラ と一絡げにすることがまず間違い
866774ワット発電中さん:2009/09/22(火) 06:19:13 ID:EQ8VdoVG
最適化の話は昔から嫌というほど出てくるが、
具体的な例を見た記憶がない。
867774ワット発電中さん:2009/09/22(火) 10:40:33 ID:jQFEivuI
>>862

>C言語なんて、詰まるところ汎用アセンブラなんだから、gccでも何でも
>マルチタスクのコードなんていくらでも書けるだろ。JK

おまえほんとにアホの極みだな。全く理解してないし、まるでRTOSのかけらも使ったことないことがもろわかり。
アホのくせにそれを反省もせず。糞の役にも立たんレス返すだけ。恥を知れ。
gcc使ってマルチタスクのコード書いてスタックの使用量どうやって見積もるか言ってみろカス。
HEW使えばcall walker でちゃんと計算できる。それすら知らずに何をぐだぐだ戯言レス入れてんだ糞が。
gccで使えるcall walkerに匹敵するスタック量計算ツールあったら挙げてみろ馬鹿

>ルネサス純正コンパイラが無償提供されているというなら、使ってやらなく

無償提供なんだよ糞が。

>所詮ルネサスのマイコンじゃあ多少最適化したところで知れてる し、一度アセンブラのソースコード
>吐かせて、手作業で最適化した方がマシ。

やっても無いことをさも経験あるようにかたるなうじ虫
gccとルネサス純正コンパイラのコード比較もしたことないお前が笑わせんなバカ


>>866
だいたいgccの実行速度ははルネサスコード比7掛けだ。
イエローソフトもそういうベンチ結果をサイトに記載してたことすら知らねえのか。

868774ワット発電中さん:2009/09/22(火) 10:51:17 ID:vBl5r6Ew
また再インストール/VMでフル機能に戻るキチガイか。
869774ワット発電中さん:2009/09/22(火) 12:38:05 ID:0yDn94Gu
教えてください。

マイコンにLEDがつながっています。
何かのイベント(異常とか)を検出したら、
処理をしながら、このLEDを点滅させたいです。
どのようなプログラムを書くのが定石でしょうか?
今は、

main(){ で、
  通常処理を行う

  もしイベント==yesなら
    もしカウンター++が50000になったらLED on
    そうでなくて、もしカウンターが100000になったらLED off
    そうでなくて、もしカウンターが100001になったらカウンター=0
}
のようにして、ひとまず動いています。

が、通常処理の内部に待ちの部分があり、
待ち無し、0.1sec待つ、0.5sec待つなどに変化します。
その長短によって、LEDのoffの時間が変化してしまいます。

普通はどのようにプログラムするのが定石なのでしょうか?
870774ワット発電中さん:2009/09/22(火) 12:47:15 ID:vBl5r6Ew
WDTは使えないの?
871774ワット発電中さん:2009/09/22(火) 13:11:20 ID:0yDn94Gu
ありがとうございます。WDTですか。
今使ってるH8 (3069)に内蔵されているか調べてみます。あったかなぁ...
872774ワット発電中さん:2009/09/22(火) 13:55:07 ID:f8QvypbI
gccの__attribute__でeightbit_data,tiny_dataとか指定できるんだけど
873774ワット発電中さん:2009/09/22(火) 14:00:02 ID:Oe4YzHkT
>>869
ITU H8 でググれ
意味が判らなかったら初心者本読んで出直せ
874774ワット発電中さん:2009/09/22(火) 14:31:57 ID:uybimi/f
なんかバカとヤクザが混ざってるよな
このスレ
875774ワット発電中さん:2009/09/22(火) 14:32:27 ID:pBeq+cgb
なんで7,8年前の2ちゃんねるみたいな人ばっかりなんだ。
脳みそが停止してんのかね?
876774ワット発電中さん:2009/09/22(火) 16:14:43 ID:P7HNlvSN
>>869
割り込み一切抜きで、メインループにカウンターだけ置いて時間を見てるのか?
なんかPICみたいな作り方だなあ。

どっかのタイマーを1つ食ってカウンター作るほうが幸せな気がする。
877774ワット発電中さん:2009/09/22(火) 16:17:29 ID:P7HNlvSN
そういえば…密かに(?) >>1
「特に初心者の人には親切丁寧をモットーにお答えしますよ。 」
と、書いてある件。
878774ワット発電中さん:2009/09/22(火) 16:32:07 ID:0yDn94Gu
869です。
みなさん、ありがとうございます。
タイマーがあるのは知っていますが、どのようなときに使うのかわからずにいます。
というか、タイマを使うと何が嬉しいのかわかりません。
以前一度トライしたんですが、全然動かなかったので、使わないようにして
メインで数字を++してやっています。
main外部のタイマーでやっても、そのタイマーに行ってLED onして0.5sec、offして0.5secの後
mainに戻ってくればよいのでしょうか。
その間、スイッチとかの取込ができなくなるのは同じだと思います。

879774ワット発電中さん:2009/09/22(火) 16:59:36 ID:P7HNlvSN
>>878
タイマーの使い方はググるほうが正確に出てくるが、簡単にいうと
(他の割り込みで待たされない限り)クロックと同等の精度が出る割り込み周期が作れる、というのが一番のメリット。

そしてなんで0.5sec「待つ」ことにこだわるのか。
タイマーは毎回周期ごとに発生するんだから、割り込み発生でonだけして帰ってくる、offだけして帰ってくる、でいいじゃない?
もしくは、精度が高いわけだから、メインで読むためのカウンタをタイマー内でカウントアップさせればよいじゃない?

とりあえず「その場で待つ」という考え方は激しく排除したい。
数十ステートとかいうレベルの通信のための1ビット待ちぐらいではやるけど。
880774ワット発電中さん:2009/09/22(火) 17:44:09 ID:0yDn94Gu
869です。
>>879
ありがとうございます。お手間をかけてすみません。
おかげ様で、プログラムがだいぶスッキリしてきました。
PICのときは、delay_ms()というのが使えて便利だったんですが、H8にはないみたいなので、毎回自分で考えています。

void timer(){   /*タイマーサブ */
  caunt++;    /*インクリしてすぐ戻る */
}

main(){
//  通常処理

  if( EM==false)begin   /*まだ異常が出ていたら */
    LED(1);       /*LED on */
    while(caunt<50){}  /*10ms*50=500ms待つ */
    caunt=0;       /*タイマークリア */
    LED(0);        /*LED OFF */
    while(caunt<50){}  /*0.5s 待つ */
    event=0;       /*異常を消す */
  }
}

これから出かける用事があるので、また夜か明日書き込みます。
881774ワット発電中さん:2009/09/22(火) 17:55:03 ID:YUNIcjsA
caunt となっwwww
882774ワット発電中さん:2009/09/22(火) 18:37:58 ID:8qFbFBex
oh,miss spell
883774ワット発電中さん:2009/09/22(火) 18:54:54 ID:P7HNlvSN
>>880
とってもPICなコードだなあ。
まあ規模が小さいうちはその場待ちでもいいんだろうけど。

割り込みのほうのフラグクリアがないのは便宜上と解釈して…

  if( 異常なし ){
    caunt=0;
    // 通常時の処理
  }
  else{              //異常あり
    // 異常時の処理

    if (caunt<50){      //最初 0.5sec
      LED(1);        //LED on
    }
    else if (caunt<100){   //次の 0.5sec
      LED(0);        //LED OFF
    }
    else{
      event=0;       //異常を消す(異常が消えた時点でカウンタはクリアなので上限確認無し
    }
  }

とかじゃいかんのかしら?
これならLED操作しながらその他の処理もできるが。
884774ワット発電中さん:2009/09/22(火) 19:55:42 ID:a5pgO9Aa
メインは
blink = (異常あり?);
だけにして
割り込みの中で
if ((caunt++ & 0x40) && blink) {
LED(1);
} else {
LED(0);
}
とかなんとかってやっちゃうかな.50じゃなくて64カウントごとに動くけどね
885774ワット発電中さん:2009/09/22(火) 23:59:18 ID:bLDAaB2V
>>884
> 50じゃなくて64カウントごとに動くけどね

cauntのカウント値を0から49の範囲として良ければ、点灯状態
を保持する変数を追加して

static BOOL bTurnOn;

  if(blink)
  {
    if(++caunt>50))
    {
      caunt=0;
      bTurnOn=TRUE-bTurnOn;
      LED(bTurnOn ? 1:0);
    }
  }
  else
  {
    bTurnOn=FALSE;
    LED(0);
  }

とかかな。 最後のelse〜は、メインルーチン側でblinkフラグを
書き換えるタイミングによって点灯したままになるのを防ぐ為。

汎用性を考えれば、通常はLED点灯/消灯のフラグと、LED点灯時のみ意味を
持つブリンクON/OFFフラグとを、それぞれ別に用意すると思うな。
886774ワット発電中さん:2009/09/23(水) 03:30:24 ID:uzqX2tJl

これでどう?

LED(caunt++ < 50);
caunt = ( (blink==0) || (caunt>=99) )? 0xff : caunt;

887774ワット発電中さん:2009/09/23(水) 04:43:57 ID:U6NhIyX1
>caunt
もう許してあげてwwwwww
888774ワット発電中さん:2009/09/23(水) 08:45:42 ID:9FUORgah
>>867
KPIT gccもHEWで動くから、コンパイラや、デバッガの機能じゃなく、HEW
単体でできることなら、KPIT gccでもできるね。 call walker って、ルネ
サスのデバッガの機能だろ? 統合開発環境(IDE)、コンパイラ、リンカ、
デバッガがそれぞれ別のプログラムということすら知らないようだな。

シンボルテーブルの互換性があるかどうか知らないが、ソースデバッグは
できなくても、KPIT gccで生成したコードをルネサスのデバッガでデバッグ
(トレース実行)することは可能だろう。(逆もまた可)

イエローソフトといえば、ずいぶん昔に秋月ボードのおまけコンパイラが
使い物にならなくて、H8の開発ボード付きコンパイラを買ったけど、今でも
あんな商売が成り立っているのかなぁ?
889774ワット発電中さん:2009/09/23(水) 19:43:24 ID:pxtIpIZ8
call walkerがデバッガの一機能ってアホかお前は。使ったこともないのに何寝言ほざいてんだまったくよ。
じゃ、call walkerでgccのコード使ってスタック量見積もれるかどうかやってミロや馬鹿野郎。
手順をちゃんとここで明示しろ。話はそれからだ。
890774ワット発電中さん:2009/09/23(水) 19:45:26 ID:pxtIpIZ8


>KPIT gccで生成したコードをルネサスのデバッガでデバッグ
>(トレース実行)することは可能だろう。(逆もまた可)

言ったかぎりはその手順をここではっきり示せ。

逃 げ る な よ


891774ワット発電中さん:2009/09/23(水) 19:48:39 ID:pxtIpIZ8
>>ID:9FUORgahは

gccのコードで call walker 使える方法を示してくれるそうな
実に楽しみ。ワクワク
892774ワット発電中さん:2009/09/23(水) 19:51:12 ID:pxtIpIZ8
>>888

>ソースデバッグは
>できなくても、KPIT gccで生成したコードをルネサスのデバッガでデバッグ
>(トレース実行)することは可能だろう。(逆もまた可)

C言語使っててソースレベルデバッグできずお前はいったい何をトレースするつもりだ馬鹿たれ
呆れるね。
893774ワット発電中さん:2009/09/23(水) 21:27:16 ID:wNkNM09U
呼び出し関係を静的トレースしてスタック使用量出すには

・コーリングコンベンションが判っているのでそれに一致するポイントを
 関数と見なして呼び出し時と関数内スタック消費を算出する
・シンボルテーブルから関数位置を得て、以下略

のどっちかになるんでないの?
894774ワット発電中さん:2009/09/23(水) 22:09:50 ID:QKge9nKw
H8最近また小さくなったの出なかった?
895774ワット発電中さん:2009/09/23(水) 22:44:31 ID:4XVGbmIW
KPITか…
Aoneのデバッガでも保証無しでなんとか対応してくれたから何とか使えるが
出てくるコードがどうにも使い勝手わるくてたまらんな。
896774ワット発電中さん:2009/09/23(水) 23:07:28 ID:9FUORgah
>>889-892
嬉々として、スレ上げてまで、バカ丸出しだなぁ。

Call Walkerのマニュアルを読んでみたが、大層な名前が付いているが、トレースしてスタ
ックの実際の使用量をリアルタイムにモニタできるのではなく、コンパイラが出力したスタ
ック情報ファイルを辿って足し算するだけの、予想以上にショボいオマケソフトのようだ。

ttp://documentation.renesas.com/jpn/products/tool/apn/rjj06j0073_callwlkr_ap.pdf

要は、ルネサスのコンパイラは、通常のコンパイラが生成するMAPファイルやLSTファイル
の他に、レジスタの一時退避領域や、ソース上では名前が割り当てられていない一時変数
を含めて、個々の関数内でどれだけスタックを使ったのかという情報を、スタック情報
ファイルとして出力することで、それを別のツールで表示させているに過ぎない。

C標準ライブラリについては、おそらく、あらかじめルネサスのコンパイラでライブラリの
ソースをコンパイルした際に生成されたスタック情報ファイルを参照しているのであろう。

スタック情報ファイルがない、または生成されないアセンブラや他のコンパイラで生成
されたオブジェクトやライブラリとリンクした場合、そのオブジェクトやライブラリ内の
関数でのスタック消費量は判らないが、11/16ページに掲載の『アセンブラプログラムの
スタック使用量』と同じことを、gccのコードに対して登録してやればよいだけ。

再帰呼び出しされる関数のように、ネストレベルで異なる関数のスタック消費量が正しく
算出されるのか非常に気になるが、おそらく上記のような関数の依存関係を辿って単なる
足し算しているに過ぎないであろうプログラム内部構造から、無限大となるか、単に1回の
ネストという前提で計算しているか、どちらかであろう。

ところで、処理中に多重割込が発生する状況を考えれば、仮に関数レベルでの静的なスタ
ック消費量が判ったところで、どれほどの意味があるの?

スタックサイズは、多重割込発生時でもオーバーフローしないように十分な領域を取るのが
普通だし、数バイト単位でスタック切り詰めるような綱渡りの設計はしない。
897774ワット発電中さん:2009/09/23(水) 23:20:17 ID:smfq1eIP
>>896
気持ちは本当によく分かるんだが、基地外を相手にしないようにしてはもらえないだろうか。
そいつは他スレでも全く同じ真似してて、相手にしてる限りいつまでも居ついて非常に
ウザいんだが、完全スルーしてれば消えるんだ。

もうすぐ日付が変わる。そこからでいいから、何とか頼むよ。
898774ワット発電中さん:2009/09/23(水) 23:50:04 ID:pxtIpIZ8
>>896

結局、あろう、だろうの連発かよ。
はよgccのコードでcall walker 走るようにしてから言えや
デバッグツールなどと勝手にほざいてアホの極みかお前は、

んで、

>ところで、処理中に多重割込が発生する状況を考えれば、仮に関数レベルでの静的なスタ
>ック消費量が判ったところで、どれほどの意味があるの?

>スタックサイズは、多重割込発生時でもオーバーフローしないように十分な領域を取るのが
>普通だし、数バイト単位でスタック切り詰めるような綱渡りの設計はしない。

多重割込みだろうが、排他割込みであろうが正確なスタック量を事前に見積もるなんて当たり前だろうが、アホ。
正確なスタック量も見積もったこともなければ、まともに組み込み用のコード書いたこともないゴミ野郎だからこそ、
言語仕様に忠実で無料であることとだけにメリットのある教育用コンパイラのgccなんぞをはずかしげもなく、
コード品質最優先の組み込みコンパイラに使うなんていう戯言ほざけるんだろうがな。

>数バイト単位でスタック切り詰めるような綱渡りの設計はしない

出た出た。こういう怠慢を指摘されたことに反省もしないアホにおきまりの台詞。
こういう奴に限って案の上マスクちょんぼで仕損出したりするのは世の常

アホさらしあげ。はよ大見得切ったんだからgcc のコードでcall walker動作するようしてみせろよ。
どーせだれも使わんけど。
899774ワット発電中さん:2009/09/24(木) 09:14:58 ID:5kDmeZMO
call walkerって関数ポインタに対しては計算出来ないとかなかったっけ

gccでも関数毎のレジスタのpush数とかフレームサイズとかの表示はやれば出きるでしょ。
やるんだったら、asmのソースに埋め込む感じになるのかな?(armとかはやってる)

複雑怪奇な関数群の塊を使ってるとcall walkerが必要ってのもわからなくもないが...
900774ワット発電中さん:2009/09/24(木) 23:52:02 ID:qsVEK5lI
Linuxのソースには checkstack.pl ってのがあるらしいけど
H8とかSHでは使えないのかね
901774ワット発電中さん:2009/09/25(金) 00:18:11 ID:h3LJggxh
フレームサイズの計算だけみたいだね。レジスタの退避数とかは誤差?
902774ワット発電中さん:2009/09/26(土) 14:52:17 ID:XniqP05b
そういやカウンターのひとはどうなったのだろう
903774ワット発電中さん:2009/09/27(日) 02:10:05 ID:7x2FVNtX
>896
>ところで、処理中に多重割込が発生する状況を考えれば、仮に関数レベルでの
>静的なスタック消費量が判ったところで、どれほどの意味があるの?

MRやHi(ITRON)のマニュアル見てみたらどうですか?
call wakerの値をベースにスタックをどれだけ設定すればよいか書かれて
いるよ。
確かに多重割り込みが起こる場合には、何重になるかまでを考慮する必要
がある。 MRのある意味隠れ機能だと思うけど、多重割り込みしない
使い方があるので、それにするとスタックを少なく設定することが可能には
なるよ。


9FUORgahさんも指摘しているけど、静的なスタックサイズをわからないまま
どうやってそれぞれのスタックサイズを決めるというのでしょうか?
まさか、スタック領域に固定コードを書いて、実行後にどこまで使われた
かを見て、そのサイズ+αという方法ですか?
904774ワット発電中さん:2009/09/27(日) 02:28:20 ID:Vde8y+bS
そんなに厳しい条件なら、俺はスタックチェックのコードを埋め込むこと、考えるな
使用メモリ(スタックとか)の見積りは仕様である程度は判断できると思うけど
905774ワット発電中さん:2009/09/28(月) 10:48:22 ID:K7ACvINK
話を切ってしまい、すみません。教えてください。

例えばH8の3069で、
数値の計算は、bit幅の長短で速度が変わるものでしょうか。
906774ワット発電中さん:2009/09/28(月) 11:21:35 ID:HqL20XZQ
>>905
アセンブラというか、命令セットのレベルでの話よね?
とりあえず
ルネサスのサイトいって、H8ファミリーのソフトウェアマニュアルの
ところにあるドキュメントに、命令実行ステート数が書いてある。

内蔵RAM上だけの演算ならほとんど変わらないのでなかろか。
907774ワット発電中さん:2009/09/28(月) 16:41:50 ID:K7ACvINK
ありがとうございました。
と言うことは、ロングイントもバンバン使っても大丈夫そうですね。
僕自身がセコいためか、高速化のためにと、チャーばかり使っていました。
908774ワット発電中さん:2009/09/28(月) 19:38:39 ID:zyYYHaep
>907
データサイズによっては、演算に使うデータのロードやストアの速度差が多少は響くこともあるかもしれない。
命令単体じゃなく、プログラム全体では。

と、役に立たないかもしれない横槍。(もしくは混乱させるだけでまったく役に立たないゴミ情報かも?)
909774ワット発電中さん:2009/09/28(月) 20:29:41 ID:fzvx5u8m
俺も以前は「bit数が少ないほうが高速になる」と信じていた。
だから変数は極力charで取って・・・・などね。
しかし一番早いのは、そのマイコンに合ったbit幅を使うことだとわかっいからはも
on/offフラグでもunsigned int (16bit)で、贅沢に使っている。castの手間も省けるし。
signed も素直に使う。昔はsignedも遅くなると思って、unsigned で工夫したけど、
疲れる。H8なら速いので、気にせずにバンバンやろう。

ただ注意しているのは、なるべくfloatを使わないようにするだけ。
910774ワット発電中さん:2009/09/28(月) 20:50:55 ID:EZxJcGqb
ADDとSUBで直値だとB=1,W=2,L=3っていうステートのズレがあるが、それでも2ステートしか変わらんしねえ。
いちお、16bitコアだから、16bitで納めるってのが基本かしら。
911774ワット発電中さん:2009/09/28(月) 21:41:16 ID:YnpUUr5t
これだからCしか出来ない奴は…
912774ワット発電中さん:2009/09/28(月) 23:24:08 ID:83tIY6ou
RXとかになると、たとえば足し算(ADD)
LONGしかなかったりしますね。
速度は、データ長ではなく、なにとなにの演算かに
よりますね。マニュアルにはパイプラインのDステージ以降の
マイクロオペレーション数によるものらしい。
913774ワット発電中さん:2009/09/29(火) 02:58:28 ID:1qaqdGkK
>910
>ADDとSUBで直値だとB=1,W=2,L=3っていうステートのズレがあるが、それでも2ステートしか変わらんしねえ。
その速度差だと、命令フェッチ時間の差が実行時間に直結してるんじゃない?
914774ワット発電中さん:2009/09/29(火) 05:57:07 ID:I1SY7+Pw
>>907
>ロングイントもバンバン使っても大丈夫そうですね。

はぁ?
あくまでも、ウェイトに無関係の内部RAMを使う場合を言うが・・・
特にサイズを意識する必要がない限り
コンピュータは語長サイズで扱うのが最も高速
つまり3069なら16bit
データバスが何ビットか考えてミロ

>>909
>だから変数は極力charで取って・・・・などね

8bitコンピュータなら正しい。

>昔はsignedも遅くなると思って、unsigned で工夫したけど、
昔の情報処理の2種。今はなんて言うか知らんが、なんのために補数を使ってるかっていう一から勉強し直せ

>なるべくfloatを使わないようにするだけ。
それはH8でデータバスが16bitだからだ。32ビットデータバスなら32ビットfloatを使うことは少しもおかしくない。
ただし数値演算ユニット)搭載のプロセッサで64ビット演算にしか対応してなくてdouble よりも、
floatを明示すると速度低下するプロセッサもある。
915774ワット発電中さん:2009/09/29(火) 06:36:03 ID:1LKlHEn3
>>914
> 32ビットデータバスなら32ビットfloatを使うことは少しもおかしくない。

バスが32ビットだからといって32ビットfloatがハードで扱えるとは限らないから整数演算で済ます事は良くある。
そもそも、バスが32ビットだからといって最適な語長が32ビットとも限らない。
916774ワット発電中さん:2009/09/29(火) 07:01:28 ID:I1SY7+Pw
>>915
>バスが32ビットだからといって32ビットfloatがハードで扱えるとは限らないから整数演算で済ます事は良くある。

お前はアホか。
整数で済むダイナミックレンジの計算になんでfloat使うんだ。
>>909が心底バカでも無い限り、なるべくfloatを使わないのはdoubleに対してだろうが。
常識持てや。お前が何の修飾詞も書かず"バス"と書いてるところをこちらが"データバス"と察してやってるのと同じようによ。

>バスが32ビットだからといって最適な語長が32ビットとも限らない。

ハーバードアーキの場合かよ。しょーもない揚げ足取りしてんなカス
設計デフォルトのデータサイズにあわせてレジスタサイズ、バスサイズを決めてハードウェア設計しないことには
CPUの設計ができないんだよマヌケ。
語長==ワードサイズというのはそのCPUが最も効率よく扱える情報量の長さだ。
バスが32bitで32bitが最も効率よくないCPUなんてのは欠陥設計だ。
もっと言えば、こんなものを32bitコンピュータとして販売してるなら誇大広告だ。



917774ワット発電中さん:2009/09/29(火) 07:21:32 ID:1LKlHEn3
>>916
> 整数で済むダイナミックレンジの計算になんでfloat使うんだ。
> >>909が心底バカでも無い限り、なるべくfloatを使わないのはdoubleに対してだろうが。

ハードで32ビットfloatを計算出来ない場合、32ビットや64ビットの整数の方が圧倒的に早い場合が多いから
整数の方がダイナミックレンジが狭いとは言えない。目的次第だ。

>ハーバードアーキの場合かよ。しょーもない揚げ足取りしてんなカス
それしか思いつかないのかよw

>バスが32bitで32bitが最も効率よくないCPUなんてのは欠陥設計だ。
>もっと言えば、こんなものを32bitコンピュータとして販売してるなら誇大広告だ。

お前の頭の中ではなw
バス幅と語長を合わせなきゃいかんなんて制限はお前の頭の中だけだ。
語長より大きいバスや小さいバスを持つCPUは幾らでもあるし
お前の頭より欠陥は少ないと思うぞw
918774ワット発電中さん:2009/09/29(火) 08:20:46 ID:m6XJFmhb
お前ら朝から元気ですね
919774ワット発電中さん:2009/09/29(火) 08:57:11 ID:I1SY7+Pw
>>917

>整数の方がダイナミックレンジが狭いとは言えない。目的次第だ。

お前ホントばかか。高校の普通科の情報処理とやらからやり直せ。
32bit int の数値精度を犠牲にして、指数部を設けてダイナミックレンジを大きくしてるのがfloatなんだよマヌケ。
笑わせんなアホが。朝から寝ぼけてんのか。

>バス幅と語長を合わせなきゃいかんなんて制限はお前の頭の中だけだ。

これをいうならデータバス幅とレジスタ長さだろうが。
語長というのはCPUがもっとも効率的に扱えるデータ長のことだ。
一番都合がいいとメーカが主張してるんだからそのデータサイズでアクセスする場合最も速度が速い
上でも言ったが、アドレスバスなのかデータバスなのかちゃんと書けよ。アホ学生

>語長より大きいバスや小さいバスを持つCPUは幾らでもあるし

メーカ xx bit プロセッサと命名してる場合、標準レジスタサイズ、データバス幅、語長はxx bit。
語長より大きいデータサイズアクセスは、所用クロックにおいてペナルティがあるのが一般的だ。
いくらでもあるというならx86のように拡張につぐ拡張を重ねたcpuや、ハーバード以外の、組み込み限定で上げてミロや
920774ワット発電中さん:2009/09/29(火) 09:10:28 ID:d+GbESAA
>>ID:1LKlHEn3 コイツってスタックサイズも見積もらずにKPITだのgccつかうだの戯言ほざいてたシングルタスク限定コードした書いたことのない >>ID:9FUORgahじゃねーのか?
gccでもcall walker早く動かせよ。それともトンズらのチキン野郎か?よかったねぇネットじゃ誰か特定されなくて、なぁチキン野郎
921774ワット発電中さん:2009/09/29(火) 09:19:11 ID:EgT3g/g+
基地外に水をやらんでくれよ・・・せっかく静かになってたのに
922774ワット発電中さん:2009/09/29(火) 10:23:45 ID:n+gKxBT4
なんで逐一、バカだカスだと宣言するのだろうか。定型文かマクロなのだろうか。

さておき、符号付きの場合、符号ビットを抜いて符号付き31bitデータとかいうのかしら?
923774ワット発電中さん:2009/09/29(火) 14:58:39 ID:1qaqdGkK
浮動小数点演算を使うと、高速なFPUを内蔵するチップでない限り、整数演算より大幅に遅くなるだろ。
floatを使わないってのは、そういう意味だと思うんだ。

doubleよりfloatが遅くなる場合が云々、って意味じゃないと思う。

>915
即値を扱う場合、レジスタ長なみのデータサイズを扱えば命令長が長くなるか命令数を増やすしかないから、最低でも1ステップは遅くなるな。
SHのごとく、即値を扱えないようにして必ずレジスタ間接を強要するアーキテクチャなら無関係だが。
即値以外の、レジスタ直接なら916の言うとおりだろうが...

32ビット固定長命令のMIPSやPowerあたりだと、32ビット即値を一命令では扱えないから
命令を分割して2命令にする分だけ遅くなる、とかな。

>917
ダイナミックレンジと演算速度を混同してない? 全然違う意味でしょ。

>バス幅と語長を

32ビットアーキテクチャながら16ビット固定長命令のCPUだってあるし、
32ビットアーキテクチャでデータバスが64ビット幅ってCPUは数多くあるからねえ。
それどころか、16ビットアーキテクチャで最小命令長16ビット、データバス16ビットでレジスタだけ32ビットってのもあったしなあ。
924774ワット発電中さん:2009/09/30(水) 02:03:40 ID:XoVDvW2H
>>919
>語長というのはCPUがもっとも効率的に扱えるデータ長のことだ。
>一番都合がいいとメーカが主張してるんだからそのデータサイズでアクセスする場合最も速度が速い

単なるフラグに1ワード割り当てて数値で比較するのと、1ワードにパックして複数同時に条件比較するのでどっちが早いんだ?
たとえ1ビットでも、わざわざ数値で比較するのとビットのONOFFで条件分岐するのでどっちが早いんだ?
語長が32ビットのCPUで8ビットに充分収まる数値しか使わない場合、毎回無意味な0が上位の数値をロードするより
命令に埋め込まれた即値をロードする方が圧倒的に早いだろ。
XXビットCPUだから毎回XXビットの演算をさせる方が早いとはいえない。
そんなのはアプリとプログラマの質で大幅に変わる物だ。
これだからCしか出来ない奴はw

>>923
>即値以外の、レジスタ直接なら916の言うとおりだろうが...

>>916はかなり間違ってる事を書いてるので反論したまで。まあ、全てが間違いという訳では無いから言うとおりの部分もあるだろうけど
「即値以外なら」とくくれるほどは正しく無いしそもそもなぜ即値を外す?
一般的なプログラムではフラグ(1ビット即値)による分岐はかなりウエイトが大きいと思うぞ。
925774ワット発電中さん:2009/09/30(水) 12:07:17 ID:0cHAi23q
>>ID:XoVDvW2H

何あったま悪い比較持ち出してるんだお前。

>単なるフラグに1ワード割り当てて数値で比較するのと、1ワードにパックして複数同時に条件比較するのでどっちが早いんだ?

完全糞だな
1語長 x n回アクセスと 1語長アクセスを比較して何をしたいんだバカ
だいたいデータバスすなわちメモリとのアクセス効率の話をしてるのに、
何を、パイプラインの乱れに直結する条件判断の話にすり替えてんだこのバカ
しかも、うすっぺらい知識をもとに恥ずかしげもなく何をつらつらかき込んでるんだこの糞が。
しかもコイツこんな比較を持ち出すこと自体パイプライン、バレルシフタの有無によって全く条件が変わることも皆目知らんアホ学生そのものと見た。うすっぺらぺら過ぎんだよ馬鹿たれ。
糞知識しかないアホがマヌケなレス書き込むなこのうじ虫。
Cしかしらねぇのはテメエだろうが。
数値ダイナミックレンジの意味すら理解できない一知半解のおまえのようなゴミ見てると反吐が出んだよ。
学問板のここから出て行け。
gcc 対応 call walker はどうしたシングルタスク知障
926774ワット発電中さん:2009/09/30(水) 12:17:21 ID:PJVatWL8

結局H8/3069では、
イントが一番速いと言うことで 良いでしょうか?
927774ワット発電中さん:2009/09/30(水) 13:42:26 ID:RiTLaWkX
結局H8/3069のソフト開発は、
インドが一番速いと言うことで 良いでしょうか?
928774ワット発電中さん:2009/09/30(水) 13:46:03 ID:Ie5dZCla
なんとなく…
イントって、コンパイラの設定とCPUコアで扱い変わるよね?
ショートのほうだっけ?
というか
半角英字でしか打たないものをカタカナで書くとすげえ違和感。俺だけかしら。

さておき。
何も考えなくていいとか、変なライブラリ呼ばないとか、そういう意味で整数演算しか使わないなあ。
で。
charでもintでも命令長かわらなければ同じ速度じゃないか?
longと即値は命令次第っぽいけど。

インドって日本のCPUでの開発ってやってるのかしら?
929774ワット発電中さん:2009/09/30(水) 14:21:41 ID:XoVDvW2H
>>925
悔しそうだねwww
930774ワット発電中さん:2009/09/30(水) 18:33:15 ID:PJVatWL8
ありがとうございます。
Cの記述が長いと実行速度も遅いような気がして。
931774ワット発電中さん:2009/10/01(木) 00:28:21 ID:hRfRBoTk
CPUのワードアクセスとビットアクセスどっちが速いとか言われても、アクセスするアドレスがどこかでも変わってくるよね。
8ビットバスのところと16ビットバス、32ビットバスのところとで。
CPU内蔵I/Oとか20ステートくらいウェイトが入る鈍足メモリだったり。実際のI./Oが32ビットごとに1ビット分しかない場合とかさ。

いやまあ、さすがに1000ステートくらいウェイトが入るのはハードウェア設計ミスだと思うけど・・・そういうものも過去にはありました。
932774ワット発電中さん:2009/10/01(木) 00:29:21 ID:yVRNN6Ir
オレも行番号が小さい方が早いような気がしてた。
BASICだったけどな。
933774ワット発電中さん:2009/10/01(木) 00:35:07 ID:kmZqvLaJ
さて、カネベーベーでも買うか
934774ワット発電中さん:2009/10/01(木) 02:03:14 ID:Dz5ZHuie
マイコン使用のハードウェアを設計して20年、
マイコンソフトをCで書き始めて、 8年くらいになります。
最近、ソフトを完成させるまでに時間がかかるようになってきました。
自分自身を見直してみると、迷うことが増えたように感じます。
その迷うというのは、

小数点の入る計算をfloatのまま計算するような記述を書き、いったんはそれで動くのですが、
「いや待てよ、もしかすると1000倍して整数で計算した方がいい(速さ、設計思想)かもしれないな」とか、
if()で書いてるところは、switch()のほうがいいかも。変更だ。 とか
for()で回すのもいいけど、この場合は、10行そのまま記述したほうが、設計的に一貫性がとれてるな、とか
AD変換器の関数では、AD_conv( ch )とチャンネルセレクトを付けたんだから、D/Aも( ch )をつけた関数にしないと、おかしいよな、(今回はDAは1ch使用なのに)とか
このLCD表示器の関数は、他にも転用できるようにReadもできるようにしておこう、(今回はWriteだけなのに)とか
です。

上記のように、一度考え出すと、あれも修正して、これも修正して、となってしまい、
そんなことしてる時間は無いことがわかっているのに、途中で、もう一度書き直したりしてしまいます。

数年前は こんなに迷うこともなく、ササッと書き上げていたのですが。
こんな私は、変でしょうか? 

あるいは、みなさんは、こんな事はないですか?

なんか、ソフトが嫌いになりそうです。
935774ワット発電中さん:2009/10/01(木) 02:57:10 ID:Np5obz2D
時間内に終えているんならいいんじゃね。
936774ワット発電中さん:2009/10/01(木) 10:02:33 ID:YI1AQ7IE
>>934
時々、他の人にソースコード読んで貰うと良いんじゃないかな?
8年も一人で書いてると、いろいろおかしくなってるのに気づかないもんです。
937774ワット発電中さん:2009/10/01(木) 18:28:33 ID:stMjVQYA
ソフト歴25年だけどいまだに動けばいいやです。
938774ワット発電中さん:2009/10/01(木) 18:33:13 ID:lhGT4j5O
動く手前で止まってる人が多いから
939774ワット発電中さん:2009/10/01(木) 20:33:22 ID:Fd7terXI
お、CMMIレベル1達成ですな
940774ワット発電中さん:2009/10/01(木) 20:52:06 ID:fgx18uQq
ラジオデパート1Fにあった
「エイティラボラトリ」って何処に行ったかしりませんか?
R8Cボードを買おうと思ったけど、webでチェックしたら消えちゃってるみたいで。
941774ワット発電中さん:2009/10/01(木) 21:13:46 ID:cfDZOOnG
>>934
心療内科に行ってカウンセリングを受けたほうがいい
942774ワット発電中さん:2009/10/02(金) 23:53:36 ID:bRwyfgWP
>>941
そうだよね。

仕事なんだからやっつけでやらないと間に合わないぞ。
とりあえず動けばいいんだ。
極めるのは趣味でやれ。
943774ワット発電中さん:2009/10/03(土) 03:08:15 ID:S5QegWHB
>>942
ソフトでもハードでも、動作が仕様通りでバグがなければ、それ以上は無駄なコスト。

技術者の良心というものはあるが、それが評価される環境などない。
民生品でも他でも最近は品質が低いと思うが、それが今求められている品質とも言える。
今はデジタル化のおかげで誰が設計しても問題は出にくいのだけど、これでいいのかね…
944774ワット発電中さん:2009/10/03(土) 03:20:40 ID:uTwN1+7x
>>943
>これでいいのかね…
ですよね? そう思いますよね。
そう考えると、例え俺一人でもやらねば と思うんです。
高い設計思想が、良い商品を育てると思う。
動けばよい、結果オーライで良い、などは寂しく思います。
945774ワット発電中さん:2009/10/03(土) 03:30:19 ID:5pMf+4Xr
昔のは寿命が長かった
今のは保証期間中だけ持てば良いっていう設計していると思う
946774ワット発電中さん:2009/10/03(土) 11:41:03 ID:4lNlTJmq
>>942
>とりあえず動けばいいんだ。
>>943
>ソフトでもハードでも、動作が仕様通りでバグがなければ、それ以上は無駄なコスト。


やっつけ仕事ばかり、考えずにてきとうな仕事ばかりだと、自分の実力の足しにならない。
ちょっと考えてソフト組めば次に流用出来てどんどん仕事が楽になるのに。
やっつけだから完成度が低い>部品流用出来ないから時間が無くて次の仕事もとりあえずのやっつけ>以下ループ
ってのがそういう奴らの実態だな。
947774ワット発電中さん:2009/10/03(土) 11:42:56 ID:dgqUn2wT
でも嫌いになったら意味ないでしょ
948774ワット発電中さん:2009/10/03(土) 11:45:20 ID:dgqUn2wT
っていうかそういうのは学者さんがすればいいんだよ
現場ではそういう学者さんの成果を使わせてもらうとして。
逆に好きなら現場じゃなく学者さんになればいい。
949774ワット発電中さん:2009/10/03(土) 11:53:13 ID:4lNlTJmq
>>947
嫌いなら別の仕事すりゃ良いだけ。幾らでも仕事はあると思うよ。
無理して合ってない仕事する事は無い。鬱病になるよ。
950774ワット発電中さん:2009/10/03(土) 11:59:15 ID:dgqUn2wT
951774ワット発電中さん:2009/10/03(土) 11:59:21 ID:zSTvBzo0
>>944

あなたの>>934の書きこみは、もっともな点もあるけど、

> if()で書いてるところは、switch()のほうがいいかも。変更だ。 とか
> for()で回すのもいいけど、この場合は、10行そのまま記述したほうが、設計的に一貫性がとれてるな、とか

は性能向上に貢献するとは思えない。

> AD変換器の関数では、AD_conv( ch )とチャンネルセレクトを付けたんだから、D/Aも( ch )をつけた関数にしないと> 、おかしいよな、(今回はDAは1ch使用なのに)とか
> このLCD表示器の関数は、他にも転用できるようにReadもできるようにしておこう、(今回はWriteだけなのに)とか

にいたっては、今回は使わないことがわかっているのだから無駄。むしろ性能改悪。

とりあえずいまやっているプロジェクトは納期に間に合うよう納品して、
自分の至らない点に気づいたらそれをメモっておいて、
次のプロジェクトで初期設計段階から生かすようにするしかないんじゃないかな。
952774ワット発電中さん:2009/10/03(土) 12:41:31 ID:UYNpSy8b
やってもやんなくてもいいライブラリの整備とか、
どうでもいいこだわりで工数膨らましてるだけじゃん?
余裕がある時とか、再利用性があるものになるんならやってもいいと思うけど。

集中力が持続できなくなっていて、
自覚のないままにやるべきことからやや目をそらして逃避してるように見える。
953774ワット発電中さん:2009/10/03(土) 13:11:42 ID:hHyaEMk1
>>951
if (foo == 1)
 hoge();
else if (foo == 3)
 fuga();
 :
てなコードをswitchにするとコンパイラが頑張ってジャンプテーブル作ってくれるかもしれない。
そんなアホな書き方するんじゃねえとは思うが。

forループの展開は、キャッシュのないCPUで極限まで速度を追求すると手を出すことになります。
んで、Cのマクロに繰り返し展開がないことを恨む。

まあどうでもいいことだな。

954774ワット発電中さん:2009/10/03(土) 13:57:35 ID:XkCaTFK6
>>934は自分の設計思想が高度と思ってるようですが、小手先って感じですね。
てか1000倍して云々で底の浅さが見える。1024ちゃうんかと。
955774ワット発電中さん:2009/10/03(土) 14:01:19 ID:U/MY98BO
現場を知らん学者が考えるとどんなのができるんだろうか
956774ワット発電中さん:2009/10/03(土) 14:31:22 ID:q9E6nGWW
>>953
switchとifって、いわゆる論理演算を含んだI/Oの話でしょう。
Cはcase文に式を入れられないので、swtichを使うべき構造でも書けない場合が多い。
それで、if文で書くことになるけど、ハードウエアについては動かしてみてわかることがあるから、
下位3ビットしか見なくてよかったので、swtich文で上手くかけた、とかそういうことでしょ。
普通の整数値でswitchとifで悩むようならド素人すぎるよ。

ただ、どういう環境で仕事してるのかしらんけど、今時そんな余裕があるなんてうらやましいね。
そんなことやってる下っ端技術者だと、グループのリーダから文句が出るだけだろうし、
自営とかで一人でやってるなら、少ない費用しかもらってないだろうから、そんな気にもならないだろうし。
957774ワット発電中さん:2009/10/03(土) 14:32:45 ID:4lNlTJmq
>>954
Cで書く人は気にしないでしょ。
958774ワット発電中さん:2009/10/03(土) 14:45:38 ID:q9E6nGWW
>>953
ループ展開はたいていのコンパイラにあるでしょう。
組み込み系のコンパイラには普通はあるよ。例えばRenesas製でも。

ifとswitchだけど、Renesas製がどうかは知らないけど、今時のコンパイラは、
ソースの構造を分析するし、その程度だと同じになるから、同じ出力を出す可能性があるよ。
そう思っていたら、古典的なポインタとインデックスは、やっぱりポインタの方がいいとか、いろいろあるけどな。
でも、そんなことを気にせずに記述できる程度の仕事でなければ、採算ラインには乗らんというのは、
大企業でも中小企業でも自営でもいっしょ。

ただ、メモリのアクセス方法とかワード幅とかはちゃんと考えないと駄目だし、
アルゴリズムがまずいのは論外だよ。
Call Walkerがないとスタックサイズがわからないとか、RTOSが難しいとかは、
組み込み経験が少しでもあると思えないが…
959774ワット発電中さん:2009/10/03(土) 14:45:56 ID:dgqUn2wT
>>955
EJBのようなものができる
960774ワット発電中さん:2009/10/03(土) 14:48:41 ID:q9E6nGWW
>>957
今時アセンブラで書いてるの?
逆に聞きたいけど、何のメリットがあるの?

Cで書いたって、これは気にするでしょう。
C++で書きたがる人が気にしないってのなら同意するけど。
961774ワット発電中さん:2009/10/03(土) 16:10:17 ID:2bXCIrZJ
>ソフトでもハードでも、動作が仕様通りでバグがなければ、それ以上は無駄なコスト。

その通り…なのだが、まず仕様をきちんと作ろうぜ。
962774ワット発電中さん:2009/10/03(土) 17:05:17 ID:tTMMZ8QZ
>>960
えーと、LSBが1/1024か1/1000かの話よね?
とくに制限や思想のないコーディングなら、どっちでもいいような気がする。
四則演算に頭使わなくていいのが言語のメリットだし。

と書いてて思い出したが、もとは思想というかコダワリの話か。
うん、2の乗数のほうが幸せかも。

>>961
痛い。耳が痛い。 動作仕様書から一気にコード書いちゃう私には…。
途方もないほどファジーな動作仕様書だけ来て、さあ作れと言われることが多いからねえ…。
963774ワット発電中さん:2009/10/04(日) 03:48:25 ID:an8Y5Ojq
>>962
>途方もないほどファジーな動作仕様書だけ来て、さあ作れと言われることが多いからねえ…。
へー、すごいね、って言われたいのかもしれないけど、悪いけど全然そう思わない。
ファジーな動作仕様書で作れと言われることと、仕様を書かないのとは何も関係ないじゃん。
仕様を書かずにできるソフトって、100〜200行程度のものだと思う。

そんなに自慢しなくてもいいよ、全然すごくないから。
大人しくちゃんと仕様書を書こうよ。
964774ワット発電中さん:2009/10/04(日) 03:51:05 ID:Z4p/WZUc
ファジーな動作仕様書が来たら、ファジーな動作をするコードを提出しないといけないのでは?
965774ワット発電中さん:2009/10/04(日) 10:59:01 ID:wkU5PqBA
>>964
人工知能で
966774ワット発電中さん:2009/10/04(日) 12:59:52 ID:HsxIYl68
ファジーな動作をする高度なコードかぁ...
967774ワット発電中さん:2009/10/04(日) 13:00:45 ID:wkU5PqBA
ボケ老人シミュレーターで
968774ワット発電中さん:2009/10/04(日) 13:09:40 ID:KFQdRzqh
>>963
C言語で行数ってソース規模の指標になるの?
969774ワット発電中さん:2009/10/04(日) 21:03:45 ID:X1Zyqnet
なるでしょ

逆に>>968がどんな指標を使っているのか気になる

ちなみに30年前にIBMが作った
メインフレームOSが100万行ぐらい
その時1人月で1000行

これだけ知っておくと、現場で
工数の妥当性を考える時参考になる
970774ワット発電中さん:2009/10/04(日) 22:01:48 ID:zhI0AUqv
まあ
if(hoge==poge){

if
(
hoge
==
pege
)
{
と書けば7倍の行数になって、生産性大幅アップだな。
でも、開発規模に応じたテスト件数をこなさないといけないルールだと、こんなので7倍のデバッグケース考えるのは厳しいような。
971774ワット発電中さん:2009/10/04(日) 22:48:40 ID:iH1Uciau
>>970
そういうのはツールつかって定型書式に変換してから、行数カウントするんだよ。無能ちゃん。
972774ワット発電中さん:2009/10/04(日) 23:02:05 ID:Ef3emMpt
1行にまとめるんですね
973774ワット発電中さん:2009/10/04(日) 23:42:33 ID:KBhs7EXH
一行じゃ無理でしょ。せめて7行位無いと。
http://pc12.2ch.net/test/read.cgi/tech/1215352849/
974774ワット発電中さん:2009/10/05(月) 00:11:59 ID:WhzcMuiP
1行に書けるものをわざわざ7行にとか、もう公務員的な発想としか思えない
エディターのメモリーが不足して1行にどれだけ詰め込むかみたいな時代もあったのに。
ゆとりとは恐ろしいものだ
975774ワット発電中さん:2009/10/05(月) 01:08:55 ID:GpygaUv7
>エディターのメモリーが不足して
ないない
976774ワット発電中さん:2009/10/05(月) 01:35:01 ID:tDOTn77b
>>974
老害乙
977774ワット発電中さん:2009/10/05(月) 03:09:32 ID:IWYp3T1v
雑誌で「一行ベーシックコンテスト」みたいなん、あった。
お題がでて、いかに詰め込むかって。
978774ワット発電中さん:2009/10/05(月) 03:17:10 ID:WhzcMuiP
>>975
あるって。おまいが知らないだけ。

昔uCOM-87なんてCP/Mが開発環境で
WordMasterのメモリ不足でソースを分割するまでもないプログラムなんぞ
行詰めして無理やりコンパイラを通したもんさ。
979774ワット発電中さん:2009/10/05(月) 03:17:30 ID:lQAV833x
1行って、何を持って1行とするの?
エディター上での「改行」をしたら1行、とかだと、エディタの1行文字数の制限が無限なら
どんな長いプログラムでも書けるんではないですか?
Cなら;で、BASICなら:でつなぎまくる。
980774ワット発電中さん:2009/10/05(月) 05:31:25 ID:Semnbr3d
64KB の壁とかあったんだよ、昔は。
981774ワット発電中さん:2009/10/05(月) 13:56:00 ID:mtb3cLnd
>>979
まあふつーは1行1命令じゃなかろか。
くそ長い演算とか、くそ長い if 文とかはどーするのか知らないが。

>>980
定番だねえ。
Z80系で64KBを簡単に超えられるシステムもってる機種って結構少なかった気が。
982774ワット発電中さん:2009/10/05(月) 13:58:09 ID:mtb3cLnd
ところで、そろそろ次スレ?
983774ワット発電中さん:2009/10/05(月) 14:23:30 ID:x7Sv5jsz
>>980
この前、vb6でぬるく開発していたら、64kの壁があって笑った
984バグ退散:2009/10/05(月) 17:53:46 ID:q3gnCkvW
新スレが立てられません。規制中みたい。


良かったら使ってください。


H8_SH__ルネサスマイコン総合スレ4__M32_R8C_Tiny


  PICもAVRもいいけど、やっぱりMade in Japan ルネサスマイコンは最高っす。
  
  H8やSHだけの限定ではありません。ルネサスマイコンについてなんでもどうぞ。
  トラ技のTinyやR8Cから入った入門者の人も、M32/16ファンのあなたも、
  ルネサス製マイコンや開発環境に関する、レポート、質問、購入方法など、なんでもドゾー。
  
  特に初心者の人には親切丁寧をモットーにお答えしますよ。

  過去スレ1 http://science3.2ch.net/test/read.cgi/denki/1106160714/
  過去スレ2 http://science6.2ch.net/test/read.cgi/denki/1159675598/
  過去スレ3 http://science6.2ch.net/test/read.cgi/denki/1228014309/

  関連スレ H8/SH gcc vs 純正コンパイラ
       http://science6.2ch.net/test/read.cgi/denki/1183216226/l50
       トラ技4月号に付録のH8マイコンで実験しよう Part5
       http://science6.2ch.net/test/read.cgi/denki/1102215461/l50
       【浦島】H8は日立製だと言い張るスレ【太郎】
       http://science6.2ch.net/test/read.cgi/denki/1072445656/l50
       H8ファミリ、スーパーH 限定スレ
       http://science6.2ch.net/test/read.cgi/denki/1189508057/l50
       ●●●くみこの組み込み相談室1.0●●●
       http://pc11.2ch.net/test/read.cgi/tech/1191397574/l50 
       ルネサスホームページ 
       http://japan.renesas.com/fmwk.jsp?cnt=mpumcu_category_landing.jsp&fp=/products/mpumcu/
  
  割込処理後のフラグクリアを忘れずに、
  SCI設定後は、1bit時間以上待って、
  モジュールストップに注意して、    さぁ レッツ ルネサスぅ〜〜〜

985774ワット発電中さん:2009/10/05(月) 19:10:48 ID:aGjUEAGa
たてまつた

H8_SH__ルネサスマイコン総合スレ4__M32_R8C_Tiny
ttp://science6.2ch.net/test/read.cgi/denki/1254737313/l50
986774ワット発電中さん:2009/10/05(月) 19:37:57 ID:sbRBpyMD
void main(void)
for(;;)
{
}
}
987774ワット発電中さん:2009/10/05(月) 21:07:23 ID:0kuXyZKF
error: expected declaration specifiers before ‘for’
988774ワット発電中さん:2009/10/05(月) 21:31:38 ID:IWYp3T1v
void main(void) {
for(;;)
{
}
}
989774ワット発電中さん:2009/10/06(火) 00:08:39 ID:6mrercw5
>979-980
1行は255バイトまでじゃなかったっけ?
Cはともかく、むかしのBASICでは。

ラインエディタでも1行255バイトまでとか、そこそこあったんじゃない?
990774ワット発電中さん:2009/10/06(火) 00:18:11 ID:yCMadtoU
1行の最大文字数が何文字までだったかは忘れたけど、2DDフロッピーディ
スク搭載のCP/M-80のシステムで開発していた当時、別にZ80のメモリ空間が
64KB固定でも、当時のWord Master等のテキストエディタは、64KBを超える
テキストファイルもちゃんと扱えましたよ。

通常は規模が大きくなると分割アセンブルするので気にしたことはない
けど、M80(MicrosoftのZ80アセンブラ)も、入力するソースファイルの
サイズに64KBという制限はなかった気がする。 

CTRL-C/CTRL-Rで画面を前後にページ送りすっと、ディスクI/Oの速度が
遅くて、キャラクタディスプレイにも関わらず、グリーンモニタの画面
を書き換えていくのが目で追えた。
991774ワット発電中さん:2009/10/06(火) 06:57:12 ID:sB5Ng3Ms
そりゃワープロで64KB制限があったら使いものにならんわな。
それでは本1冊どころか下手すると1章も入りきらん。
992774ワット発電中さん:2009/10/06(火) 12:15:11 ID:jQaol4ln
>>990
ソースの制限はわからなかったけど、出力ファイルサイズが64KからOSのサイズを引いた大きさ(40Kバイト位)しかアセンブル出来なかった気がする。
しかたなく98のクロス環境に移行した覚えが。
993774ワット発電中さん:2009/10/06(火) 23:31:33 ID:DENHdXrr
>>991
ポメラは、8000文字までだぞ
994774ワット発電中さん:2009/10/06(火) 23:46:27 ID:sB5Ng3Ms
メモ帳は書くとこ少ないんだぞ

と主張されてもな・・・
995774ワット発電中さん:2009/10/06(火) 23:48:26 ID:jEGTufXR
週刊アスキーの「無料ソフトの殿堂」にPICのライティングソフトが
のってやがる。編集部にPIC厨でもいるのか?
996774ワット発電中さん:2009/10/07(水) 00:18:51 ID:+t2VS9xB
気に入らなければ厨ですか
997774ワット発電中さん:2009/10/07(水) 14:01:43 ID:N0vh7Ksl
そういや、Windowsのコモンコントロールの1つ、エディットコントロールが
32bitなのに16bitWindowsの仕様を引きずっていて、編集できるテキストが
最大32KBまでだったような。 んで、エディットコントロールを貼り付けた
だけのメモ帳も同じ制限が...。
998774ワット発電中さん:2009/10/07(水) 14:53:09 ID:5S3pLUJ3
>>997
それWindows 95系の制限・・・
Windows NT系のメモ帳は最初から32KBの制限ないよ。
999774ワット発電中さん:2009/10/07(水) 14:59:48 ID:btmNDEYI
VBとかから制御できるテキストボックスは有無を言わせず制限あった気が
1000774ワット発電中さん:2009/10/07(水) 19:04:47 ID:DyQI8+VU
1000get
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。