H8_SH__ルネサスマイコン総合スレ4__M32_R8C_Tiny
1 :
774ワット発電中さん:
2 :
774ワット発電中さん:2009/10/05(月) 19:24:44 ID:i+ewnGJM
>>1 おっ恥ずかしいテンプレだなあ
つーか鬼女みたいなセンスだな。
5 :
774ワット発電中さん:2009/10/07(水) 20:33:08 ID:X5HiSxc+
これって、GCCより高速ってベンチじゃないの?
HEWの64K制限について
シリアルをごにょごにょするとか、
外部アドレスを定義してリンカーの制限を間逃れるとか、
OSごと再インストールするとか、
を話題にしてもよろしいでしょうか
どうぞー
,,x-ー:: ":::::
,x '"::::::::::::::::::::
,、'":::::::::::::,, x-‐ ァ:
,,x '"::::::,,、- '" |:::
`"i`ー'" ヾ
! 、 、,,,,,,,,,;;;;;;;;;彡ミ
|,,,,ノi `ーヾ;; '"----、
ヾ::ヽ -┴'~
~|:/ ' ' ' `ー ' "'"
/_ :
l '' ) i :
ヽ,,、'~` U
゙, __ ,-、_,ノ`
|/ ゙, `'" ,,y
|/ 彡 ゙、`-'"
/|/ i
/ ! ,, -'"
| `ー '"|::
| /|||ヽ
/|||||/心
|ヾ/ /`ー
gccでasmのソースにスタックの使用量をコメント入れ出来るようにしてみた。
手計算よりはマシ程度だな
12 :
774ワット発電中さん:2009/10/10(土) 19:16:18 ID:EvKIEF24
>>5 >gcc -O3 21.48 [s]
>icc 13.27 [s]
>gccの実力、恐るべし
>>4 がgccを皮肉ってることがわからないのか? 7掛けどころか6掛けだ。 インテルコンパイラ恐るべし
>>12 iccでh8/shがコンパイルできるのか?
ばーーか
gccが、メーカ製コンパイラ比7掛けといわれる一例だ。
コア部分をアセンブラにすれば10倍早くなるのに。
今のコンパイラの最適化はそこまでひどくない
と、C使ってる奴がのたまうのは昔から。
3069/ITU1の割り込み(ルネサスヘッダファイル使用)ですが、
ITU.TISRA.BIT.IMFA1 = 0
でIMFA1がリセットされないようです
ITU.TISRA.BYTE = 0 でもだめで
ITU.TISRA.BYTE &= 0xFD でやっとリセットされました
秋月のキット(h8os)にルネサスヘッダファイルは相性が悪いのでしょうか?
c38hなら古すぎる。
gccだとvolatileなIOにbit命令使わないけど(ソースをごそごやると...)
最近のgccは使ってくれたような気がするが…
試す環境がネエ。
ビットフィールドじゃなくて'&='とか'|='だったかなあ。
sh2aならオプションつけると使うようになったけど、今ひとつ
スタックサイズ増やしたら暴走しなくなりました。
23 :
18:2009/10/16(金) 19:42:54 ID:IvY3qOls
レスありがとうございます
コンパイルは付属CDのh8300-hms-gccを使っていますので
それと相性が悪いのかもしれませんね
ITU.TISRA.BIT.IMFA0 = 0
だとリセットされるのが不思議
久しぶりに来たけど、あいかわらず、某Hな会社の糞ツールの
営業マンが頑張ってるようですね。
言い争い分は[H8/SH gcc vs 純正コンパイラ]スレに移動しないかね?
それほどの議論でもないし頻度も低いので、ここでいいなじゃないかな。
RXのコンパイラってどうよ?
レジスタ豊富だし、OutOfOderとかいって、キャッシュのあたりとかあるし、
メモリ直接アクセスできないとか、コンパイラの出来が影響大きいと思うけど
レジスタ間接とかあるみたいだけど
29 :
774ワット発電中さん:2009/10/21(水) 17:50:37 ID:4wne0DUq
EEPROMの記憶方法で教えてください。
H8を使った機器で、
電源を切るときに、パネル面など人間が操作した最終の設定値を記憶して、
次回の電源onのときには読み込んで再現・・・という、よくありがちな機能を
作ろうとしています。記憶にはI2CのEEPROMを使用します。
そこで質問です。
いつ電源が切られるかわからないので、記憶するのに工夫が必要だと思いますが、
一般的にはどのようにしているのでしょうか? 次のように、方法とその特徴を考えました。
書込むタイミング
1) タイマー割り込みで10ms毎等に、ガンガン書きまくる。
機器の情報に関係なく常時書きまくる方法。
電源切る途中で、書込に間に合わなかったデータは消失。
EEPROMの回数のこともあるので、この方法はダメだと思う。
2) 機器の情報が変化するたびに書き換える。
記憶するbyte数が多いと、i2c通信が頻繁に発生。
キータッチのフィーリングが遅くなる可能性。
ロータリーエンコーダーなどは大変なことになりそうです。
3) 電源断時にすかさず書き込む
通常は何もしないですが、電源断時を知って、電源電圧が生きている間に
ババーッと書き込んで、H8は倒れる。
電源電圧の下降時間がゆっくりならいいですが、保証はないし
ハードが必要でめんどくさいですね。
書き込むデータ数
A) 全データを毎回書き換える。
EEPROMのページ書換を使えば、H8から64byte単位で転送できるので、高速でそれなりに良い方法。
でも複数ページになると、途中で5ms程度の待ち時間が発生するのが、問題なければ。
B) 変化データだけを書き換える。
変化した値だけ、その番地をbyte書込みによって書換え、他の番地は触れないようにする。
上記の組み合わせで、たぶん2Aかなと思っているのですが、
ロータリーエンコーダーの設定データがあり、思案六法です。
世の中一般にどのような方法で行われているのでしょうか。
宜しくお願いします
・差分ではなく、意味のある単位でページに一度に書き込む。
・チェックサム+2重書き込みで電源断に備える。
・上書きせず常に1つ前の状態も持っておき、データ破壊に備える。
思いつくのはこれぐらいかな。
EEPROMの書き込み回数は気にしたら負けです。
簡単に交換できるようにしておくぐらいでしょ。
待ち時間はFIFOや適当な割り込みをトリガにして解決できるかと。
2Aでも操作中に電源落ちたら駄目だろ
FeRAMなどの不揮発性RAMを使う
>>29 3で大きめの電源からレギュレータかなにかでVCCつくってキャパシタを挟む。
電源側から判断電圧もらって、割り込みにぶちこんで書き込む。
でよいんでないか?
>パネル面など人間が操作した最終の設定値を記憶して
書き換えは頻繁には起こらないってことじゃないの?
発想が逆なんだよ。
そういう場合は先ず、いつ電源が切られても書き込み完了まで動作できる回路にするんだ。
書き方はその後で好きに選べばいい。
人間に保存終了ボタンを押させる
いっそ、電源を切るスイッチは単なるハードウェア割り込みってことにして、
割り込みがかかったらデータを保存して自発的に電源を切る、
もう一度電源ボタンが押されたら初期化する。
って回路にしたらダメ?
大気電流を食う気はするけど。
低消費電力モードあるからそんなに電気くわないよ。
確か、ソフトスタンバイならNMIで復活だ。
普通にキャパシタでそ。
みなさん、さっそくのご意見、ありがとうございました。
とても勉強になりました。
・電源OK中に、電源断のことまで「考慮した書込方法」で対処する
・電源断後でも、必ず「全部を書き込み切る」回路を使用する。
・書込ボタンを設けて、人間に責任を負わせる。←これスゴイと思います。
ですね。どうもありがとうございます。
プロの皆さんのご意見が聞けて、嬉しいです。(周りに聞ける人がいないんです)
昨日あれからプログラムを組み続け、さきほどなんとか動作するようになりました。
記憶すべき容量が100byteを超え、多めなので、毎回全体を書き込むことは、
時間がかかるのでやめました。
変化したデータだけを書き換えるように作りました。ですので、
1byte設定ものが20種類、4byteデータものが10種類、6byteデータものが10種類と
専用の書込関数をつくり ダイヤル変化があったら、それに対応する書込関数を実行して
戻ってくる、これが一番速いと考え、そのようにしました。
同じような関数ばかりで、タイプに疲れました。まずまずの感じで動いています。
パリティ、2度書き、停電対策はしていません。
eepromの書込時間tw(5ms max)というのが長くて、困ります。
一番速い信号は、ロータリーエンコーダーで、びゅ〜んとまわすと、軽く数100Hzを
超えますので、それを一々eepromに書いていると間に合いませんので、
変化が止まったと思ったら、書き込むようにしました。
電源断で書き込むタイプも考えましたが、5V系の回路負荷電流が多いと
スグに電圧が落ちますので、ダイオードと抵抗をパラにしたものを
マイコン電源に直列に入れ、その下流にコンデンサを抱かせば、
電源断後に書き込み切れるかもしれません。が、ページあたり5msの書込時間が必要なので
それがネックになると思います。
みなさん、本当にありがとうございました。
>>41 そんな設計だと書き込み回数制限を直ぐに突破するような気がする
液晶モニタで頻繁に設定保存してEEPROMお亡くなりってあったなあ。
ナナオだったっけ?
書き込み制限気にするなら
CR2032とかで揮発RAMをバックアップしといたら?
最悪電池交換ならお客さん自身でできるでしょ・・・
45 :
774ワット発電中さん:2009/10/22(木) 18:13:57 ID:y9npsGxr
古いMY-ICE動かしたいんだけど、PCカードがPCMCIAしかないんで
最近のノートに繋げられない…
何かに変換して使えるようする物がないか教えて下さい。
PCI to PCMCIA カード?
>>46 PCMCIA → USB or Express Cardです。
使用しているノートPCのカードスロットが、Express Card スロットなんで…
古いICEは古いPCに古いOS乗せて動かすものなのだよ
客先が貸してくれるICEが20世紀末の代物だと、今時のOSでは
動かない場合があるんだよな。
それもあって、Win95/Meの入ったノートが破棄できない。
>>50 うちの会社には、ISAバス用のフルICEがある…が、さすがにもう使わない。
でもまだそれで作ったソフトが現役なんだよなあ…。
>>51 うちには、PC-9801のCバスの(ry
>>48 やっぱりどこもそうなんですね…
>>49 ノートで使いたかったんですよ…。
デバック環境が狭くなったんで。
54 :
50:2009/10/22(木) 23:04:50 ID:YOIywsVI
そいえば、ちょうど1年前にやった仕事。
H8の絶版CPUを使ったシステムの変更作業。
その時の開発環境がパソコンじゃなくてワークステーション。
ICEはネットワーク接続で、妙に新しいような古いような。
しかし…問題はワークステーション本体。
電源切るときの儀式が苦痛で苦痛で orz どうもトラウマなんだよな。
最後の1台。とか客はプレッシャーかけてくるし。
捨てちまえ。
55 :
50:2009/10/22(木) 23:10:14 ID:YOIywsVI
ちなみに、ワークステーションのエディタはviのみ。
そりゃ昔は毎日使ってたけどさ…
不思議なもんで、20年経過しても操作方法は指が覚えている。
自分のID見たら偶然 ws, viも入ってるしww
ドカタおっさん乙。ちょっとは進歩しな。老眼鏡かけながらやってるだろ。
57 :
774ワット発電中さん:2009/10/25(日) 23:39:37 ID:ojQ9Mbrj
車のエンジンコンピュータの中身を勉強したくて
分解して使っているマイコンの品種を突き止めたのですが
ググってもデータシートが見つかりません。
IC表面には HD6475348CP10 と 532 と書いてあったので
H8/532 というCPUではないかと思います。
データシートがどこかで公開されていれば教えてもらえませんか。
カスタムLSIはデータシート公開されてないよ
>>58 そうですか・・・
中身を勉強してH8/300Hでコピー作ってみようと思ったんですが
無理っぽいみたいですね。
>>59 中身を勉強って、H8の中身?
吸い出して書き込んでってだけのコピー?
ECUの勉強っていうなら…ROMから元ソースや仕様を読むとか多分無理。
それは見当違いだなー
HD64 7 5348 CP10
と、あえて分けて書くけど
7は内臓ROM領域がPROM版の意味。ちなみに1はROMレス、3はマスクROM、FはFlash
5348がシリーズ番号。
幸いPROMバージョンだから書き込みモードでベリファイ読み出しすればリバースエンジニアリングできるかもね。
具体的にはH8/548シリーズの1品種。
ttp://www.dzjsw.com/jcdl/h/HD6435348.pdf
肝心なトコ、ミスった。H8/534シリーズの1品種。ね。
H8/300HとH8/534はアーキテクチャ違うからな。
簡単には移植できなさそう。
16Bitでバンク拡張?
だいぶ違う作りだね
>>60 現在のスキルは、PIC16系で速度リミッタ解除ができる程度です。
H8は存在を知っているだけで知識は全く無いです。
・新しい石を覚えてみたい。せっかくだから高性能と言われるH8がいい。
・自分の車のECUがH8だから、これを解析してみたい。
仕組みを理解したいという興味です。
自分なりに理解して同じ動きをするものを作ってみたいです。
>>61 PROMということは、PICで言うところのワンタイム品ですか。
書き込みを試みても中身が破壊されないということですね。
データシート読んで、まずベリファイ手順から勉強します。
>>65 H8とエンジン制御を把握してからじゃないと、さっくり煮詰まる気がするのは私だけか。
32KBの逆アセンブル(いくらかはマップだろうけど)とか、元気だなあと思う俺は歳か。
ググったらECU自作って割とやってる人いるのね。
>65
PROMでも、内部セルはEPROMだお。
追加書き込みすれば内容は破壊されまつ。
あの世代のは書き込み電圧Vppが12V位必要なのと、電圧やタイミングが案外シビアなので、しないと思うけど書き込みはちょっとテク必要。
あと、自動車用だと奥の手でPROMモードで内容読み出せないようになっているかも、のココロだ。
がんばって呉。
68 :
774ワット発電中さん:2009/10/30(金) 13:52:42 ID:/i7yaKOl
Linux動かすなら3069しかねえだろう。
いちおう3052つうか3048のコードもあるけど、
とりあえず入れてあるだけで実際動かしたことないでよ。
CPUボード単体か、ママン付きか
最初ならママン付きのほうが楽だと思うよ
真ん中の写真だな… ママンにユニバーサル部分もあるしねえ。
ママンって 何?
マザーボード
母板
母
ママン
75 :
774ワット発電中さん:2009/11/05(木) 17:49:18 ID:77cmMo70
じゃぁ、ブレッドボードは「パパン」か。
ドーターボードは、、、
ドーテーボード、、、
ドーターボードは、、、
「パイパン」
なぜに両方女子なのかなどという今更な疑問を持ってしもうた。
daughterは「従属するもの」みたいな形容詞的に使われることがある
お父さん father
お母さん mother
おじいさん uncle
おばあさん aunt
兄弟 brother
姉妹 sister
息子 sun
娘 daughter
孫
おじさん uncle?
おばさん qunt?
甥
姪
いとこ
はとこ
またいとこ
義父
義母
義祖父
義叔母
継母
継父
son of a bitch!
みなさんに相談にのってもらいたいことがあります。
SH7709Aを利用しています。
0.225〜3.225Vを入力,AD変換を通して得られた値に演算を施して,
-3.3〜3.3Vにシフト&増幅して,DA変換しています。
負の値の出力については直接行うことができないため,
正の値 → DA0に出力
負の値 → 正の値に置き換えて,DA1に出力
して,DA0出力とDA1出力を反転したものを作動増幅器にかけて測定しています。
[問題点]
・正の値の出力は上手くいくが,負の値の出力のときにエッジが立つ
(目的の値とゼロの間を行ったりきたり,回路に入る前の信号で確認)
・その値をSCIで見ようとすると,文字化けが起こる
プログラムは
ttp://loda.jp/okufa/?mode=pass&idd=83 pass = denki
お気づきの点がございましたら,ご指摘いただけるとありがたいです。
増幅器を使うならレベルシフトつきで増幅すればいいだろ
たとえば 0.05〜3.25Vを 1.65Vshift & -2倍 にすれば+3.2V〜-3.2Vを出力できる
84 :
774ワット発電中さん:2009/11/06(金) 23:06:23 ID:T3A3Ohoh
DA変換でオラも質問したいのですが。
マイコォ・ジェァークスン(英語は発音大事)の「ダッ」を変換したいのですが
なんとかならしまへんやろか
H8始めようと思って準備してるんですけど
3664F用(H/300?)のGDLのターゲットファイルがどこにもありません。
どなたかご教授ください<(_ _)>
86 :
変換せえよ:2009/11/07(土) 00:34:55 ID:uInd2GHd
ダッ!
ファオッ!
ダッ!
ポウッ!
マクダナル=Macdonald
「エッジが立つ」とか俺様用語を使われてもな
「その値を」つーても,何の値なんだかわからんし
電気知らないとエッジでは通用せん。
知ってても立ち上がりなのか立ち下りなのかが重要な面では意味が不明瞭になる。
プログラムでは大抵どっちでもいいもんだが
A/D変換のスピードに対して、SCIの出力が間に合わなくて、
化けるのでは(リングバッファの管理がおかしくなってる?)
91 :
774ワット発電中さん:2009/11/07(土) 22:12:28 ID:YJhQknmK
小中学生の「電気を知ってる」レベルならエッジで通用するかもしれないが
所詮、俺様のエッジとエスパーのエッジは違う部分を指していたりする。
どんどん知識が増えてくるとそこらじゅうにエッジがあって、説明が不十分だと意味不明になるんだが
知識が少ない奴はそれが全てだと思い込む輩が多い。
SCIF.SCSCR.BYTE &= (~0x80); /*送信割込み禁止*/
はGBR経由でやった方がいいんじゃないだろうか?
94 :
774ワット発電中さん:2009/11/08(日) 17:49:20 ID:8Ck1ROyi
>>82 差動増幅アンプの負帰還抵抗が低すぎるのでは?
マイコンのAD出力ポートのインピーダンスは意外に高いので、
マイコンとOPAMPの間の信号ラインがマイナス側に引っ張られます。
すると、マイコンのI/Oセルがラッチアップして、誤動作する。
AD0とAD1出力を直接差動増幅OPAMPに接続するのでは無く、
一旦、シングルエンドOPAMPでそれぞれx1でバッファし、
低インピーダンス化してから、差動増幅に接続すべきだと思う。
>>82 は恥ずかしい疑問でも、あらゆる手段を講じて解決しようとしている。
一緒に仕事をするならば、信頼できるタイプだと思う。
>>91 おまえは黙っていてくれるか?
95 :
774ワット発電中さん:2009/11/08(日) 17:52:07 ID:8Ck1ROyi
あ・・間違えた。
>>94だが、AD出力ポートでは無く、DA出力ポートだった。失礼。
96 :
82:2009/11/08(日) 21:57:52 ID:NYqtLVdE
皆様,遅くなり申し訳ありません.
>>83 出力に関しては,アップしたプログラムには含んでいませんが,制御式をかませて演算後,代入するため制度を要求されます.
そのため,2ch分のポートをつかい,プラス側8bit+マイナス側8bitの分解能を得る仕様としています.
また,回路での増幅系は,接続デバイスの制約のため,この仕様で固定となります.
>>88 おかしな用語を使用してしまい申し訳ありません.
詳しくは,+出力時は正常動作していますが,-出力時は,正しい値と0とを交互に高速出力するようになってしまっています.
波形の種類としては,パルス波形になってしまっているため,正しい数値のDA変換後に何らかの要因にて0が代入されているようです.
また,「その値」とは,プログラムで使用しています,「da0」になります.言葉足らずで申し訳ありません.
要するに,DA変換で出力する電圧値(アンプにて3倍増幅するので,性格には意図した電圧の1/3の値)です.
>>90 SCIはITUなどでのタイマ動作にしないとやはりまずいのでしょうか.
>>92 とりあえず回路図のみアップいたしました.
http://loda.jp/okufa/?mode=pass&idd=86 P=denki
波形は明日PCに取り込んでアップいたします.
>>94 なるほど,そこは盲点でした.
DA1の出力を×1のOpAmpを通す回路を作成してみます.
97 :
82:2009/11/08(日) 22:02:18 ID:NYqtLVdE
>>82に補足いたします.
回路図をアップしたのでお分かりになられると思いますが,
>0.225〜3.225Vを入力,AD変換を通して得られた値に演算を施して
これは+10〜-10Vの入力電圧をOpAmpにてレベルシフトして,0.225〜3.225Vの入力に変換しております.
H8/3069秋月LANボードで外付けRAMの不具合事例ってあります?
H8OSでは問題なかったのですが、
TOPPERS/JSPにしてから、たまにプログラムが起動しなくなります
>>98 途中から石が変わったので、バスコントローラの設定を
変えないとダメとかあったような気がする。
100 :
774ワット発電中さん:2009/11/09(月) 01:05:08 ID:Rmws1wKw
>>94 知識だけじゃなく、他にも大分足りないみたいだな。
哀れw
95 名前:774ワット発電中さん[] 投稿日:2009/11/08(日) 17:52:07 ID:8Ck1ROyi
あ・・間違えた。
>>94だが、AD出力ポートでは無く、DA出力ポートだった。失礼。
101 :
774ワット発電中さん:2009/11/09(月) 02:51:46 ID:YjGRlLyi
100は91と同一人物?
黙っててくれと言ったのが勘に触ったのなら誤る。すまん。
俺、かなり足りないから。by94
102 :
774ワット発電中さん:2009/11/09(月) 04:11:55 ID:Rmws1wKw
>>101 「誤る」位だから日本語までおぼつかないのか。
確かにかなり足りないらしい。
しかしもっと足りないのは、俺なんかへのレスよりも、
>>96で
>
>>94 >なるほど,そこは盲点でした.
>DA1の出力を×1のOpAmpを通す回路を作成してみます.
なんていう頓珍漢な思考に至らしめてしまった事へのフォローだろ。
なんとかしてやれよw
そんな事だから
>所詮、俺様のエッジとエスパーのエッジは違う部分を指していたりする。
って言われるんだよwww
105 :
82:2009/11/09(月) 13:34:50 ID:zJkbu3hx
int
main(void)
{
unsigned int ad_data;
double da0;
for(ad_data=0;ad_data<=0xff;ad_data++)
{
da0 = 2.15 * (ad_data - 1.725 / 3.225 * 0xFF);
printf("%02x %f\n",ad_data,da0);
}
}
>>106 00 -293.250000
01 -291.100000
02 -288.950000
03 -286.800000
04 -284.650000
.
.
.
fe 252.850000
ff 255.000000
>>105 >ということは回路ではなく,やはりプログラム側に問題があるという認識で
切り分けるなら、オシロの観測点を、
・マイコンのAD入力ピンの波形
・マイコンのDA出力ピンの波形
にすべきだよ。
ADピンの波形がNGならハードウェア、DAピンの波形がNGならソフトね。
細かいことはよくわからないけど、
各機能を確認してから全体のプログラムを連結したほうが良いかもしれない。こんな感じ。
1. 入力側のハード確認
+/-10Vを入れ、AD入力ピンの波形が、「期待する中心電圧、期待する振幅」になっているか
2. ADの確認
terminalソフト+SCI(RS232)を使って、期待した変換値になっているか、数字で表示してみる。
fprintf ( SCI0, "AD=%04x\r\n" , AD_henken() );
3. DAの確認
DAピン電圧が期待した電圧になっているか。
for()で、0x000〜0x3ffまでをDAから出力し、DAピンをオシロで波形確認。
ADでありがちなのは、
・右詰め、左詰を間違っている。
・Vref端子に電圧を与えていない。
DAでありがちなのは、
・DAは8bit出力なのに、intの値を入れているとか。
・DAは電流が「全然取れない」ことを知らずに、電流を必要とするような回路になっているとか。
がんばってちょ〜よ by 河村市長
109 :
82:2009/11/09(月) 16:10:55 ID:zJkbu3hx
>>108 すみません,書いていませんでしたが,
>>105でアップした波形のうち,
上のCh.1がDA出力の波形,下のCh.2がAD入力の波形です.
比較のため2つを同時に計測しています.
プラス側DAはADと同じ波形を示しているのに,マイナス側で問題の事象が起きています.
また,SCIにて電圧値を確認しようとしていますが,これも文字化けという事象のため行き詰っている状態です.
>DAでありがちなのは、
>・DAは8bit出力なのに、intの値を入れているとか。
こちらに関してはプログラム上では一応16進数に変換しなおして代入しているため大丈夫との認識ですが,
もう少し考えてみます.
× for()で、0x000〜0x3ffまでをDAから出力し、DAピンをオシロで波形確認。
○ for()で、0x00〜0xffまでをDAから出力し、DAピンをオシロで波形確認。
本筋とは関係ないからどうでもいいけど、ADINに繋がるLF356って負帰還だよね
112 :
82:2009/11/09(月) 16:48:22 ID:zJkbu3hx
>>111 あ!
すみません,確認したところピン番号はあっているので,回路図のLF356に表記したプラスとマイナスの記載を逆にしてしまっていたようです.
AD側は現状,おそらく問題なしとお考えください.
113 :
82:2009/11/09(月) 17:03:50 ID:zJkbu3hx
114 :
98:2009/11/09(月) 18:19:06 ID:Lb7iW035
>>99 情報ありがとうございます
いったん起動しなくなると、しばらく放置しないと元に戻りません
>>109 >プログラム上では一応16進数に変換しなおして代入しているため大丈夫との認識ですが,
何進数でも関係なくて「char か int か」の違いだよ。
というか、DAのbit幅以上の値を書き込むと、DA値は自分のbit幅しか出力しないから、
ゼロが出ると思う。そのDAは何bit?
今回のDAの用例では、DA0とDA1で差動出力にしているみたいだから、
オシロの波形は、AD入力ピンで1つ、DA出力ピンで2つの、計3つの波形が
描かれないといかんと思うけどどう?
0V→負の期待した電圧→0V→負の期待した電圧→ ということだから、
DAの2つの波形を見ると、NG出力している方がわかるんじゃないかと思う。
差動なので、OP AMP出力が0Vだからと言って、必ずしもDA出力が0Vという訳ではなくて、
DA0=DA1であれば、出力=0Vになるから、注意して。
頑張ってちょう。 by 山田昌 (提供:鎌倉ハム)
116 :
82:2009/11/09(月) 23:02:01 ID:CqihsLov
>>115 >今回のDAの用例では、DA0とDA1で差動出力にしているみたいだから、
>オシロの波形は、AD入力ピンで1つ、DA出力ピンで2つの、計3つの波形が
>描かれないといかんと思うけどどう?
これに関しては一度測定したことがありますが,例えばマイナス出力用のポートをDA1とした場合,DA0はプログラム通りおとなしく0Vを出し続けています.
また,ポートDA1の故障も疑い,プログラムでマイナス出力用ポートをDA0,プラス用をDA1と,逆にした場合も同様にDA1はおとなしく0Vを,
DA0は0Vと期待した負の電圧を行ったり来たりしていました.
明日,確認の意味もこめてもう一度測定してみますが,オシロスコープの仕様上,3ch同時取得ができないのでDA0とDA1の2ch分の波形をアップいたします.
>>116 もし、terminalで数字を表示できるくらい遅く動かしても良いなら、
DAの吐く値をterminalに出力して、オシロの波形で0に戻るときにどのような数字が出ているかを
見れば、割に簡単に原因はつかめると思うけどね。
118 :
82:2009/11/10(火) 15:09:58 ID:3jQ1Y2XS
>>115 DAの2つの波形の画像アップしました。
差動増幅器をかける前の信号なので,全て正の値で出力されています。
画像のch1の波形はマイコンのDA1の値,つまり負の値になる部分を出力したものです。
ch2の波形はDA0の値,つまり正の値になる部分を出力したものです。
Mはch2-ch1の波形です。差動増幅回路を通して出た波形もこのような波形になっていると思います。
(実際は3倍になりますが・・・)
ttp://loda.jp/okufa/?mode=pass&idd=90 pass = denki
とりあえずオペアンプとの間を切断(抵抗の足切りでも良いだろうけど)
してDAの生の出力を見てみるかな
>>118 波形測定、お疲れさん。もうちょっといいオシロが欲しい所だね。
今回の波形で、DA0(オシロのCH1?)の出力が原因ということがわかったですね。
あとはソフトが、このDAコンバータにいくつのデータを送っているか調べれば
OKじゃない?
前にも書いたけど、
ゆっくり動作ができるのなら、もうfprintf()とオシロだけで、
原因が調べられると思うよ。
がんばってちょうでゃぁ。
A/Dの値をDA1に直接いれてみるとか?
DAC.DADR1 = ADC.ADDRAH;
DAC.DADR0 = 0x00;
にしたら、どうなるかな?
それにしても,この程度のことでいつまで引っ張ってるんだろうね.
学生かな。
たしかにね。
でも答えが出てないのもまた引っ張る原因かな。
はい、次の話題ドゾー
125 :
82:2009/11/12(木) 17:49:00 ID:OdV5fyS5
>>119 行ってみましたが,グラフのように出力されていました.
プログラムの問題のようです.
>>120 SCIで確認したところ,どうやらADC.ADDRAHの値が変になっているようです.
しかし,それも以前アップした画像のように,ADチャンネルにつないだOpAmp出力は綺麗なので,プログラムの初期化あたりみたいです.
現在仕様書と照らし合わせていますが原因不明です.
どなたかこのようなパターン,心当たりないでしょうか.
ADC.ADCR.BYTE = 0x27;
SCNが1になってるけど?
127 :
82:2009/11/12(木) 18:26:32 ID:OdV5fyS5
>>126 もしかしたら…と思い,訂正しましたが,変化ありませんでした.
>>121 いま試してみました.
AD入力の波形はトレースしているのですが,半分以下の値(今回は0〜3.3Vなので,1.6Vくらい)から下が行ったりきたりでした.
どうやら,この行ったり来たりをシフト&拡大していたため,マイナス値での波形がおかしくなっていたようです.
マイナスだからどうこうという問題ではなく,出力レンジの約半分以下のあたりでおかしいみたいです.
>>125 頑張ってるね。
>SCIで確認したところ,どうやらADC.ADDRAHの値が変になっているようです.
「ようです」って、
その値がおかしいと判断できたなら、もう修正できるんではないの?
なのにまだ悩んでいるのが よくわからない。
軽くイラっとくるような、そんな感じね。
SCIで確認できたソースとデータを晒さないと
教えてください。
数字の表現で、
2進数は、0b11110000 とか表現します。
16進数は、0x123cffe6とか表現します。
10進数は、通常 頭に何もつけずに 1234とかで書きます。
8進数は、どのように書くのでしょうか?
8=octalなので、0o7777とかでしょうか?
また、いずれの場合も先頭に「0」が付きますが、なぜ0が付くのでしょうか?
また、なぜ0なのでしょうか、1でもAでも良いような気がするのですが。
C言語なら
10進数 1234
16進数 0x1234
8進数 01234
2進数表記はない
理由はない。単なる決まりごと。
>>131 ありがとうございます。
8進数は、頭に「0(ゼロ)」を付けるのですか?
すると、
0(10進数) = 00(8進数)
1(10) = 01(8)
2(10) = 02(8)
3(10) = 03(8)
4(10) = 04(8)
5(10) = 05(8)
6(10) = 06(8)
7(10) = 07(8) ここまでは、どちらでも良いとして
8(10) = 08(8) ←この場合(8)はコンパイラが「エラー」と言うのでしょうか
9(10) = 09(8) ← 同上
10(10) != 010(8の場合9になる?) ← 同上
C言語では0で始まる値は8進数と決まっている。
頭に0をつけることで10進リテラルと区別している。
ただの0は8進数リテラルの0でもある。
gccには
>>130が書いたような2進数リテラルも存在する。
>>132 8進数なんだから010が10進数での8だよ。
10進数に10の記号が存在しないように、
8進数で8以降の文字は使われない。
0 から始まるだけで8進数なんて、知らない人も多いだろうから、
ゼロパディングして体裁整えようとしてハマる人もいるだろうな。
何を隠そう、自分もそうだった。w
135 :
82:2009/11/13(金) 18:22:49 ID:/QpWsSgr
みなさんお騒がせしました.
プログラムのミスも結構あったのですが,結果的にボードを買いなおしたらちゃんとできました.
今まで使っていたボードのメモリか,ポートに異常があったようです.
>>134 そうです。体裁を重視して、0を付けたら、偉いことになったことがありました。
0が8進数の文字だとは知らなかったです。
他の進数は、0xとかアルハベットば入るのに。
>136
物事の順が逆。
2進数をまとめる表記として8進数が真っ先に成立したから
もっとも楽な表記が8進数に割り当たっている。
16進数の表記とかはあくまでも8進数表記法の拡張。
今のゆとりは8進数の歴史的意味なんてわかんないだろ。
同じように、
バイトといえば8ビットだと信じているし、ワードといえば16ビットだと信じている。
オクテットなんて言葉は知らないし、ニブルなんて言っても通じない。
怖いねゆとり世代。
ま、待ってください。言葉はわかりますよ。
byte 8bitじゃないんですか?
word 1命令語 機種依存というか説明するときの都合で16,32,64bitなんでもあり
octet 8という意味です octal, octpasなど
nibble 4bit [7:4] とか [3:0]ですよね。
>8進数の歴史的意味
これ、ぜひ教えてください。 なんで8進数が真っ先にできたのですか?
インテル4004が4bitだったのは、0〜10を扱いたかったのだと思います。
8進数だと0〜7ですよね。3本線でやりたかった? なんででしょうか?
Z80 のインストラクションなんかを見る機会があったら見てみたらいい。
大抵 OP コードというものがあって、8ビットが 2、3、3 に分解されて
意味をなしていたりする。レジスタ指定が3ビットで、8進数だと
意味がわかりやすいとかじゃなかったかな。
別に知ってるから偉いってほどのもんじゃない。役に立たないうんちくにすぎないし。
C 言語は、単に言語仕様が良くないだけだと思うがね。
なんにせよ、自分がちょっと知ってるだけでゆとりゆとり言うアホは相手にしなくていいよ。
新規に記号を足し加える必要がある16進数は受容されるまでに時間が必要だった、んじゃなかったっけ?
Z80以前では16進数より8進数の方がメジャーだったから、
Z80に限らず(というか、8080に限らずと言い直すべきか)、
3ビット区切りはメジャーだったんじゃないの?
4004のようなマイコン方面からじゃなく、
メインフレーム機やミニコンなどのCPU(当時は複数チップで1CPUとなる方がメジャーだったはず)の世界から。
と思うんだけど、メインフレーム機やミニコンの命令セットをぜんぜん知らないので、
詳しい人はよろしく。
Wikipediaを見てきました。
「二進法の 3 桁を八進法の 1 桁で表現できるため
二進数を人間に分かりやすく記述するのに適している。
しかし初期の一部のコンピュータを除いて 1 バイトは 8 ビットであり、
8n 桁 (n は整数、例えば 32 桁や 64 桁) の二進数を扱うことが多いため、
二進数の 4 桁を 1 桁で表す十六進数のほうが表記が分かりやすく、
頻繁に使われる。C や Perl などでは、数の前に 0 を付けると八進数と見なされる。
例えば 011 は 11 ではなく (11)8 すなわち 9 である。」
だそうです。
8進数が「おいしい」とは書いてないみたいです。
何が嬉しくて・・・・・。
人間が10進数を扱いたいから16進数にした、というのは、僕の推測ですが、
よく似た事例に、OP AMPの電源電圧があります。これも僕の推測ですが、
アナログコンピュータとしてのOP AMPで、10進数を扱いたいので、+/-15Vという
電源電圧になったのではないか、と読んでいます。
もしそれが正解なら、16進数の件も 強ち(あながち)違っている訳ではない、と思っています。
時計は12進数か24進数か60進数、日付は12進数か30進数、えとは12。
コンピュータで、8進数が最初に使われた理由は、考えつかないです。
嬉しさがわからないです。
UNIXが最初に載ったマシンが
12ビットだとか18ビットのDECのマシンだったからじゃない?
>>144 ありがとうございます。納得しました。
ASCIIコード表で、6bitだと64文字定義できますね。
実際にキーボードの英数を数えてみたら、ギリギリ64で入りそうでした。
3bitの倍数が始まりなんですね。大変勉強になりました。ありがとうございました。
バイトが8ビットではない時代の話がウィキペディアにあるね。
>本来バイトとは、欧文文字1字分の文字コードを表現するために用いるビット数のことをいい、
>扱う文字種や、あるいはワードサイズをいくつかに分割することによって決められ、
>その大きさは処理系によって異なる。
>歴史的には5ビットから12ビットまであったといわれ、初期のコンピュータの多くでは6ビット、
>また7ビットや9ビットとして扱うコンピュータもあった(DEC PDP-10、NEC ACOS-6など)。
>しかし、大型汎用機で市場を席巻したIBM System/360アーキテクチャが8ビットバイトを採用していたことや、
>1980年代以降8ビットマイクロプロセッサを用いたマイクロコンピュータが爆発的に普及したこともあり、
>一般的には1バイトは8ビットであると認識されるようになった。
もうひとつ面白い話。
ビットの語源は 「binary digit」で、
ドイツ語で石ノミと同音。この「石ノミ」の複数形がバイトなんだそうで。
ちなみに旋盤などで使われるバイトもこのドイツ語の「石ノミ」が語源だそうです。
ビットもよく使われているよ。充電ドリルの先に付ける6角形のドライバーとか刃物、
ビットって言うみたい。
149 :
98:2009/11/14(土) 12:15:03 ID:A1Z8p+7j
その後、
外部DRAMがoki製の場合は
cpu_support.Sの364行を修正する必要があるようです
ところで、jsp/config/h8/akih8_3069f/sys_config.hの237行ですが
#define ENABLE_PB_CS (H8PADDR_CS4|H8PADDR_CS5|H8PADDR_CS6|H8PBDDR_CS7)
H8PADDRではなくH8PBDDRなのではないでしょうか
それ設定ファイルみたいだけど。
バージョン古いとかじゃないの?
ENABLE_PB_CSでググるとか。
151 :
98:2009/11/14(土) 16:25:22 ID:A1Z8p+7j
>>150 TOPPERSの初級実装セミナー教材(v1.5)です
同じディレクトリにあるh8_3069f.hには
#define H8PBDDR_CS4 (1<<H8PBDDR_CS4_BIT)
#define H8PBDDR_CS5 (1<<H8PBDDR_CS5_BIT)
#define H8PBDDR_CS6 (1<<H8PBDDR_CS6_BIT)
#define H8PBDDR_CS7 (1<<H8PBDDR_CS7_BIT)
とあってH8PADDR_CSxの定義が無いんですよね
ENABLE_PB_CSは#if 0で無効になってるみたいだけど
153 :
774ワット発電中さん:2009/11/19(木) 21:21:24 ID:BWIjMPoA
NECと統合か・・・
サービス悪くなるんだろうな。不安・・
教えてください。
ADコンバータのデータを、H8を介してPCにRS232で転送したいと、プログラムをCで組んでいます。
そのADは2つあり、それぞれ20bitです。
データはパラレルで2ms毎にやって来て、それを115200bpsのRS232Cで送り、
ターミナルで「123456,123456<CrLF>」と10進数の文字で表示したいです。
問題は、2msと時間が短いので、各計算をササッとすませなければなりません。
質問です。
送信は送信終了割込を使用しますが、変数内容→文字の変換に時間がかかっています。
変換方法のうまいやり方はないでしょうか? 現在やっているのは、
suuji[10] = { "0123456789" };
a = x / 100000; tx_chr = suuji[a]; temp = x % 100000;
a = x / 10000; tx_chr = suuji[a]; temp = x % 10000;
a = x / 1000; tx_chr = suuji[a]; temp = x % 1000;
a = x / 100; tx_chr = suuji[a]; temp = x % 100;
(省略)
という感じです。
何かステップ数が少ない変換方法はないでしょうか? 宜しくお願いいたします。
AD変換した物をなぜそのまま送らない。
20 20 → 8 8 (4 4) 8 8 → USART送信
で良いじゃないか。
大体ADに20bitも桁が必要なのかね。
H8の送り方の手順決めて、PC側で受信ソフトを作る方がいいんでないかい
2ms間隔でprintfする意味も分からないし。
バイナリで送らずに文字で、しかも真ん中に,があるところを見ると、
Excelなどに取り込みたいんでしょう。
多少の違いはあれ、バイナリから文字へはその計算になる。
だからRS232を速く送ることを考えた方がいいかも知れない。
水晶を変えれば、誤差0で高速なボーレートが行けるかもしれないよ。
>>157 printf?? 何言ってんの、違うだろ。送信割り込みを使うって言っているんだから。
いやだからターミナルでprintfするんじゃないの?
別に2msでする必要は無いんじゃね。
後々、データ採るんだろうけど。
生バイナリで送ってテキストに保存
後でテキストをPC側の簡単なプログラムに掛けて10進になおす
に一票
C言語の基礎知識がしっかりしてれば、あとは
・PCで動くコマンドラインアプリの作り方
・テキストファイルの入出力
を勉強すればできるよ。
>>154 まず1000で割ると上と下それぞれ3桁が得られるでしょ。
そのそれぞれを100で割るのは16bit演算でできる。そうしてできた00〜99の数値を
"00"〜"99"の表を引く。これで割り算が3回に減らせる。
ldivとdiv関数使えば商と剰余を一度に得られるし。
162 :
161:2009/11/20(金) 02:41:58 ID:q6s76T9S
まあ、俺もみんなの言うように生で送る手法のが情報が圧縮できてイイとは思うけど。
固定桁がイイなら、HEXで送るとかは? sprintfが間に合わないなら、"00"〜"FF"の
表をバイトで引けばイイし。HEXから十進数へは後でエクセルでも直せる。
163 :
161:2009/11/20(金) 02:52:54 ID:q6s76T9S
6桁,6桁CRLFなら送信時間は確かに間に合うが、20bitは10進6桁に収まらないじゃん。
16進で6桁必要だ。運用上10進6桁と判っているならいいが。10進8桁必要なら
161の手法で/10000と/100を使えば割り算3回ね。
テキストとして送りたいだけならニブル毎に16進にするのがいいと思うけどね。
テーブル引きや割り算なんて不要になるし、生データに戻すときも楽。
>>154みたいな事をするぐらいならsprintfか、itoaがあるならそれで
一度バッファに文字列を作成してそれを送信する。
20bitは((1<<20)-1)までの範囲。
10進の場合1048575までの7桁、それが2セットなら14バイト。
16進の場合fffffまでの5桁、それが2セットなら10バイト。
UARTで送る場合start、stop等の冗長ビットが必ず付くから
どう送るのかは確認した方がいい。8n1と仮定して
115200bps / (8+2)bit / 1000ms * 2 = 23(文字)
2msごとに23文字までは間に合う。
1bit増えると20文字まで減ったりする。
>>159 ターミナルでPRINTFって何?
PRINTFって、送り側の命令じゃないの?
>>154 割り算は以外に遅かったりする。
まあクロック数えてないんでこれが速いかわからんが。
char *ore_itoa(int val) {
static const int digit[]={100000,10000,1000,100,10,1};
static char ret[7];
int i;
for (i = 0; i< 6; i++) {
char d = '0';
while(val >= digit[i]) {
val -= digit[i];
d++;
}
ret[i] = d;
}
ret[i] = '\0';
return ret;
}
>>168 自作の簡易printfのことだと思いたい
154です。
みなさん、ありがとうございました。勉強になりました。
割り算を減らすのが味噌みたいですね。
それで、みなさんのお話を参考に、初めて作ってみました。
・生データで送るのもありですが、文字列でやりたいと思いました。
・相手はPCのターミナルソフトで受け、Logでふぁいる生成して、そのあとで他に読み込ませるつもりです。
・16進数の文字で送るのがいいと思いましたが、やり方がわからなかったので、1000で割って100で割って・・・です。
・20bitデータはまちがいでした。20bitADの下2bitは捨てていて、18bitデータでした。すみません。
ひとまず、それなりの出力は得られましたので、今から実際に組み込んでみて時間に間に合うか見てみます。
ありがとうございました。
また報告します。
>>160 >生バイナリで送ってテキストに保存
ターミナルのlog機能でbinaryも記録できるのでしょうか?
binaryを受けると、音がしたり、画面がくちゃくちゃになるので、
binaryは受けられないと思っています。
画面はくちゃくちゃでも、logファイルにはちゃんと入ってるよ、ということなら、
すごくうれしいです。
最後の[EOF]はデータとどのように区別するのかが興味があります。
154です。試しに作ったソースを貼ります。ポインターは難しくてわからないので、配列にしました。
void main(void){
const unsigned char dd[200] = { "000102030405060708091011・・・9293949596979899" }; // 0〜99
unsigned long int Li1, Li2; // 送信したいデータ1, 2 (Li=Long intの略)
unsigned int i1,i2; // 途中変数 (i=int)
unsigned char c1,c2,c3,c4; // 切り出された数値 (c=char)
unsigned char txd[13]; // 送信用の文字列buffer。これが答
while(1){
Li1=123456; // 例として 数字1
Li2=987654; // 例として 数字2
i1 = (unsigned int)(Li1 / 1000); // 1000で割る
i2 = (unsigned int)(Li1 % 1000); // その余り
c1 = (unsigned char)(i1 / 100); // 100で割る
c2 = (unsigned char)(i1 % 100); // その余り
c3 = (unsigned char)(i2 / 100); // 100で割る
c4 = (unsigned char)(i2 % 100); // その余り
c1 <<= 1; // 配列が2文字毎になっているので2倍する
c2 <<= 1;
c3 <<= 1;
c4 <<= 1;
// 送信用bufferの組み立て
txd[ 0] = dd[c1+1]; // 最上位は1桁
txd[ 1] = dd[c2 ]; // その下の桁は2桁 上側
txd[ 2] = dd[c2+1]; // その下の桁は2桁 下側
txd[ 3] = dd[c3+1]; // その次の桁は1桁
txd[ 4] = dd[c4 ]; // その下の桁は2桁 上側
txd[ 5] = dd[c4+1]; // その下の桁は2桁 下側
txd[ 6] = ','; // カンマ
i1 = (unsigned int)(Li2 / 1000);
i2 = (unsigned int)(Li2 % 1000);
c1 = (unsigned char)(i1 / 100);
c2 = (unsigned char)(i1 % 100);
c3 = (unsigned char)(i2 / 100);
c4 = (unsigned char)(i2 % 100);
c1 <<= 1;
c2 <<= 1;
c3 <<= 1;
c4 <<= 1;
txd[ 7] = dd[c1+1];
txd[ 8] = dd[c2 ];
txd[ 9] = dd[c2+1];
txd[10] = dd[c3+1];
txd[11] = dd[c4 ];
txd[12] = dd[c4+1]; // このあと送信終了割込が送信する。
}
}
実行結果
123456,987654
123456,987654
154です
実行時間を測定してみました。
i1 = (unsigned int)(Li1 / 1000); // 1000で割る
から
txd[12] = dd[c4+1]; // このあと送信終了割込が送信する
までで
116usでした。速いです。
115200bps/10 *15文字 = 1.302ms ですので、うまくいきそうな雰囲気です。
173 :
161:2009/11/20(金) 17:29:22 ID:q6s76T9S
>>154さん、161です。大勢のレスの中から私の手法を拾ってくださって嬉しいです。
私もH8 16bitクラスで、ダイヤルをくるくる回すのに追従して6桁の数値を表示する時に
苦労してあの手法にたどりつきました。 割り算が減るのが嬉しいでしょ(^o^)
ldiv div関数について学んでみてください。171のコードの、i1,i2をdiv_t構造体のquotとrem
にすれば、割り算1回で商と剰余が同時に求まるのですよ。ldivはそれをlongでやってくれる
次のレスで私の6桁editを貼ります。
174 :
161:2009/11/20(金) 17:37:08 ID:q6s76T9S
void longedit(ulong l, short *dst) { /* long edit ルーチン */
/* input : l=long値、dst=編集先エリアのアドレス(ワード境界必須) */
register ushort lswd; /* 千〜1の桁 */
ulong _ul_div_wd(ulong,ushort);
ushort _ul_mod_wd(ulong,ushort);
/* 高速化のアイデアは、割り算を減らす工夫にある。
longの割り算を1回、shortの割り算を1回で0〜99の断片を
3個作り、100個の表引き(dec2b())で文字に変換する。
レジスタの使い回しがドジだが割り算等本質的な部分は変わらない。 */
*(dst ) = dec2b(_ul_div_wd(l,10000)); /* 上2桁をedit */
lswd = _ul_mod_wd(l,10000); /* 下4桁を計算 */
*(dst+1) = dec2b(lswd/100); /* 千、百の桁edit */
*(dst+2) = dec2b(lswd%100); /* 十、1の桁edit */
}
_ul_div_wd()は32bit÷16bitの商、_ul_mod_wd()は32bit÷16bitの剰余を返すASMルーチンです
DIVXU 引数のレジスタ32bit/16bit だけのルーチンですが、cでは32bit/32bitしかないので
役に立つルーチンです。
175 :
161:2009/11/20(金) 17:38:27 ID:q6s76T9S
dec2bは00〜99の表引きだけのルーチンです。
5桁HEXの方が圧倒的に早いのに。
>174
よくわかんないんだけど、H8のCって
D = X / Y;
Q = X % Y;
を一つの除算命令にまとめてくんないの?
178 :
774ワット発電中さん:2009/11/20(金) 21:11:00 ID:hUPPLNau
剰余なんてどれだけ重いかわかってんのか
179 :
774ワット発電中さん:2009/11/20(金) 21:14:43 ID:hUPPLNau
>>154 おまえの使ってるコンパイラがリテラルによる除算が
ちゃーんと乗算に置き換えてくれてることと、
剰余の所用クロック確認したんだろな?
剰余を弥陀に4発並べて時間がかかるって?馬鹿かオマエは。
154です
実行時間を測定してみました 2
sprintf( dd, "%6lu,%6lu\r\n", long_int1, long_int2 );
944usでした。対処したものに比べると、とても遅いです。
中で一体何をしているんでしょうね。
0.944ms + 1.3ms = 計2.34msとなり、他の仕事が全くできず、うまくありませんでした。
>>155 ありがとうございます。せっかくソースまでのせて頂いたのですが、
テストできそうにないです。ごめんなさい。
>>177 H8がネイティブで持っている割り算命令は
「32Bit ÷ 16Bit → 商16bit、余り16Bit」
が最大。それ以上のビット数になると
シコシコと引き算とシフトをループさせるしかない。
ごめん
ADが2chで20bitってどの型番?
ET2009に行ったら、AlteraのブースにFPGA用のH8が展示してあった。
>>182 よくわかりませんが、AD7なんとかだと思いました。
よくわかっていません。
>>179 日本語でお願いします。
「弥陀に4発」って意味がわかりません。
弥陀→あみだ→本当は数珠繋ぎと言いたい?
よくわからんけど。
ムダのタイプミス+変換見落とし に一票
>>185 AD7ってポート番号じゃないかと。
H8のMCUの型番を聞いてると思う。
よくわからんのなら仕方がないが。
>>190 アナログデバイスの「AD77なんとか」です。
ちなみにH8のポート番号は先頭に「P」が付くです。
P10 P12 PA6 PJ2 とかです。
なんだか・・もうちょっと勉強した方が良いんじゃないかと思います
こうやって勉強するのもよいかと思います。
>191
AD7785ってとこか…
ということはボード設計したの別の人なんだ。
パラレルって言ってるんだからAD変換ICだろJK
R8Cの速度に失望した
プリフェッチに命令がたまるのにどんだけかかるんだよ
実行サイクル数にどれだけの意味があるのか
>>196 分周(8分周)のまま使っているというオチでは、ないですよね
>>197 それは最初に気がついた
でも分周なしにしてもやたら遅いんでソフトウェアマニュアル読んでたら
プリフェッチが一クロック一バイト!!なんじゃこりゃと
バス8ビットだからな
8088とかのノリっしょ?
面白そうだったので命令セット覗いてみた。80xx系は LD/ST だけど、こっちは MOV
使ってるから、なんかNECの石とも似てた。クロックは20Mにできても8bitなんだから
しょうがないよ。
RXもそうだけど、ルネサスになってから出てきたCPUは三菱系な命令セットなんだよねえ。
日立の方つうか68Kに慣れてるといまいち馴染めん。
SH7266サンプル出荷2010年2月
H8で、RS232の送信で、教えてください。
現在、RS232の送信部分をバックグラウンドで行おうと考えています。
その方法は、
1. 200文字くらいの送信bufferを用意する。
プログラム各所で、そのbufferの最後に、送信したい文字を追加書き込みしていきます。
このあとの送信処理を2通り考えています。
2-1. 送信終了割り込みを使用する方法
bufferの読み出し/書き込みのポインタが違っていたら、未送信文字があると判断して
送信終了割り込みをonにして、未送信の先頭1文字を送ります。
すると送信終了割り込みが入り、もし続きがあればそれを送信、
もし残りがなくなったら、送信終了割り込みをoffにする。
2-2 メインルーチンに、2-1と同じような処理をベタで書き、(割り込み使わない)
処理する。
なぜ2つ考えたかというと、
2-1では、bufferに残りが多数あると、連続して割込が入ってしまい、
残数がなくなるまでメインなどの他の処理が滞ってしまう。
2-2の方法だと、送信が若干間欠にはなるものの、メインは留まらないように
作ってあるので、メイン等の処理→1文字送信メイン等の処理→・・・
が繰り返されると考えたからです。
質問です。
上記の理由で、2-2のほうが良いと考えたのですが、
そうすると、送信終了割り込みの使い道が??になってしまいます。
なので、私の考え方がNGなのか?とも考えています。
2-1,2-2の方法も含めて、私のこのような考え方は変でしょうか?
ふつう一文字送るのにそれなりに時間がかかるので、
連続して割り込みが入って他に何も出来ないなんてことはない。
φ/16でBRRが1とかいう極端な設定の場合は別だが。
>>204 具体的なレートとclockを書いてくれればはっきりするのに。
例えば9600でclockが19.6608とかだったら、割り込みはほぼ1mSに1回でその間に
CPUは20000clock分のmain処理を実行できる。送信割り込み処理なんて50clock位
だから、送信の負担は1%未満。こんなふうに評価する。
送信の送り始めでは、送信レディ割り込みと送信機能ONをコマンドregに書くでしょ。
この時は送信終了割り込みはONにしない。
送信レディ割り込みでは、まだ送信文字が残っている間次の文字をTXDregに書く。
で、最後の文字を書いたら、送信レディ割り込みをmaskして、送信終了割り込みをON
にする。上の9600の例だと、この後2mS後に送信終了割り込みがかかるから、そこで
送信機能OFFと、送信終了割り込みOFFを実行して、1フレーム分の送信が完了する。
__interrupt(vect=94) void txrdy1(void) {/* SCI1TXrdy int. */
SCI1.TDR = s1ring[c1s_rpt]; /* アンバッファリング */
SCI1.SSR.BIT.TDRE = 0; /* TDRE clear */
c1s_rpt = (_UWORD)((c1s_rpt+1)&(sizeof s1ring-1)); /* リングポインタ更新 */
/* SCRx:| TIE | RIE | TE | RE | 0 | TEIE | 0,0 */
if( c1s_rpt==c1s_wpt ) { /* 残り0なら */
SCI1.SCR.BYTE = 0x74; /* TIE off, TEIE ON */
/* この後(約4mS後に)、TEND(トランスミットend)割込みが起きる。
そのときにTE,TEIEをoffにする。それがこの下の処理。 */
}
}
__interrupt(vect=95) void txend1(void) {/* SCI1 TXend int処理. */
/* 最後の文字フレームのストップビットが出力され、シフトレジスタが空に
なるとこの割込みが起きる。この時TE,TEIEをオフる。 */
SCI1.SCR.BIT.TE = 0; /* TE,TEIEオフ */
SCI1.SCR.BIT.TEIE = 0;
} 俺が使ってるTXrdy、TENDの割り込み処理。参考になれば。
_UBYTE s1ring[2048]; _UWORD c1s_wpt,c1s_rpt;; // ringバッファと、リード・ライトポインタ
void ch1puts(_UBYTE* srcp) { /* 送信バッファ書き込みルーチン*/
register _UWORD Rx=c1s_wpt; // loop中はRegに持つ
do { /* サイズ回 loop */
s1ring[Rx] = *srcp++; /* 1 キャラ put, srcp++ */
Rx = (_UWORD)((Rx+1)&(sizeof s1ring-1));// カウンタ更新
} while( *srcp );
c1s_wpt = Rx; // ringポインタ更新
SCI1.SCR.BYTE = 0xF0; /* TIE,TE ON */
/* この後、割込み処理でリングバッファからTXシフトレジスタに書き込む */
} こっちがtask側から使う送信開始ルーチン。null止め文字列を渡すという想定。
へうで作るんだよね? interrupt.cに書かれてる割り込み処理からここに書いた関数を
呼び出すようにするとコールオーバーヘッドがもったいないから、interrupt.cの該当vectの
関数はコメントアウトして、自分のドライバ.cファイルに(俺の場合uart.c)このようにvectを
書けばいい。 リード・ライトポインタだけで、滞留バイト数は不要なのも2chで教えてもらった。
この手法は十分デバックされ尽くして何度も使い回しているから、今ではパツイチで動く。
送信終了割り込みの使い方を知らない人が書いたコードを保守したこともあるが、
// 最後のバイトを書いた所で送信機能をオフにすると最後の2文字が出ない。
// 仕方ないので1mS単位のソフトタイマを設け、最後のバイトを書いたときそれを4にして、
// そのタイマが0になったときに送信機能をオフにする。
なんて書き方をしてあった(w 割り込みを使えばこの辺がスマートに解決できるわけ。
長文すいませんでした。
210 :
追伸:2009/12/02(水) 04:45:29 ID:iwtTfrxd
あまりないと思うけど、バイナリ00hを含むフレームを送信したい場合のみ、208を
ch1puts(_UBYTE* srcp, _UWORD len) { のような渡し方にして、len回loopさせる。
俺は入り口名を別にして両方設けてある。
H8の小さい方で、内蔵メモリが少なければ、ringバッファを[256]にしてリード・ライトポインタを
BYTEにすれば、更に処理は軽くなる。 余裕があるなら、滞留数を気にせず送信関数を
コールできるために、1回に発生する送信フレーム("hellow・・・\r\n"とか)の2倍に近い
ringサイズにしておくといい。まあ、何秒に何回こんなフレームが発生するからピーク滞留数は
これくらい、という評価は事前に必要だけど。極端な例で、ring[256]で128バイトの文字列を
208に渡すと、2度目はぎりぎりセーフ。1度目のコールの後、割り込み処理で最初の2文字は
取り出されてTXDregとTXシフトregにあるから、2度目のコール完了後の滞留数は254になる。
>>204の2-2のデメリット:if( バッファに残りバイトがあり && SCIステータスregのTIフラグがON ) {
のとき次のバイトをTXDに書き込む; という書き方をするんだよね? この判定の頻度が
もの凄く多くなって、その殆どはFalseになるから、無駄なオーバーヘッドになる。
割り込み機能は、それを 「必要なとき」 だけに刈り込んでくれるわけだから。
オーバーヘッド以外にも、SCI.xxxのような特定のデバイスへの参照は 「ドライバ層」
のモジュール(xxxxx.cのファイルね)に隔離したほうが、リーダビリティや、モジュール強度
の点からも良いプログラム手法になる。
うわあ、さっそくありがとうございました。
通信レートを書かなくてすみませんでした。
115200 の 16MHzです
送信データは、2.56mS毎に必ず発生します。
その他の割り込みは、IRQを4本、受信割り込み二本、タイマー割り込み二本です。
115200ってことは、1byteが100us
16MHzってことは1クロック0.0625us
単純に3クロック1命令とか計算しても500命令
周期の余裕をみて1/3に納めても166命令
そりゃ結構厳しい条件ですな。
無理しないでメインループでポーリングした方がいいと思う。
東芝の「ベクトルエンジン」みたいなの、ルネでも出ないかな。
あれ誰か使ったことある人いる?
217 :
212:2009/12/02(水) 18:24:51 ID:iwtTfrxd
お、話が進んでる。確かにその位の条件になったら、212のFalseの比率が有意に下がるので
mainで(不本意ながら)そういう処理を書くことも考えられる。でもそれって=敗戦処理なのだ
1クラス上のCPUを選ぶという選択が正しいと思うよ。そのH8に俺の書いた体系を実行
させれば、最大効率+処理能力の余裕 が得られる。・・・んだけど
218 :
774ワット発電中さん:2009/12/02(水) 18:39:11 ID:Qk+se2c7
これだからCしか出来ない奴は(ry
>>212 割り込みは応答時間が馬鹿にならないし、
他の割り込みが実行中なら、さらにそれだけ
待たされるわけだから、無駄なボーバーヘッドは
割り込みの方が大きくなるんだけど。
特にUARTの送信はボーレートを計算すれば
次の割り込み要因がONになるまでどれぐらいの
猶予があるかは見積もれるわけだし、
言い換えればタイミングが判っている処理を
割り込みで待つ必要はない。
むしろ空き時間を作りたいなら極力割り込みは
避けるべきだね。
と言ってみる。
ボーバーヘッド
ボンバヘッ!
趣味でマイコンを始めようと思ってH8/3052Fの開発キットを購入したんだが、
最近はAVRやPSoCも人気があるようで…。
H8がAVRやPSoCよりも優れている点はないのでしょうか?
個人的には国産マイコンであるH8に、何らかの利点があってほしいのですが…。
気に入ってるから使う、それで十分じゃないか。
ちなみに俺は 78K と V850。
>>222 主な利点
・32bitまでの汎用レジスタ
・アドレスが広い
・外部バスがある。DRAMとかが直結可能(3052の場合2MBまで)
・DMAがある
・DACがある
・ライタ不要
・情報が多い(ただし古い)
主な欠点
・SPI、I2Cがない(ソフトで書くと遅い上にI2Cとしては簡易的な物になる)
・フラッシュ書き込み回数が少ない(外部EEPROMとかで回避)
・IC単価が高い
・表面実装しかない
・2chスレが荒れ気味(gccとhew論争や基地外の1行レス等)
昔はPICばっかり使ってたけど、最近はH8ばっかり。
メモリ多いし、処理は速いし。
プログラム組んでいて、何かしら安心感が違う。
好きだなぁ、H8。H8Sはさらに速くていい。
SHは使ったことないけど、そこまでいくならFPGA使うな。
>・フラッシュ書き込み回数が少ない(外部EEPROMとかで回避)
これについては、開発用のボードで何度も書いて開発してゆき、
完成したSフォーマットファイルを
製品用のボードに焼くことで十分回避できると思います。
内蔵FLASHは書き換えの多い不揮発なデータ領域にむかないでしょ
H8メーリングリスト(終了したやつ)の内容を、
全部ダウンロードしたいのですが、
一発で全部ダウンロードってできますか?
1つ1つの発言を全部開いてCTRL+C, CTRL+Vを繰り返すということもできないので。
wgetでも使え windows版もあるらしいぞ
CPUにはいいけどPICみたいな使い捨て分野だと不利だよね
>>226 H8だとシミュレータもあるよね
俺トラ技のR8C練習してるけど、シミュレータのこと書いてなかったから無駄に書き換えしてたお
話がかみ合ってない気がする。
最近のチップだと、flashを丈夫に作っておいて
データ保存領域として動作中に書き換えてることを意識してる。
そうするとEEPROMなんかを外付けする必要が無くなるからね。
そういうことがH8だとできないってことでしょう。
そういう使い方で、ECC入れてエラー訂正すれば書き込み回数10倍にできまふ。
なんていうアプリケーションノートがあったような気がする。
233 :
774ワット発電中さん:2009/12/05(土) 08:20:50 ID:cDDcHBTJ
国内メーカが公称値が少な目なのはワーストケースを考えて更にマージン
取るなどしているからで,実力値は相当高かったりするけどね
フラッシュで頻繁に書き換えが発生するならECC入れるなりCRCチェックして
代替処理するなりという細工は必要だろう。
もっとも,ECCもソフトだけでやるとちと面倒臭いけどね。
教えてください。
H8のタイマー割り込みを使って、時計を作ったのですが、
時間が少しずれます。僕がいけないのでしょうか?
ズレは、12時間で2秒早いです。ストップウオッチの手計測なので誤差大ですが、
2秒は間違いなく、早いです。
水晶=18.432MHz GRA=18432 タイマ割込周期=1.0ms毎。
タイマー割込内で tim++;
mainで、timを時間、分、秒に分解して液晶に表示
というプログラムです。
タイマー割り込みで加算しているので、
プログラムのうまい下手は精度に関係しないと思っていますが、どうでしょうか。
はい、あなたがいけないです。
そうですか。ショボ〜ン。
それぐらいの誤差はあるんじゃないの?水晶ってそんなに正確なんかな?
テキトーですまんが、H8 って、割り込みの後、次の割り込み許可の操作とか
いらないんだっけか?その辺の処理が積み重なってるとか。
いい加減でゴメン。
GRAを1引いてみそ。
>>234 どんな水晶を使っているかわからなけれど。
12時間で2秒のずれが全部水晶の誤差だとしても、
だいたい 50ppmだからそんなもん。
それ、さらに周期が短くなって、ますますズレが大きくなるんでね?
みなさん、ありがとうございます。
>H8 って、割り込みの後、次の割り込み許可の操作とか
>いらないんだっけか?その辺の処理が積み重なってるとか。
もちろん次の割り込みの許可は必要ですが、
ハードのカウンタですので、次の割り込みが入るまでにそれを行えば、
大丈夫だと思います。
GRAを1個引いたら、さらに早くなると思います。
ていうか、もう目の前から物がなくなってしまったので、試せません。すみません。
50ppm、流石ですね。根拠に信憑性がありますね。
>ストップウォッチがずれてる可能性も
これは気づきませんでした。たしかにそうですね。
みなさん、どうもありがとうございました。
なんとか動いているみたいで、安心しました。ありがとう。
>>238 でfaだと思う
早くなってるって事だから辻褄が通らないんだけど…
> 水晶=18.432MHz GRA=18432 タイマ割込周期=1.0ms毎。
この条件ならGRAの設定値は本来は「18431」でないといけないよ。
ハードウェアでカウンタを設計すれば分かるけど、カウンタの値は0から始まるから
周期は「上限の設定値+1」になる
上限の設定値を2とすると、カウンタの値の遷移は
0, 1, 2, 0, 1, 2, 0, 1, 2, ...
となるから、結果的にカウンタの周期は3サイクルになる
親切なマニュアルだと、「所望の周期-1」を設定しろと書いてある
>>242 >GRAを1個引いたら、さらに早くなると思います。
>ていうか、もう目の前から物がなくなってしまったので、試せません。すみません。
気になるから取り戻して確認しれ
確かに一般的な水晶の許容差が50ppmだからそんな物かもしれんが、何でも誤差で済ませては
エンジニアとしては負けだ
244 :
774ワット発電中さん:2009/12/09(水) 20:15:52 ID:KvhfgRJd
まあ、+1した時に何ppm変化するか、やってみないと判らない様な奴は
エンジニアとは到底言えないけどな。
書込む前に計算してみたんだけど、+1されてるとだいたい2秒と少し遅くなる
でも本人は、2秒「早い」って言ってるからね
本来なら12時間で4秒ほど進むレベルの水晶だったのに、
設定ミスで誤差が相殺された。
という可能性はないの?
天体の運行を元にした時計と水晶の時計とは違って当然なんじゃないの?
地球の回転だってばらつきはあるし、1年間の365.2422日だって近似値だし、それから
割り算した1秒がきっちり1000mSとはかぎらないでしょ。
248 :
774ワット発電中さん:2009/12/10(木) 04:36:48 ID:I+UurQZ0
>>246 たかがカウンタの設定値を決めるのに「可能性」なんか持ち出すなよ。
理屈通りの値を設定すれば良いだけ。
>>247 小、中学校あたりから勉強しなおした方が良いかも。
ちまたの時計は地球の自転エネルギーで時を刻んでいるのかーっ
というツッコミをしたくなるボケ方だな。
コリオリ時計!
そういうのもあるのか!!
科学館にあったな。
252 :
小学生:2009/12/10(木) 15:34:52 ID:Na9SbRfK
>>248-249 石のクロックと言うときの何Hzの元になる1秒は何から定義されているのですか?
私は「セシウム133 原子の基底状態の2つの超微細準位間の遷移に対応する放射の9 192 631 770 周期の継続時間」
だと想定しました。 しかし、人類の生活に用いられる時計は、天文の運行に即して進行する
「暦表時の1900年1月0日12時に対する太陽年の1/31 556 925.9747倍」 による1秒で運行
するように作られていました。(上の行のスペースは区切りを見やすくするためのコンマと同等)
(ゼンマイ時計の頃は人力による補正が必要でした。) コンピュータで時計をエミュレートする
時にこの2つの定義を検討せずに採用したことが根本原因だとおもいます。如何でしょうか?
ツマンネ
ちまたの時計は原子時計と同じ精度のクリスタルで時を刻んでいr……ツマンネ
そろそろスレ違いかな?
…水晶発振子スレなんか無いと思うけど。
255 :
774ワット発電中さん:2009/12/10(木) 18:50:41 ID:I+UurQZ0
>>254 その辺の話ならスレチでは無くて板違い。
オカ板池
バリキャップで調整すればいいんだよ メンセキメンセキ
B/Sぐらいちゃんと捏造できないと困るよ シャッチョさん
>>256 あるのかYO!
探しておけば良かったな…しかし…語ることモスク内だろうと思ったけど、結構マトモに進行してるスレみたいね。
アッラーは偉大なり、とか語るんですね。
>>259 デリケートなアナログ系デバイスの代表者だから、
語ることは山ほどあると思うけど
毎日同じ時間に、お祈りささげたり
H8 3052Hマイコンで,SPIを使ったSDカードへのアクセスをしようと考えています.
使用しているコンパイラがBesttechnologyで配布されていたGCC Developpers Liteです.
以前シリアル通信用のライブラリをいじった事があったので,同じようにChan様配布の
FatFSをライブラリ化しようと考えていたのですが難しくてなかなか進みません.
どなたか,既にやられている方とか,資料などありましたらご教示いただけないでしょうか.
トラ技1月号のH8は、ルネサスのフリーのコンパイラーHEWがあれば、開発できますか?
264 :
tkana3:2009/12/16(水) 23:07:04 ID:wo2lmVtl
こんばんは。
初めて質問させていただきます。
H8/3048でちょっとしたものを作っています。
AKI-h8/3048をキットで購入し、サンプルプログラムMBTEST.MOT
を動かせました。
その後、F-ZTATを起動すると全く時間をカウントしないうちに「time
out error」となります。
これは、キャッシュみたいなのものが残っているのでしょうか。
以上よろしくお願いします
265 :
262:2009/12/17(木) 00:09:09 ID:7/hNDWaA
>264
F-ZTATを一旦終了させ、3048側の電源を入れなおして再度
やってもダメですか? 3048だと動作痛に書き込みモードへの
切り替えスイッチを操作するとCPUが故障する可能性もあります
のでご注意ください・
>262
自分のですが、現状。Port9にSDカードを接続して(トラ技2008年1月号を
参考に)います。Port9の4ビットと5ビットは汎用入出力で使いたいのですが
どうやら、SCI関連のSCRレジスタ内でSCIの割り込み許可をすると、入出力に
使えないような感じです。SCIの割り込みを認めたうえで、Port9の4,5ビットを
汎用入出力として使うにはどうしたらいいのでしょう。開発はGccDevelopperLite
(BestTechnologuy配布)です。ヒントだけでもよいので、なにかご助言お願い
いたします
266 :
tkana3:2009/12/17(木) 01:11:31 ID:5CqoLK1y
>265
ありがとうございます。
>F-ZTATを一旦終了させ、3048側の電源を入れなおして再度
PCリブートしてもダメですね。
リブートしても、キャッシュみたいなものが残っていて
time out を例えば123秒とすると
↓
リブート後にも設定が123秒のまま残っていますので。
>やってもダメですか? 3048だと動作痛に書き込みモードへの
>切り替えスイッチを操作するとCPUが故障する可能性もあります
はい既に1つ壊しましたのでw
>>265 SCI1 SCI0 の、CKE1,0=0,0 にして使えば、P95,94を調歩同期のSCK入力としない、
という意味になるから、入出力ポートとして使えるはずですよ。 CPUのクロックが、分周
しやすい値になっている必要がありますけど。きっちり20Mとかだと分周してできたuartの
レートが近似値になっちゃいます。
268 :
774ワット発電中さん:2009/12/17(木) 08:19:06 ID:LSI9CFQf
>264
秋月のテストプログラムは時間遅延の処理に単純なループ処理で
プログラミングしているのが原因でしょう。
秋にはタイマー割り込みまではできないようです。
>>265 共用IOピンは、いずれか一つのデバイスのみ使用するのが良いです。
とうとうNECと統合か・・・
使いにくくなるなぁ。
H8Sの同じソフトを、ルネサスとライフボートのコンパイラに食わせて、LINK結果のROMサイズが
20995 bytes と、5732 bytes だったよ。 個々のモジュールの機械語はライフボートのほうが
僅かにおバカなんだが、最終結果のROMで4倍近い差がつくの。面白いね。
いくらなんでも違いすぎだろ。
要らんライブラリをリンクしてるんじゃないの?
ライフボートのほうは整数型限定のprintfが付いてるけど、ルネサスのはフルセットのが
付いてくるの。実数の編集なんて10MHz程度の石じゃ使えないのに。
SHマイコンの勉強をしようと思ってるんですが、
皆さんデバッガーは何を使っておられますか?
調べた限りではE10A-USB、DR-01、XrossFinder等があるようですが、
オススメのやつとかあるでしょうか?
つーか
printf()とかリンクしてるターゲットソフトの方がダサいと思う俺は老害?
%dとか%xなんかに相当する編集コードは自分で書けば簡単だけど、c標準の扱いする
ほうが楽だし融通が効くでしょ。string末尾のnullとか。C++使うほどでかい石じゃないし。
使い分け出来ればいいんじゃないの
printfは呼び出し時のスタックへのpush(レジスタ渡しできない)、
書式文字列の解析に時間的なコストが掛かるのと、
出力先によって異なる改行コードとかが問題になる。
必要なのはLFなのか、CRLFなのか。
さらに言えば書式文字列自体の空間的なコスト。
printfが許容できるならゴミみたいなもんだけど。
H8では時間的コストの方で使わないことが多い。
数字の桁揃えしたい時にたまに使うけど、後で別個の関数に直したりする。
バイナリのサイズのコストもある
元ネタみたいにサイズを気にするケースで
わざわざprintf()使うのは筋が悪い
元ネタみたいにサイズを気にするケースで
わざわざprintf()が巨大なバイナリを吐く処理系を使うのは筋が悪い
>>281 秋月ジャンク…売れたのか…
500円が4000円ってボリ杉だろ
ちゃんと動くようにしてるから良いんじゃないの
そうだね。ソフト入れて価値が上がっているから、いいよね。
>>283-286 僅か数千円で新規にプログラム書く気になるか?
どう考えたらボリ過ぎになるんだ?
プログラムは使いまわしが利く
>>287 それは関係ないと思うよ。
そこに至るまでの経費や手間がかかってる
落札者が納得さえしていれば問題ない。
ボリ過ぎだろうがなんだろうが、押し売りしたわけでもないし。
その通り
そそそ、その通り。
新年 あけましておめでとうございます。
今年も「ルネサスマイコン総合スレ」を、宜しくお願いします。
2010年 元旦 1回目スレ立て本人
H8S 2368,2378の、SCIの章、シリアルステータスレジスタの各STATUS-bitの説明に
また、フラグのクリアはビットクリア命令を使用してください。と書かれています。
これ、BCLR #6,@0xFFFFFF8C ならイイけど、MOV @80:8,reg BCLR #6,reg MOV reg,@8C:8
だと、ダメなのですか?
受信エラー処理のとき、MOV @8C:8,reg AND.B #87h,reg MOV reg,@8C:8 とかで、
4つのステータスbitをいっぺんにoffにしようと思ったのですが、BCLRで1bitずつしないと
ちゃんとoffれないってこと? それだとクリヤ条件(1を読んでから0を書く)とも矛盾しますよね?
どなたか体験した人いますか?
とにかく一回読んでから0書き込みすればリセットできたはず。
295 :
293:2010/01/03(日) 17:58:01 ID:gGm0s7g5
ですよね〜。 したらあの註は何なんじゃいと思いまして。 私も過去のプロジェクトでは
LD mask STの方式でうまくいってたみたいなんですよ。
ノンマスカブル割込のサービスルーチンの中でそのレジスタをいじる環境では
atomicなビットクリア命令を使わないと問題が出るよってくらいの意味だと思う
297 :
293:2010/01/04(月) 03:54:14 ID:nl4ckptQ
おお!鋭い。私はImaskのほうだけ考えてました。H8SはEXRで割り込み制御を多重に
する使い方のほうが一般的ですものね。
H8-MLの内容が欲しいんだけど、
まとめてダウンロードする方法はないでしょうか?
AVRやPICに対するH8の利点として、IOポートが多いことが挙げられると思うんだ。
H8のIOポートをほぼ全て使用する電子工作とかないかな?
全部に LED でもつなげ。
>>300 >H8のIOポートをほぼ全て使用する電子工作とかないかな?
簡単だよ。
外部バスモードで、メモリ、PIOをつなぐ。
これでアドレス16本、データ16本、CS、RD, WRの3本使用。
外バスにすると、CS兼用ピンは自動的に入力しか使えないので、放置。
P7やP9などの入力専用ピンにはスイッチ、AD入力として、消費。
LCDを8bitモードで動かせば、data8本、RS, RD, Eで11本の消費。
直前状態の保持に、EEPROMをSPIで接続、これで3本。
プログラム書き込みとデバッグ用にSCI0,SCI1を使用。4本消費。
LCDにはロータリーエンコーダが付き物。外部割り込みで取り込む、これで2本消費。
今月号のトラ技の特集の、H8SXをC言語で使いたいと思っています。
安くて良いCコンパイラは何がありますでしょうか?
やはり、日立のHEWでやるべきでしょうか?
gccって選択もある。使ってみたいなら、gdlで検索する。
>>303 逆に、HEWで困る理由って何?
256k超えるような巨大ファームでも作るつもり?
HEW って太っ腹だよな。
V850 も 256KB に制限緩和してくれないかな。
トラ技増刊号のH8SXオシロ動画で
画面描画が秒単位で掛かってるのはどういう事かな。
フレームバッファ1画面しか持ってなくて
計算しながら書いてるにしても妙に遅い気が。
256kBまでフリーなのはSHだな。H8系は64kBだったと思う。
それでも趣味では十分だろうね。
309 :
774ワット発電中さん:2010/01/14(木) 06:19:01 ID:dYJdA0Uw
DIVXU.W R5,ER6 で、元の数がER6=1000000h、R5=100 だったりすると、商は16bitに
入りませんね。こういうとき答えはどうなるのですか?
マニュアルに書いてあるとおりの結果になるのではないでしょうか。
311 :
774ワット発電中さん:2010/01/14(木) 14:24:20 ID:dYJdA0Uw
ハードウェアマニュアルには、ER÷R→ER上余り、ER下商しか書いてないの。
何かそういうフラグ立つんじゃね
と適当言ってみるテスト
313 :
311:2010/01/14(木) 14:40:50 ID:dYJdA0Uw
あ、それで思い出した。フラグはNとZが立つと書いてあったから、正÷正でネガティブが
立ってたら、オーバーフローという判定はできるかも。
>>309 シミュレータで確認して、それから考えてみよう。
315 :
311:2010/01/14(木) 16:28:58 ID:dYJdA0Uw
シミュレーターでは、結果がオーバーフローする時にはER6は変化しませんでした。
ということは、割られる数が変化しないということでオーバーフローのチェックにしないと
いけませんね。実際に使う場面では、割り算が成立するような数値を入れるように注意して
使うことが殆どなので、一般的に使えるルーチンにしてチェックを入れることはしません。
>>311 プログラミングマニュアルの方に書いてある。
んで、それを信じるとシミュレータで試しても意味はないと思う。
それを貼ってくれませんか?
>>317 >なお、ゼロ除算またはオーバフローが発生した場合の結果は保証されません。
つうことで結果がどうなるかを気にした時点で負けなのです。
マニュアルの方にも事前にチェックしとけやと書いてありますです。
>>316 んだな。結果は保証されないと明記してあるなら、シミュレータと実機の結果が
異なっていてもアリだしな。
320 :
317:2010/01/15(金) 12:36:10 ID:CSZ106Yw
ありがとうございます。やっちゃってからチェックしようという態度そのものがいけないのね。
321 :
774ワット発電中さん:2010/01/15(金) 13:16:52 ID:/ljx9+xz
> 入りませんね。こういうとき答えはどうなるのですか?
ゼロ除算またはオーバフローが発生した場合の結果は保証されません。
>>320 それは問題ないと思うが、後の資料確認をサボったのがまずかった
323 :
774ワット発電中さん:2010/01/16(土) 15:45:13 ID:7s95TZGl
uartの初期化(SMRとBRRの設定)の後、起動までに1bit文の時間待て、という制約は
何から来ているのでしょうね? 実際に待たずに起動して不具合に出会った人居ますか?
ヒント:C
>>323 HDLなんかで自分でUARTを書いてみれば分かるよ
ちょっと待て、というのはわかるけど、それが 1bit分の理由が知りたい人
327 :
323:2010/01/17(日) 03:27:26 ID:z4GvVkIR
>>325 uartの制御は何度も書いてます。ふつうは製品なので、わざと違反して遊んだり
できないんですよ。 自分で考えたのは、
uartは起動したらステートマシンとして動作するが、単位クロックの切りのいい所から
始まらないと、startbitが正しく検出できないんじゃないか、とかですね。
他の人の考えも聞いてみたいと思ったもんで。
本当のところは設計に関与した人間にしかわからんのだから諦めるこった
ただ,自分でUARTを書いてみれば1ビット分は容認してもらった方が
楽だなと思えることはある。
329 :
774ワット発電中さん:2010/01/17(日) 04:14:05 ID:z4GvVkIR
では諦めます。 JSR func BEQ xxxx みたいな構文をcで吐かせられませんかね?
計算結果のコンディションコードがreturn時に立ってるのに、funcから戻った所でまた
返値を検査するコードが出るのがシャクなんですよね。
Cを使わなければ良いだけでは?
>>327 UARTをHDLで書いてみたら?というのに対してUARTの制御を書いたことがある、
という返し方はかみあっていないと思うが、本人がそれでいいならいいか。
>>329 C にはコンディションコードの概念が無いのだから、そんなこと気にするのが変。
どうしてもというならそこだけアセンブリブロックで書けばいい。
ただし他人からは基地が意と思われる。
効率を求めるならコンパイラなんか使わないほうがいい。
実際、コンパイラの吐いたアセンブラソースを見ると、
「なにそれ?ふざけてんの?」的なものがかなりある。
よく、「今時のコンパイラは並みの人間がアセンブラで
書くよりはるかに効率のいいコードを吐く」と言われるけど
それってどこの世界の話?って思ってしまう。
「Cで書いたほうがソースの可読性、保守性に優れている」
って言うんならわかるんだけどね。
「コンパイラの方が良質なコードを吐く」ってのには
いまだに賛同できない。
32-64bit RISCの世界じゃね?
たとえばH8の場合、アセンブラで書けば
サブルーチンとのパラメータの受け渡しに
ER0〜ER6まで使えるのに、
Cで書くとわざわざスタック渡しにしてくれたりする。
ここ登録いるんか…アプリケーションうんぬってなんだ
336 :
774ワット発電中さん:2010/01/17(日) 13:04:56 ID:z4GvVkIR
eepmov.b で、R4L=0で始めたら256byte移動できますか?
>>336 そういうありがちな疑問はマニュアルに答えが書いてあるから、
まずマニュアルを確認すれ。
そりゃ再帰に対応するにはスタックに積むのが一番安全だからね。
レジスタにハメ込んでいったら、かなりマヌケなCコンパイラになっちゃうでしょ。
339 :
336:2010/01/17(日) 15:41:24 ID:z4GvVkIR
>>337 実装がいいかげんだったら、そういう抜け道もあるかと思ったんですが、
シミュレータで試したところ、やはり実行前にもR4のチェックはやっているみたいです。
移動サイズはbyteで1〜255、wordで1〜65535でした。
>>338 明らかに再帰なんかしていない、それどころか他のルーチンを
一切呼んでいない末端ルーチンならレジスタ渡しでいいだろ。
その程度のプログラム構造の解析をしていないコンパイラは
手抜きと言われてもしかたあるまい。
一般に、リンクするまで再帰されるかどうか決定できないんだから
.objファイルには再帰に対応できるコードを出すのが常識だろ
>>341 >一般に、リンクするまで再帰されるかどうか決定できないんだから
だ・か・ら、そこがコンパイラの弱点なわけ。
人間がアセンブラで書いたらそんなの最初っからわかる。
俺はコンパイラそのものは否定しないよ。
>>332でも書いたとおり、ソースの可読性や保守性は勝る。
それにしても、FPGA用のVHDLコンパイラなんかは、
階層間をまたがる最適化を徹底的にやっている
(同じ値を持つフリッププロップは徹底的に同一化される)
のに、ソフトのコンパイラはなんで関数の階層をまたがる
最適化をしないんだろうね?
>340,341
leaf function 最適化でぐぐれ。今時は普通にやってるはずだが。
GNUや日立の評価版に過剰な期待をするなって話だろ
ゴリゴリに最適化を求めるならコンパイラにも金を出しなよと
leaf functionはgccでも普通にやっている。ただ,H8/SHへの
ポーティングでどうなっているのかは知らん。
ただ,こいつをやられると後からアセンブラで書いたプログラムから
Cの関数を呼び出すときにハマりそうだけどな。
H8S/2368,2378シリーズのマニュアル読んでいて思ったんですけど、
なんで使えないノーマルモードのベクタとかアドレス空間とかわざわざ書くんでしょうね。
素直にlongのベクタと16MBのアドレス空間だけ書いてくれればいいのに、
使えません、って断ってshortのベクタと64KBのアドレス空間をページ確保して
記述するのはノイズ以外の何者でもないような。
h8sxも
かといって品種ごとに微妙に違うつうのも地雷埋まってそうで嫌だ。
H8SX のブロック転送命令における制限事項
ってのがある。
gccだとpeephole2を使うと回避できた。
質問です。
H8SをC言語でプログラムしています。
うまく動かなくて、今日半日も悩んでしまいました。
「なんでそんなことするの?」という疑問が湧きました。
H8/3048ではそんなこと無かったんですが。
1 ポートアクセスの変数が入出力で異なっていた。
出力のとき P1.DR.BIT.B0 = 1;
入力のとき a = P1.PORT.BIT.B0;
なんで、こんな面倒なことするのでしょうか。
2 周辺モジュールの電源が、デフォルトoffになっている。
使うときに、onにする必要がある。
デフォルトonでいいと思うのですが、なんでデフォルトoffなんでしょうか?
今考えてもムカムカ、イライラしてきます。もう忘れないと思いますけど。
書き忘れました。
上記の1の場合、P1.DR.BYTE |= 0x24とかやったとき、
PORTとDRでレジスタ(番地)が別だとすると、
リードモディファイライトは正しくできるのでしょうか?
そんなことするなら、はじめから1つのDRだけでI/Oできるようにしておけばいいのに。
と思いました。
前に同じこと聞いてた人がいたな
>>352 あんときはポートのレジスタ分離だけじゃなかったっけ?
しかし電子回路を少しでも知っていれば出ない疑問な気もするなあ。
んー。日立製じゃなくても外部機能がOFFから始まらないマイコンってあるのかな?
>>353 >外部機能がOFFから始まらないマイコンってあるのかな?
外部機能って何のこと?
>>350の2つの疑問は、H8/3048をやってから、H8Sをやると、ビックリするよ。
3048などは、入出力ともにxx.DR.BIT.Bxでいけるし、
UARTやDAなどは、始めから電源onのままだよ。
で、Cとかアセンブラとかには関係ないよね?
>>354
>>355 内部モジュールって単語が出てこなかった。>外部機能
CPU+周辺っていう8ビット機のイメージで居るから…。
まあともかく、普通無効から始まるよね?っていう。
機能無効とユニット全体無効(OFF?)が分離してるかどうかはさておき。
設計思想が共通じゃないと困るってのはあるけど、H8とH8Sは世代もモノも違…うよね?
で。
アセンブラだとマイコンの設計思想が判ってないと使えないとか言いたいのでなかろか。
どっちかってとアセンブラってよりマシン語だな。これ。
命令コードとレジスタの割り振りとかのコア設計の考え方がどうのっていう…。
>>355 Cしか出来ない奴って、データーシート読む癖がほとんんど無いんじゃ無いかな。
アーキテクチャが変わった所で隠蔽されて、初期化ルーチンなんて何処かからコピペするおまじないと思ってるんだろ。
それでも動いてしまう事もあるしね。
理解してプログラムしてるか、たまたま動いてるだけかの違いであって、アセンブラと対比したい訳じゃない。
単に、「Cしか出来ない奴」
もしくは、高級言語でも良いけど。
いや、PORTとDRが別になっていてもいいけど、
3048のように一緒でもできるのに、なぜH8Sは別になっているのか、
その理由を知っていることが大事だと思う。
つまり、
H8/3048の頃は、○○なので、同じで良かったが、
H8Sの頃には、○○という理由で別々にした、あるいはせざるを得なかった。
だから、両者の間には○○という差があるので、使うときには注意が必要、とかね。
コピペして動けばOKとか、単にそいつがいい加減なだけ
入出力が分かれてた方が便利だからでしょ
入力だったポートを出力に切り替えたときに値が不定では困るし
なんのこっちゃ。切り替えるときに然るべきデータを出力すればいいやん。
不定ではないな。
いままで入力で読めるレジスタだったなら、入力されてる値が入ってるわな。
同じレジスタで問題がある構成は…
入力から出力に切り替える直前に外側が不定(レジスタも不定)でありながら
出力に変えた瞬間にはもう不定ではダメとかいう構成の場合…少しは外側考えて作れ、という気もするほどアレだが。
なぜDRのみの方式と、DR/PORTの方式の2通りあるのか、俺も気になるなぁ。
あと、他のマイコンもどうなっているんだろうか。
DR方式を理解出来ないで使ったところがあったんじゃないの
>>363 78K0/Kx2とかサイトでマニュアル見られるね。
Cで書くときは式の左右どっちでもP1とかでいいけど
マニュアルには出力だけ転送レジスタが挟まってたりするねえ。
コンパイラが自動判断するんだろうか?
わりと脱線だな。
超初心者な質問をお許しください。
使用マイコン:R8C tiny シリーズ
while(1)
{
LED点灯
LED消灯
}
上記のような感じでプログラム最上層でループさせると0.5秒ほどで
LED点滅(実際にはほとんど点滅しているようにはみえませんが)が
止まってしまいます。(マイコンの動作が停止した?)
WDTは非動作なのに何で停止するのでしょうか?
367 :
774ワット発電中さん:2010/01/29(金) 02:09:11 ID:SRzoUSon
あげさせてください。
点灯消灯の時間はどうやって作り出しているの?
時間は適当です。
実行時間分のみのパルス幅です。
点灯消灯はオシロで計測しています。
クロック設定してる?
俺トラ技の使ってたけど、PC接続時は設定しなくても最速(20MHz)?クロックなのに、スタンドアロンは設定しないと起動直後のクロック(15k?)になっちまう
クロックは設定済み、スタンドアロン使用です
全ソースを晒したら
もう1回実行したら最初は点くの?=LEDが切れたとかはない?
WDTがデフォで作動になってたりしない?
リセットかけて実行すると毎回、何回か点滅します。
LED切れは無いです。今日やってわからないときはソース晒しますので
アドバイスいただけると幸いです。よろしくお願いします。
>>373 WDTが設定されてたらリセットがかかって、プログラムの最初からやりなおすので
LED点滅が停止したりはしないですよね?
WDTにマイコン停止みたいなモードがあったりするのでしょうか?
ちょっと躓いたからってすぐ他人を頼るようじゃ成長しない
基本に立ち返ってちゃんと検証するもんだ
点灯と消灯が均されて薄暗く見えてるってことはない?
端子のレベルをオシロで見てオンオフを繰り返してればLEDがそういう特性だっただけで
プログラムは動作してることになるね。
378 :
774ワット発電中さん:2010/01/29(金) 17:56:00 ID:5JsSbDOG
smalight
ソース晒したほうが早いと思うんだけどな
まず、その while ループの中でWDTカウンタはちゃんとクリアされてるよね?
それから、カウンタがオーバーフローしたときの動作は割り込みかリセットか選べるけど、
ちゃんとリセットに設定してる?
割り込みにしてるなら、その処理を書かないとダメだよ
↑はウォッチドッグを使っちゃってたらの話ね
ウォッチドッグってなんでそう呼ばれているのでしょう
番犬
WDT以外だと、なにか割り込み生きてて、ベクタが設定されてなくて遠いところに旅立ってるとか。
さておき
リセット→ポート初期化まで点灯→ポート初期化で消灯→ループに入って高速明滅で点灯(のように見える)
この流れだ0.5secというのはどうか。
まっ,その手の現象でまず疑うのは電源とリセット信号
割り込みフラグのクリア忘れってのは、どう?
386 :
366:2010/01/30(土) 13:38:42 ID:1iqPBp6L
366です。アドバイスいただきありがとうございます。
いろいろ調べた結果、割り込みを禁止にしていると問題が発生しないことがわかりました。
割り込みを許可にすると割り込みがかかった瞬間にプログラムカウンタがクリアされ、
プログラム動作が停止しました。割り込み先のベクターテーブルはちゃんと設定しているつもりですが、
どう考えても割り込みのジャンプ先に問題がありそうです。いまだ解決にはいたっていませんが。
どの割り込みを使ってるかもわかんないでやってるんだ
一応使わない割り込みはマスクし、必要なものだけ設定しているのですが、
よくわかりません。あとは自分の力で頑張ってみます。
みなさまいろいろとありがとうございました。
SPが二つあるんだけど、両方設定してるよね
SPってなんですか?
スタックポインタのことだったんですね。
2つあるんですか!知らなかった。調べてみます。
RX200って、いつの間にか32bitマイコンになっていると思ったのですが、実質ヤメなのかな
関係ないけど、gccはvolatileな変数だとbit命令を使わんからね
>394
情報ありがとう。
rx.h rev.155677 のログをみると、このリビジョンで RX200のCPUタイプが追加されてますね。
もともとは命令セットも違うものだったんじゃないかと思っていましたが。
たとえが悪いかもしれませんが、
M32C/80 ができて、 M16C/60が作られず、M16C/70止まりのような気がします。
397 :
774ワット発電中さん:2010/02/03(水) 00:46:00 ID:C+O4LXoR
SHの入門として秋月のSH7144F開発ボード買おうと思っているのですが、SPIモジュールがないって本当ですか?
SDカードアクセスが楽にできないのはつらいなあと・・・
399 :
774ワット発電中さん:2010/02/11(木) 16:21:51 ID:I5BqFRX9
秋月のマイコン
AKI-H8/3664Fを使用しています
あるピンの状態でプログラムを切り替えることをしたいと思っております
例えば
7番ピンと8番ピンにトグルスイッチをつけ
プログラムの開始時に7,8番ピンがショートの状態であるなら関数Bを実行
ショート状態でないなら関数Aを実行という感じのものです
H8 3664 ピンの状態 外部入力などでググってみたのですが
プッシュスイッチを押した際に割り込みが行われるというようなものしか見つけられない状態でいます
あるピンがショート状態にあるかないかを判断するための検索ワードや
こうすれば良いのではというものがありましたら教えていただけないでしょうか?
よろしくお願いいたします
ポートが0か1かで判断すればいいのでは
401 :
774ワット発電中さん:2010/02/11(木) 16:49:46 ID:I5BqFRX9
ありがとうございます
入力設定にしピン2個をショートさせて状態が1になるか0になるか見ようと思います
7番ピンと8番ピンを繋げる理由がわからない。
ある入力ピンをプルアップしておいて
そのピンとGNDとの間をスイッチで
OPEN/SHORT切り替えればいいんじゃね?
ハードもソフトも?な、とんでも君?
そりゃぁ検索しても出てこんわ
一個のスイッチを読み込むためにピンを2本も使うヤツは滅多にいない
「キーマトリクス」で検索してスイッチ一個だけ実装汁
407 :
774ワット発電中さん:2010/02/12(金) 17:09:58 ID:edkY1RH3
>>403 >>404 >>405 >>406 そのレベルに当たると思います
今までは出力にして5Vを流してLEDが光るぜ!と遊んでいただけだったので
ポートの構造などを考えてもいませんでした、、、
教えていただいたURLや検索ワードで何か道が開けそうです
質問に答えていただきありがとうございました
がんがれ!
そのレベルでなんでマイコン買おうと思ったのか聞きたい
冷やかし半分、興味持つきっかけへの興味半分で
顧客の機器でそういう遊びを全てやってしまった俺はラッキーだったんだな。
R8Cの書き込みが少ないですけど、R8Cってどうなんですか?
412 :
774ワット発電中さん:2010/02/13(土) 10:46:11 ID:fpjly9HB
工業高校の電気科の教師してますが、真空管の動作電圧って
ドコとドコの端子間の、信号ORバイアスの事か分かりません
。質問されて困ってます。
ちなみに、馬鹿にされて座学ははずされてますので。
最近では、実習すらあやしくなりそーですなw。
2ちゃんねるで馬鹿にされてしまうと、行き場がなくなり
しまいには生きていけいけなくなりますから、よろしく。
>>411 ちっちゃくて使いやすいとは思うよ
ただ三菱系なので、H8とかに慣れてるとあれ?ってのがたまにある
情報も多くはないな
個人的には可愛いからおすすめなんだけど
>>413 キャリーの立つ条件が反対とかありますか?
>>412 ここはルネサス製マイコンの話をするためのスレ
誰も回答しないよ
>>415 三菱系も統合された後のものだから、ライセンスはルネサスだと思うんだが?
てか、日立マイコンってなら違うのは判るが、ルネサスはソレも含めてルネサスじゃないの?
あ。すまん、参照先が違ったわ。
>>411に対してかとオモタ。
忘れて。
>>417 ワカル。俺もそー思ったw
>>411 R8C良いよ。とても素直な設計だと思う。環境も良いし、資料は全部webで手に入る。
お勧めはオークス電子OAKS製品。デバッガのKD30最高。
教えてください。
RS232のフォーマットの中に、stop bitというのがあります。
defaultが1bitで、「時間が稼ぎたいよぉ」というときに2bitを使うのは、わかります。
が、1.5 stop bitというのがあるらしいのですが、どんな時に使うのでしょうか?
単に1と2の中間ってことだけでしょうか?
受信側は1bitにしておくのが基本。そうすれば2bitも1.5bitも受け取れる。
受信側の負担を和らげるために、送信側で2とか1.5にして時間を稼ぐ。
今の高性能マイコンではほとんど無意味だけど。
上記を実現するためには送信と受信で別のCHを使わなくてはならないが、
1つの機器と送受信するには1個のCHでやりたいのがふつうだから。
1つのCHで受信側と送信側でstopbitの長さを違う設定にできる石は、俺は知らない。
連続でデータを送受するとき、ケーブルが外れたりとかで、おかしくなったときに
stop1bitだとデータが変になったりするけど
stop2bitだと化けることが少なくなる。
>>419 異常検出用。
ストップビット長チェックしておいて,規定の長さ分無かったら
異常と判断して再同期をかける。
試しに適当なデータ列を送った時の波形を描いてみて,
データの途中の'0'をスタートビットと勘違いしたとしてエラーが
起きるタイミングと回復動作を考えてみると良い.
スゴイ。
1.5bitって、そういうことだったのか。
ちょっと感激。
なるほどぉ。
たしか昔日立にクソ真面目なCPUがあって(64180だったかな)、
ストップ1bitにすると2bitで送信した場合に受信できないのがあったな
>>424 それって送受信逆でフレーミングエラーになってただけじゃないか?
次のスタートビットはストップビット後にいつやって来るかは判らんのだし
SHをサーバちっくに使ってて、今はARP、IP、ICMP、UDPまで実装したんだけど
TCP、httpをのっけたいんだけど、わけわかめ
参考となる本とかおすすめサイトを教えてえろいしと
Linuxにしたほうがラクそうだな
すげーな
やっぱOSのっけるほうが早いっすか
コツコツと自力プロトコルスタック?を書いていたんすけど、tcpで完全に止まってしまったです
HOSとかlinuxとかMES辺りが候補としてあげられそうなので、そこらも含めてもちっと考えてみます
tcpは状態遷移が難しいからね
uIP とか使うのは?
>>429 OS載せるのは手っ取り早い面もあるが、無駄にマイコンがでかくなるから
気力があるなら自前がいいと思う。
俺はPICにアセンブラで実装したけど、一旦作ってしまえば
物理層を普通のシリアルにして、馬鹿ハブ相当のスター結線するだけで
DIPの小容量マイコン同士が通信出来るし、そのうちの一台にLANへのゲートウェイを設けて
携帯ブラウザから気温変化のLOGを見たりIOしたり自由自在。
今出先なので、あとで参考文献書くかも。
すごすぎw
膣圧計に仕込んで擬似セクースは
435 :
426:2010/02/17(水) 19:30:05 ID:lu3ZEoLF
今日は、軽くOSを調べてみました
けど、プロトコルとはなんぞや?ってことで、理解を深めるということが目的なので
自力実装を最後まで完遂してみようと思います。
その後にOSを載っけて、みたいと思います
>>432 参考文献を教えて頂ければ幸いです
のちに、日本のリーナスと呼ばれる人の
記念すべき初めての投稿であった。
437 :
774ワット発電中さん:2010/02/18(木) 05:08:07 ID:o9HZKKyH
昔はNE2000互換ボード使って実装してみる!なんていう特集も定期的に
組まれていたりしたんだけどね。
IPまで自力で実装できたならTCPはそれほど難しく無いと思うけどもな。
ISOの7階層モデルの概念だけさらっと読み流せば理解できるかなぁ
「イーサネット TCP/IP」なんてキーワードで探せばいろいろ出てくるんじゃないかいな
参考文献というか、RFCは読んでるのかねえ
TCPで詰んでたらなんもできないでしょ
強者ばっかりなスレですねw
すごすぎるw
向こうに飽きたのか…半端な
>>438 「シェークにセット」でよろしいですかぁ?
あと、コーラのSと、テリヤキチキンバーガー お願いします。
H8マイコンを勉強し始めたのですが、早速躓いてしまい困っています。助言、アドバイスなどあればお願いします。
H8/3687を使って割り込み機能を試してみようとしているのですが、グローバル変数の操作がうまくいきません。
スイッチのオンオフでIRQ_1の割り込みを発生させてグローバル変数rgpに1を入れたのですが、割り込みからの復帰後、mainのループでrgpが0のままになっている状況です。
IRQ_1のfor文で割り込み発生後にrgpが1になっていることは確かめることができたのですが、main文に戻ると反映されません。始めはrgpがvolatileで宣言されていなかったのでこれが原因かと思ったのですが、修正しても変化ありませんでした。
ソースです。
ttp://loda.jp/okufa/?id=151 pass H8
割り込みベクタに関しては理解しているか? 0番地から数十ワードはいろいろな
割り込みに対応する関数のポインタを設定しておかなければいけないんだが、
貼られたコードではそういうベクタのうち、IRQ1と2のためのベクタがどうなっているか
判らない。あと、main loopが始まる前にset_imask_ccr((_UBYTE)1); で割り込み許可
してないと、SW操作で端子にエッジが入ってもCPUは割り込みを受け付けないぞ。
447 :
続き:2010/02/25(木) 06:13:04 ID:nitvR3p6
開発環境にへうを使ってるなら、intprg.cというファイルが、割り込みベクタを解決する
ファイルだから、その中のIRQ1,2の所を、自分の割り込みルーチンを呼ぶように
直すといい。 コマンドラインでコンパイルしてるようなら、
#pragma memory=constseg(RESET)
int reset[] = {0x7A07,0x00FF,0xC000}; /* MOV.L #0FFC000h,SP */
#pragma memory=constseg(VECTOR)
void (*const vector[])(void) = { /* 割り込みベクタ部 */
// 無い割り込み(reserve)の箇所を(-1)にするのは、FFの書き込みが速いから。
(void*)&reset, /* 0 : reset vector */
(void*)(-1), /* 1 : reserve */
(void*)(-1), /* 2 : reserve */
(void*)(-1), /* 3 : reserve */
(void*)(-1), /* 4 : reserve */
nullint, /* 5 : TRACE */
nullint, /* 6 : Direct_Transition */
・・・ こんなコード書いて、VECTORというセクションをLINKで0番地に配置する。
448 :
445:2010/02/25(木) 08:58:20 ID:5Nn5sqvc
HEWを使用しています。intprg.cの記述はこのようになっているのですが、正しく記述できていますか?
#include <machine.h>
//extern void int_irq0(void);
extern volatile void int_irq1(void);
extern volatile void int_irq2(void);
#pragma section IntPRG
// vector 1 Reserved
// vector 2 Reserved
// vector 3 Reserved
// vector 4 Reserved
// vector 5 Reserved
// vector 6 Reserved
// vector 7 NMI
__interrupt(vect=7) void INT_NMI(void) {/* sleep(); */}
// vector 8 TRAP #0
__interrupt(vect=8) void INT_TRAP0(void) {/* sleep(); */}
// vector 9 TRAP #1
__interrupt(vect=9) void INT_TRAP1(void) {/* sleep(); */}
// vector 10 TRAP #2
__interrupt(vect=10) void INT_TRAP2(void) {/* sleep(); */}
// vector 11 TRAP #3
__interrupt(vect=11) void INT_TRAP3(void) {/* sleep(); */}
// vector 12 Address break
__interrupt(vect=12) void INT_ABRK(void) {/* sleep(); */}
// vector 13 SLEEP
__interrupt(vect=13) void INT_SLEEP(void) {/* sleep(); */}
// vector 14 IRQ0
__interrupt(vect=14) void INT_IRQ0(void) {}//int_irq0();}
// vector 15 IRQ1
__interrupt(vect=15) void INT_IRQ1(void) {int_irq1();}
// vector 16 IRQ2
__interrupt(vect=16) void INT_IRQ2(void) {int_irq2();}
// vector 17 IRQ3
__interrupt(vect=17) void INT_IRQ3(void) {/* sleep(); */}
// vector 18 WKP
__interrupt(vect=18) void INT_WKP(void) {/* sleep(); */}
// vector 19 RTC
__interrupt(vect=19) void INT_RTC(void) {/* sleep(); */}
// vector 20 Reserved
// vector 21 Reserved
// vector 22 Timer V
__interrupt(vect=22) void INT_TimerV(void) {/* sleep(); */}
// vector 23 SCI3
__interrupt(vect=23) void INT_SCI3(void) {/* sleep(); */}
// vector 24 IIC2
__interrupt(vect=24) void INT_IIC2(void) {/* sleep(); */}
// vector 25 ADI
__interrupt(vect=25) void INT_ADI(void) {/* sleep(); */}
// vector 26 Timer Z0
__interrupt(vect=26) void INT_TimerZ0(void) {/* sleep(); */}
// vector 27 Timer Z1
__interrupt(vect=27) void INT_TimerZ1(void) {/* sleep(); */}
// vector 28 Reserved
// vector 29 Timer B1
__interrupt(vect=29) void INT_TimerB1(void) {/* sleep(); */}
// vector 30 Reserved
// vector 31 Reserved
// vector 32 SCI3_2
__interrupt(vect=32) void INT_SCI3_2(void) {/* sleep(); */}
void INT_IRQ1( void )
{
int_irq1( );
}
こんな関数になってないか?
グローバル変数の宣言に問題があるんじゃねーの?
割り込み関数ローカルになってるとか。
// vector 15 IRQ1
//__interrupt(vect=15) void INT_IRQ1(void) {int_irq1();}
// vector 16 IRQ2
//__interrupt(vect=16) void INT_IRQ2(void) {int_irq2();}
// vector 17 IRQ3
コメントアウトしないと
452 :
446:2010/02/25(木) 17:08:00 ID:nitvR3p6
>>448 intprgの中から自分のint_irq1,2を呼ぶように書いてあるのね。コール階層が
1段ムダになるけど、それは間違いではない。 449〜451はノイズだから気にしないで。
自分のコードに、これ↓を書くのが間違いだ。
#pragma interrupt(int_irq1)
#pragma interrupt(int_irq2)
これを書くと、その関数がRTEで終わるようにコンパイルされる。
でも、RTEで終わるのは、INT_IRQ1()とINT_IRQ2() で、小文字のほうはRTSで終わって
大文字の関数の中に戻らないといけない。
あと、ふつうは hwsetup.c で、内臓レジスタ類を初期化するよね。そのあと
main()に飛んでmain loopが始まるんだが、レジスタ類は全部デフォでいいか確認した?
そこまでクリヤできたなら、set_imask_ccr(1)で割り込みを取れるようになるはず。
今日発売のインターフェースによると、
2010年6月号にSH-2Aマイコン基板が付く。
クロック100MHzオーバー
RAM 1Mバイト
続報は5月号に掲載予定。
454 :
446:2010/02/25(木) 17:19:53 ID:nitvR3p6
確認すべきこと:LINKMAPがdebugというフォルダに作られるので、それで
0番地から$VECTnnというセクションが並んでいる所の15,16番目を見る。
$VECT15=0020、$VECT16=0022番地だよね。MOTファイルの0020と0022
番地の中身がINT_IRQ1とINT_IRQ2のアドレスになっていることを確認。
デフォでLINKしたら08xx番地になってるとおもう。
INT_IRQ1の中身は、push R0〜R2 JSR int_irq1 pop R2〜R0 RTE で終わり。
int_irq1()は自分のlstで確認できるよね。 #pragmaを取り除き、関数がRTSで終わる
ことを確認する。
実用品などスマートなプログラムを作るときは、intprgの中の__interrupt (vect=nn)
の行ごとコメントアウトして、自分のプログラムに__interrupt(vect=nn) int_irq1(void) {
と書けば、$VECTnnは直接自分の関数をポイントするようになるし、関数もRTEで終わる
hewは割り込み処理の書き方が変わったのね
>>453 Ram1MBも付く時代になったのか
ひょっとして、これプログラムonRAM CPUなんか
なら、ほとんどPCってイメージだな
RAMにコード置くなんてH8モニタの頃からやってるだろ
画面さえつければPC98より性能上に・・・
>>458 i686と同等性能らしい
で、SH-2Aの実行形式はリローケータブルのみ
内臓ブートローダーが自動的にloadデバイスを探して
プログラムをらむにloadしてくれるんだ
460 :
774ワット発電中さん:2010/02/25(木) 22:53:03 ID:vKZkonf7
>>458 SH-2Aクラスならソフトだけでビデオ信号出せるんじゃね?
(つーかPICで出来るんだから出来なきゃおかしい)
ビデオ出力に貴重なリソースを減らされてはかなわんよ
463 :
774ワット発電中さん:2010/02/26(金) 08:11:04 ID:tW3TVSOD
激しく吉田基板の余寒…>SH2A
人柱待ちやな
464 :
446:2010/02/27(土) 05:56:55 ID:KK/GIasK
>>448 上に書いたことをクリヤしてもまだ動かなくて悩んでるかもしれないので。
hwsetupで、必ず設定すべきレジスタは幾つかあるとおもう。IRQxを使うなら、
「IRQの何番を許可する」 を指定するレジスタIENR1があったはず。割り込み機構の
説明の章に載っている。set_imask_ccr(1) の前にhwsetupの中でそれをsetしないと。
>>463 吉田大師範以外ありえない
大師範はゆとりに現実を教える最高の師範
このような師範がいまの老いも若きも男も女もゆとりだらけの日本には必要
最近、JAL、トヨタ、五輪でゆとり特性激烈発揮中の日本
大師範があたえた課題を解決できないようじゃ適性無しだから別なことにしたほうが良い
某誌によるとデバッグ用ビルドのみ使用とあるけど
最適化しないでリリースすんのかね?
マイコン&ソリューションセミナ行ったひといる?
RXとかSuperHのベンチマーク比較の相手が78K0とかV850ESってのも、、、
すまん、どうしても解決できないから教えてほしい。
tiny35使ってるけどAD変換がおかしい。
ADの入力ポート切り替えの時に入れるウェイトって
for(i=9;i<10;i++)でいいんだろか。
値がやたらおかしい。回路が悪いのかなぁ。
でも電圧は正しく入力されてる様子。
>>445 俺も最近ほかのマイコンからR8来たけど、基本同じ。
割り込みでコールする関数の関数名の前に
#pragma interrupt void hoge(void) (vect=xx)
void hoge(void)
{
NOP();
}
のように書く。Hew4の最新のR8Ctinyではこれでおk。
vectの後の番号に非常に意味があって、これは割り込み毎に決まってる。
この番号はデータシートを見るか、自動生成コードの番号を見る。
こうすると、この番号の割り込みが許可されると、
割り込み条件が整うとこの関数に飛んでくる。
自動生成コードの場所の関数はコメントアウトしておかないと
2箇所に関数ジャンプ先が作られてることでエラーになるので注意。
そういや、割り込み関数のプロトタイプ宣言のところに#pragmaつけておくと
実際の関数の先頭には不要なのかな??
R8のデータシートはなぜ各機能のところに割り込み許可のレジスタを書かないのか謎。
普通割り込み使うから、機能別のレジスタ説明の場所に書くべきなのに
なぜか割り込み説明だけ固めてるせいで、読みにくくてかなわない。
>>469 for(i=9;i<10;i++)
これって何?
for(i=0;i<1;i++)
とはナニカ違うの?
あと切り替えないでのんびり採ってみてAD値はマトモだったの?
>>472 for(i=0;i<10;i++); の間違いでした。
切り替え無しでは試してないけど、公式のコード通りに
ちゃんとやってるから問題無いはず。fADも2MHzにしたし。
わりと凡ミスをやらかす俺的には、「コード通りにちゃんとやってる」で追求ヤメちゃうのはなかなかスゲエと思。
まあ俺がマヌケだから無駄な工数が発生するんだ、といわれればその通りだけどさ。
volatile付けたか?
横着しないで信頼できる時間待ち関数くらい作れ
そんな意味の無いコードは最適化で消されてしまう可能性もある。
最適化禁止して、アセンブラコード調べてみな。
そして、一所懸命ステート数を勘定する…っと。
切り替え後のA/D値は変な値が出ることがあるので、読み飛ばすのが正解かも
>>472-477 解決した。GNDが浮いてた。ごめん。
でも1回読み飛ばすって久々に聞いた気がする。
2LSBくらい揺れるのが気になってるから試すかも。
普通に入力ソースが汚い気がする。
>>480 うむサンクス
だけど使ってるのはR8Cなのと
ADSTビットはAD変換完了で0になるまで待ってるからそれはない。
おそらく
>>479 の指摘通りだけど、手の出せない回路屋の仕事なんで
オーバーサンプリングで安定させるくらいしかない。
>>481 うちではADの移動平均とるのがデフォだな。
エンジンのそばとか、そーいうとこで動いてるからだけど。
移動平均も異常な値には引っ張られるのでは?
それに真面目にやるとメモリを物凄い食う
僕は、移動平均でも、各世代の値に浮動小数点で係数を掛けてる。
世代毎の係数は、+もあれば-もある、変なの。-の係数では平均じゃない感じ。
FIRフィルタみたいな
>>483 うちの感覚だと、とりあえず、パルスや波に影響されなければいいって感じだな。
だいたい1〜5ms周期で、8〜32回分ぐらいの移動平均。ADのサンプル周期は使ってない。
いまんとこコレで問題でたことはないな。
どうしてもどうにもならないものは、ハード屋さんにオマカセよ。
トヨタの中の人はここにはいないな
>>488 今忙しくて、2chなんか・・・・やれません
もうやれるだけやったんだからヒマなんじゃね?
いや、今回の件でトヨタグループは、一丸となってゼロから出直すので、
4月からの仕事は超忙しいんじゃないの?
492 :
774ワット発電中さん:2010/03/08(月) 12:25:07 ID:wKiwvIEP
r8使っているのですが書き込みはできても動きません。
秋月のボードに同じプログラムを書き込んだ場合は動くのですが。
なにか考えられるでしょうか。
可能性は低いと思うけど、
キ ミ の プ ロ グ ラ ム ミ ス だ
>>492 動かないのは何だ? 自作?
同じCPUに同じプログラムをいれて動く・動かないがあるなら
CPUの足を全部疑えばいいんでねかしら?
>>492 秋月のボードって、発振子とかなんだとか載ってるの?
単独のR8Cにはそういうのを付けていないんじゃない?
方角が悪い
基板の北側には黄色い部品を・・・って風水師かよ!
違うよ。 西には黄色だね
499 :
774ワット発電中さん:2010/03/10(水) 04:00:15 ID:c5Im4gxj
H8Sシリーズで、SYSCRで入力CLKを分周する機能がありますね。
入力の最低が8Mだから、もっと低いCLKで動作させたい時にこれを使うのでしょうが
私が想像できる理由は消費電力だけです。 他にどんな理由があり得るでしょうか?
>>499 消費電力が減るのは大きな利点じゃん。
電池で動く機器の設計したことないのか?
教えてください。
Cでソフトを組む時、
aaa.bbb.BYTE = 0xff; と記述するときには、IO定義ファイルというのが必要らしいのですが、
トラ技付録のH8SX/1655のIO定義ファイルが見つけられません。
Renesasのページを探し回ったのですが、無いみたいなのです。
ご存じの方教えていただけないでしょうか?
503 :
774ワット発電中さん:2010/03/10(水) 16:02:36 ID:pmO5I1Og
そうです。そのヘッダファイルです。
volatile....で自分で書けばいいんですが、大量ですし。
H8SX/1653 1657などはあったんですが、1655だけ・・・・
505 :
774ワット発電中さん:2010/03/10(水) 17:00:39 ID:pmO5I1Og
>>504 トラ技のサンプルは1658を使ってるみたいだよ。
昔は日立やルネのページにあったけど、今はHEWで自動生成になったから消えた。
HEWでプロジェクト作ればファイルの中に勝手にできる。
英語のサイトのほうには出てないかしら?
日本語ページはかなり対応遅いような…
サンプルはあるみたいだけど、それから抜けないかしら?
>>506 そうなのかー
それはそれで落ち着かないな…
あ、「I/O定義ファイル」にチェック入れないとできないか。
510 :
774ワット発電中さん:2010/03/10(水) 18:03:33 ID:y2ro8vJx
プロジェクト->ファイルの追加で
iodefine.h
を追加する
勇次郎なら一人で突入できる
おまいらR8で作って欲しいものあれば作ってやんぞいってみろ
インベーダーゲーム
乙、みんなそれはちと面倒というもんだろ
TaSCANでリプロするためのミドルウェア。
>>504 俺は日立純正、HEW+KPIT両方にある1653で書いてるよ
つーか、コンパイラ試用期限切れるとH8SXって使えんのかなぁ
VisualC#で作成したGUIアプリから、char型のデータをH8/3052に送信。
H8/3052はデータ受信時に割り込みをかけて、受信した文字をLCDに表示。
また、受信した文字に応じて、複数のLEDの点灯/消灯を切り替える。
こんなプログラムを組んで、ちゃんと動作しているのを見てwktkしてます。
自分のように趣味でちょこちょこと弄っている人にオススメのマイコンってないですか?
下記の条件に該当するものでお願いします。
・ルネサス製(国産品が使いたい!)
・USBで書き込み可能
・小ピン(H8/3052はピン数が多いけど、全部のピンを一度に使い切るケースはあまりないんじゃ?)
・開発環境が無償
秋月のキットでH8の30xxの奴が何種類かあるでしょ?R8Cのもあるかな?
そういうのじゃダメなの? もっと小っこいので、PICとか。こっちはASMしかないが。
あ!>・USBで書き込み可能 ・・・ここがネックか。日立系はuart書き込みだった。
>>524 R8CならE8aを使えばRESETとMODEとGNDさえ配線すれば書ける。
オンチップデバッガも使える。
VCCはつなが無くても基板にVCCかかってれば良い。
R8Cなら小ピンからあるし速い。
USBというのはライタがUSBなのか、チップにUSB機能があるのかどっち?
>>526 チップにUSB機能があるという意味です
>>527 そんなものは滅多にない。
>>524 に挙げている条件なら、78K も割とオススメだが、
スレ違いなのでこれ以上は言わないことにする。
>>528 これ誰が設計なんだろうな
またGNDピンが2本だけとかだったりするのかな
HEWのメニューとかヘルプは日本語化できるのでしょうか?
StarterKitのCDからV4.0を入れてアップデートでV4.07にしました。
普通に日本語化されてるよ
インストール時に選択するのか日本語版インストーラがあるのかは忘れた
533 :
744ワット発電中さん:2010/03/25(木) 02:04:20 ID:0bgw0+ap
>>532 昔は日立のマイコンばっかり
今はARMかMIPSばっかり
HEWなんて忘れちまった。すまん
H8用のコンパイラ、DOS版のch38 1.0Dとか使ってるの私くらいだろうな。
DOS版のMIFESでコード書いてるんだぜ。
俺はVZだ
俺はCW
俺はWordStar
俺はedlin
OREHA WORDMASTER
最近 R8C/Tinyの仕事が増えている(ちなみにソフト屋)。
ハード屋に言わせると安くて便利らしい。
それにしても楽な石だ。もっとも嫌いなスタートアップ部をウィザードで作ってくれて、
しかもそのまま殆ど問題なく動くってのは楽だ。
で、あれだな。もう 10回くらいクリックしても構わないので、タイマ使いますか?
割り込みレベルはいくつですか? 周期は? とか uart0使いますか? ボーレートはいくつですか?
とか聞いてくれて雛型吐き出してくれると完璧なんだが…楽し過ぎ^^;
ソフト屋なら作っちまえよ。
PHPあたりで作ってWAB公開してくれればアクセスはしてあげる
R8C/2Dのマイコン使ってるのですが
ビルドエラーしていないのに、リセット後実行しても起動しません
ちなみに1個ずつステップインしたら、ちゃんと起動しました
何が不足してるか、誰か分かる方いらっしゃいますか?
>>540 他のマイコンなら結構充実しているのあるけどな。
>>542 オシロ持ってる? テストポート出力しながら見ていけば何か分かるよ。
spが二つ?
>>540 sango だっけか ルネサス提供のツール。
ためしてみた?
>>542 情報不足だなー。 R8C/2D のマイコンて秋月の基板?それとも独自基板?
デバッガは何を使っている?
リセット後実行というのは、デバッガを接続して、デバッガから実行したの?
それとも、デバッガなしで起動してってこと。
ちゃんと起動している/いない はどう判断した?
E8aとかICEを使っている場合であれば、関係ないけど
R8CをシリアルI/Fを使ってHEWてデバッグしている場合、デバッガの使用/未使用で
メモリマップを変更する必要がある。
でもなー、それだとデバッガが使えなくて悩むと思うんだよな。
>>543,
>>547 ありがとうございます、まだまだ半人前ですが試してみます
ちなみにマイコンはルネサスのスターターキットの奴です
起動してるかの判断は、簡単なプログラムでLEDが点灯しなかったからです
作ったプログラムは、main関数からLEDを点灯させる関数のプログラムです
リセット後実行では起動せず、ステップインなら動きました
初心者なので、デバックはよく分かりません
長文失礼しました
LEDが光らないというけど、どういう点灯をさせてるの?
即座に消灯してるなら光らないかもしれない。
ステップ実行だと一瞬で抜ける処理があっても目視できるからね
>>548 追加の情報は、ルネサスのスターターキットを使っているのと、LEDの点灯だけか。
後は、同じ事を書いてあるだけ。 半人前にも到達してないな。
まさかと思うけど、main() で リターンしてないよね。
int main()
{
p3.7 = 1; // ポートは適当ね
}
なんてのはだめで
int main(
{
途中で書いちゃったよ
int main()
{
p3_7 = 1;
for ( ; ; )
;
}
たとえば無限ループにしたりしてリターンさせないってことだけど、
まさか、こんな間違いはないだろうと思うが。
素人が初心者に講釈ってのがH8のいいとこだよな
1を書いたら点灯? 0を書いたら点灯のほうが多そうだが、そこを誤解してるとか
>> 552
可能性の一つを指摘したのみ。 記述からかなりレベルの低い初心者であることが
想像されたので。 そもそも、H8でもないし。 最初の質問でR8/2Dとなっている。
知ったがぶりするなら、良く読んでからにしよう。
>>553 1にしたのは誤解ではない。 書き込むデータを問題にしていないので、適当に書いただけ。
つまらないことが気になる性格の人みたいですな。
ブロック図を見てみたが、確かにスターターキットは 0で点灯しているみたいではある。
追加の質問がないので、原因はともかく解決できたんじゃないかな。
>>554 レジスタ初期化しないと、入力にならないか?
>>555 レジスタを初期化しないと通常は入力だろうな。
ただ。548の発言を参照してみて、 ステップインで実行したときは、
LEDが点灯するってある。 出力ポートにはなっている可能性は高そうだ。
それに質問はLEDの表示ではなく、リセット後の実行で動作しないってことだ。
情報が不足しているから、 これ以上詮索しても原因を特定するのは難しい。
デバッグがよく分からないなんて、単なる不勉強にしかすぎない。
これ以上は質問者につきあう気はもうないな。
このスレの質問者って、回答もらってその後どうなったか書かないのがデフォなんだね。
お礼書けとかじゃなく、その回答が当たってたかどうかは書いたほうも知りたいものだが。
数日後にはルネサスが生まれ変わるわけだが、
4/1以降は旧NECエレクトロニクス製マイコンの話を
このスレでしてもいいのか?
え、まじで?
NEC エレってなくなるの?
軽くググってみた。スクエニみたいなもんか。
NEC エレ主導の合併、てことでいいのかな。
ロゴがルネのまんまだけど(色だけ NEC エレw)。
開発ツールが統合されたりしなければ、スレはこのまま
分かれて機能するような希ガス。個人的に。
ってか日立と三菱のツールを統合するのに、
あんなに時間がかかってまだできてないのに
この予算がないご時世ですぐできるとは思えないね
564 :
774ワット発電中さん:2010/03/29(月) 21:16:57 ID:6pf+YesL
日立三菱のラインナップ統廃合が全然進んでいない上にさらにNECが加わるのか。
どうするつもりなんだろうな。
選択肢が増えるのは有り難いが、供給不安が…。
565 :
774ワット発電中さん :2010/03/29(月) 21:43:36 ID:x4NSNC2s
当然 ルネサスE8A NECには使えないだろうな。
566 :
774ワット発電中さん:2010/03/29(月) 22:49:25 ID:9ljMb+qg
使えるようにするべきだな
>>565 使えないと言ってもE8Aは単なるJTAGライタだろうから
問題ないのでは?
>>567 E8a はJTAGライターじゃない。 E1エミュレータのページにE8aの接続方式はUARTと
書いてあるが、信号線をみればJTAGでないのは、すぐ分かる。
>>565 >>566 の発言を見ると、E8a はルネサスのほとんどのCPUで使えるみたいに
見えるが、ICEとして使えるのは R8C M16C H8/Tinyくらい。(書き込みならもっとある)
三菱は 安いICEをもってなかったけど、NECは MINICUBE2とかいうのがある。
値段も8千円くらいでマルツでも販売している。 NECのユーザーからすれば E8aに
変わるのは迷惑な話だろうから、E8a対応になる可能性は低いだろう。
E8aもやっすいよ。同じくマルツで1万4千円。
仕事で使うなら8千円も1万4千円も変わらないと思うけど。
趣味でNECのマイコン使ってる人って…いるのかな?
>>569 新規にNEC系のCHIP使う場合であれば、問題にならないかもしれないが、
これからはE8aを使うんで、MINICUBE2は使えなくなりますって言われれば
文句の一つも言いたくもなるんじゃないか。
事情を知っているわけじゃないが、新規よりも継続の案件がほとんどだろう。
既存の顧客を怒らせる以外の効果はないと思うが。
E8aに対応すべきなんて言っているやからが、実際に78K0とか使うかと思うかい?
>>570 ごめん。なんか誤解させたみたいだけど、別に無理に統合してほしいってわけじゃないです。
どっちにしろ安いから、必要なら買えばいいので。
ルネ自身が統合したいと考えるのなら、好きにすればいい、という程度。
>>571 別に誤解はしていないと思うけど、安いんだから必要なら買えというのは
通用するとは思えないと言っているだけ。
安いっていっても1個や2個の買い換えで済むところばかりじゃない、
別に攻めるつもりではないが、考えが安易すぎる。
とはいえ、NECのCPUがどう扱われるかを知っている訳ではないので
ICEの扱いに関して自分の言っていることも予想にしかすぎないが。
>安いっていっても1個や2個の買い換えで済むところばかりじゃない、
100台買い換えても100万くらい。それだけ使う会社ならそのくらい
たいしたことなくね?
それよりツールのほうが高いだろ。まあ、ソフトはコピ(ry
R8Cと言うより HEWの機能かな? とは思うが…聞かせてくれ。
コンパイルした時のプロジェクト名や時間を
char *version="HOGEHOGE 2010/03/31 10:10:03";
みたいに出力させていっしょに焼きこみたいのだが…
何か良い方法ないかのぉ。
__DATE__や__TIME__って無いんだっけ?
dくす。
プロジェクト名.cの中で
char version[]=__FILE__ " " __DATE__ " " __TIME__;
な感じで上手く行ったよ。
実際表示させる時は、ちょっと文字列操作して(.cとか取って)バッチしだ。
助かったよ! ありがと。
IARのcは書籍のマニュアルで 11章 定義済みシンボル という章があったが、
へうのpdfのコンパイラマニュアルだと、7.環境変数−7.2 コンパイラの暗黙の宣言
の章には載ってない。どの辺に書かれてるんだろ?
>>569 > 趣味でNECのマイコン使ってる人って…いるのかな?
ここに一人。
DIP の選択肢がほとんどないから、AVR も併用しようかと思ってるけど。
UART さえあれば書き込めるルネのマイコンはなかなかいいけど、
MINICUBE2 の便利さがに軍配。
>>577 RenesasからDLしたと思うけど…手元にあったプログラム作成の手引き<C言語編>(rjj05b0118_m16cap.pdf)ってのに__FILE__、__LINE__、__DATE__、__TIME__は予約されてるマクロと載ってたよ。
580 :
577:2010/04/01(木) 17:54:36 ID:JfnFHi3Q
ありがとう。pdfが違うからまだ不完全な時のかも。2004年頃のでした。
呉越同舟電子株式会社 誕生おめ
ファブはどうなるんだべ?
やっと規制解除された
ところでルネサスのHPが変わったね。
色調が赤から青に変更されてスタイリッシュな印象を受けたんだけど、自分だけかな?
ルネのロゴに NEC の色だと思うぞ。
色だけNECになったんだよ
日立レッドから
586 :
774ワット発電中さん:2010/04/08(木) 21:55:42 ID:I1OsUGOR
赤の方がよかったんだが。色の趣味悪過ぎだ
見てると気分が悪くなってくる
587 :
774ワット発電中さん:2010/04/08(木) 23:25:54 ID:xFAl4EmA
ルネとNECが合併してもユーザは得する要素があんまりないよな
ユーザーの為を思って合併した訳じゃないしな。
せめて販路も統合してくれ。
相も変わらずMは三菱特約店系列onlyじゃ使えねー。
590 :
774ワット発電中さん:2010/04/09(金) 13:24:09 ID:7Fix1js7
データシートを探しにくいのは気のせいでしょうか?w
591 :
774ワット発電中さん:2010/04/09(金) 14:18:40 ID:cWWgs7Kj
激しく見づらい。
あと赤を基調に戻せ。なめとんのかと。
ユーザビリティ損ねてまでウェブを統合しなくていいよ
会社ってのは図体がでかいほど馬鹿なことをするな
恥ずかしい
暗い青と緑って、なんか気分が落ち込むよな・・・
二度と見たくないサイトになってしまった。哀しい。
と書いてから気付いたが、ココってその色じゃんw
>>590 伝統です。
ところでVRを見かけないような気がするのですが‥
595 :
774ワット発電中さん:2010/04/09(金) 18:25:12 ID:7Fix1js7
PDF開くと
カタログ等資料中の旧社名の扱いについて
って、おまいの事情なんざ知るかボケw
こんなの最後に付けとけよと。
まず、データを出せよ。
ここら辺にH臭するよな〜。
596 :
774ワット発電中さん:2010/04/09(金) 18:30:31 ID:7Fix1js7
>>594 左様でございますか。なら仕方ないですw
597 :
774ワット発電中さん:2010/04/09(金) 20:06:16 ID:RFD6Jc1D
輝け甲子園の星(2010早春号)より
選抜高校野球選手権大会出場選手「好きなタレント」アンケート
1位 北川景子 49票
2位 上戸 彩 24票
3位 香里奈 23票
4位 佐々木希 22票
5位 松本人志 18票
6位 新垣結衣 17票
7位 南 明奈 黒木メイサ 15票
9位 木下優樹奈 12票
10位 市川由衣 11票
11位 EXILE 10票
12位 ダウンタウン 相武紗季 9票
14位 宮崎あおい 8票
15位 柴咲コウ 戸田恵梨香 井上真央 コトリッチ 7票
今日はルネサスに批判的な書き込みする奴が多いな
上のRENESASの文字くらいは赤でも良かったかもな
慣れないせいか寒々しい
Sunのワークステーションみたい
ホームページ全体に憂鬱な感じが漂ってるんだよな
赤には加速感があったけど、今の寒々しい青は何だ
あと「旧NECエレの〜」とか「旧ルネサステクノロジの〜」ってのは
全然要らないと思うわ。そんなこと書くなら最初から別サイトにしろと。
やることが役人臭漂ってんだよな
トレードカラーは赤に戻して普通にNECが作ってた半導体を
ラインナップに追加するだけでいいだろうが。
客からしたら、社内統治のレベルが低いと思われても仕方ない
海外からどんな風に見られるかわかってんのかと
青でも赤でもどっちでもいいよ
しょーもない
紫色で妥協ってことで
なんで青なの?
NECが青だったの?
トヨタも赤、ホンダも赤だけどね
んじゃ黒にすりゃいいのにね。
どうせ白黒だったら黒になるんだし。
で、生き残るマイコンはどれなんだ?
RX
昔はH8に専用GAだったけど、最近中国人が起こしてくる石は8051っぽいコア内蔵が多い。
H8も割食ってると思うよ。最近H8/SHのICE全然稼働してないし
つか,昔から組み込み系の8ビットといえば8051は定番なんだがな
8ビットクラスなら8051,もう少し上ということならARM系ということで
決まりでしょ。
SHとかH8の設計思想を意識して、コードを書いてる人が何人いるやら
78Kもルネサスマイコンスレに入れてもらっていいんでしょうか?ww
>>612 それは海外の話だな。 日本じゃ8051はあんまり使われてない。
確かに、使っているところもあるのは知っているけど。
>615
すなわちガラパゴスを感じなくてはいかんのだよチミ
>>617 訂正 それは海外の話だな --> 日本の話じゃないな。
なんだか知ったかぶりだが、海外の情報に本当に詳しいのか。
海外で8051のメーカーは何社かあるのは知っているが、結構マイナーそうな
ところが多いし、アマチュアでの使用例もそれほど見かけない。
単に気分で言っているだけじゃないの。
十分マイナーそうなメーカーじゃない。
それだけで、ガラパゴスって証拠になるんだ。ふーん。
昔から組み込みの定番は8051って書いてあるけど、それとの関係は?
今更だが
ガラパ → 75,H8/SH
非ガラパ → SoC形態 I.MX(フリスケ)とかARM系 8051系とDSPとか
ガラパ → アンドロイドなんかの先進ハードに不向き
非ガラパ → アンドロイドなんかの先進ハードにうってつけ
ガラパ → くっつきあってもがいている
非ガラパ → ひとりでも飯が食える(フリスケ/サムスン)
>>620 >昔から組み込みの定番は8051って書いてあるけど、それとの関係は?
関係は8052だけど?!
アセンブラでがりがりやるのも考えもんだし
なんでもガラパゴス呼ばわりするのも考え物だが、
例に転売されまくってるフリースケールなんか出すなよ・・・
元祖ガラパゴスみたいなもんだし。
はぁ…やっとわかったよ。farか…orz
これあれだよなぁ。せめてワーニング出して欲しいよなぁ。
char *adrs;
adrs =(char*)0x1c000;
HEWのスレとか無さそうなんでここで聞くけど・・・
HEWって独自なバッチファイルを起動するとかできんのかなぁ。
コンパイルされた .motファイルに最後にちょろっと細工したいのだが・・・
>>625 ビルドフェイズにICE用のシンボルコンバータを挟んで実行させるような話?
>625
なんか答えでてるけど
ビルド --> ビルドフェーズ で追加じゃないかな
ヒントサンクス!!
色々やってみるわ。
以前、__DATE__、__TIME__ を聞いた者だけど。orz
HEWで makeの touchみたいに依存関係無視で必ずコンパイルする方法はないかね。
結局、毎回 compileさせる時に用もないのに __DATE__や__TIME__を記載したファイルを触ってやらないと更新されんのだが…
630 :
774ワット発電中さん:2010/04/15(木) 18:52:28 ID:SpLttZMk
HEW 4.07.00.007
コンパイラ 5.45 Release01
CPUはR8C/2BでR5F212BAを使っています。
R5F212BAはROMエリアとRAMエリアが二つに分かれています。
で、無駄にプログラムが大きくなってきたのですが、
・ROMエリアは一つ目が一杯になると二つ目のエリアを使う
・RAMエリアは一つ目をオーバーしてもエラーがでず、二つ目は使われない
という状態です。
そこで質問なのですが
1、RAMエリアの二つ目(3000h〜3DFFh)を使う場合は自動生成されたスタートアップルーチン(sect30.inc)に
明示的にセクションを作成しないといけないのでしょうか?
2、1が真の場合、このセクションの初期化処理はどうすればいいでしょうか?
3、RAM領域を一つ目が一杯になったら二つ目の方に自動的に配置させる方法はありますでしょうか?
以上です。
よろしくお願いします。
>>629 タイムスタンプ変えるBATでも作ってコンパイル前に押せば?
>>631 ANSWER
1. YES
2. ncrt0.a30 に追加するんだろうな、多分。
3. NO
>629
すべてをビルドするってのでいいんじゃないの
>630
RAMエリアのセクションの後に先頭番地が3E00hのダミーのセクションつければ
エラーが出るようになるかも?
追加RAMの初期化処理はセクションの初期化処理のソースを見た方がいい
H8は割とわかりやすかったけど
アドレスが不連続なエリアに自動配置してくれるような親切なことはしてくれないと思うよ
>>630 ROMエリアがオーバーしたら2つめを使うってことはないはずなんだが。
ルネサスのリンカーが賢くなったのか?
0FFDCh から 0FFFFh がベクターになっているんで、ここは使えない。
そのため、 0FFDBh 以下 と 10000h 以上とで別に配置しないと
使えないはずなんだが。
0FFDBh を越えたら、リンカーがエラーを出すはずなんだけどな。
635 :
630:2010/04/15(木) 20:12:28 ID:SpLttZMk
>>632-634 レスさんくす
とりあえず、M32Cで拡張I/OにSRAMのセクション追加した時を参考に色々試してみる
>>634 00FEDCから100h
00FFDCから24h
は使わないように自動的にしてくれている。
で、残りを10000h以上に自動的に配置してくれてます。
mapで見ると上手に貼れるか分からないけど以下の様になってます
REL CODE 00E838 0000F8 2 _i8divu
REL CODE 00E930 0000CF 2 _i8modu
interrupt REL CODE 00EA00 000000 2 ncrt0
REL CODE 00EA00 00009D ncrt0
vector ABS ROMDATA 00FEDC 000100 ncrt0
fvector ABS ROMDATA 00FFDC 000024 ncrt0
rom_FO REL ROMDATA 010000 00003D command
REL ROMDATA 01003D 00000B Config
>>635 そんなオプションがあるとは知らなかった。
その機能がないと、R8Cで 0FFFFHを越えるプログラムを作るのは面倒だよな。
そっか自分の場合は、最初は 0FFFFHを越えないCPUでソースを生成したから
オプションがセットされなかったのか。 後からCPU変わったんだよな。
マニュアルみても、 0FFFFH が自動的に生成されるとか書いてなかったし、
オプションのさりげない記述じゃ気づきにくいよな。
637 :
630:2010/04/15(木) 21:47:44 ID:SpLttZMk
>>636 プロジェクトでR8C/2B指定で作ったのでオプションかどうかは分からない。
ただ、リンカとしては04000h〜1BFFFhまでを一つのセクションとして扱って、
sect30.incで指定されたベクタの領域だけは開けとくようにしているのだと思う。
そして良く見ると、FFFFh移行に配置されているのはREL CODEじゃなくてROMDATAになっている
関数でFFFFh移行に配置されているのは__ctypeだけだった。
コードがFFFFh越えないと、本当に自動的に配置してるかわ分からないかも。
638 :
630:2010/04/15(木) 21:57:52 ID:SpLttZMk
で、セクション定義と初期化の質問です。
HEW 4.07.00.007
コンパイラ 5.45 Release01
CPUはR8C/2BでR5F212BAを使っています。
R5F212BAはROMエリアとRAMエリアが二つに分かれています。
sect30.incで以下を追加しました。
;---------------------------------------------------------------------
.section data_FE,DATA
.org 3000H
data_FE_top:
.section bss_FE,DATA,ALIGN
bss_FE_top:
.section data_FO,DATA
data_FO_top:
.section bss_FO,DATA
bss_FO_top:
コンパイルが通って、mapファイルでセクションが作られている事を確認しました。
ncrt0.a30にセクションの初期化処理を入れようと以下を追加しました。
;---------------------------------------------------------------------
; bss zero clear
;---------------------------------------------------------------------
BZERO bss_FE_top,bss_FE
BZERO bss_FO_top,bss_FO
すると以下のエラーが出るのですが、何がいけないんでしょうか?
sect30.incだけ変更した時はコンパイルが通ったので定義は問題ないかと思ったのですが・・・
Error (asp30): Symbol definition is not appropriate
>>637 デバイス設定も関係あるだろうがではなく ROMサイズ指定によるらしい。
LINKERのOUTPUTのオプションが
0xFFFF を越えないサイズの場合 -R8C
0xFFFF を越えると -R8CE になるのを確かめた。
オプション調べてみたら、-R8CE は64K以上に対応したコードを生成するとなっていた。
>>638 何が言けないんでしょうって言われれば、 bss_FE bss_FO がまずいんだろうな。
さて F は何をさしているんでしょうか?
といっても、若干自信がないが。
SH, H8SX, H8S, H8の系統で、
clock周波数が一番速い、というかポートでたたくISP通信が一番速くなるのはどれでしょうか?
トラ技別冊のH8SX/1655は50MHzだったかな。あれだと速いんだろうか。
642 :
630:2010/04/16(金) 01:16:19 ID:ktLQFx7Q
>>640 Fはfarを指しているんじゃないんでしょうか?
で、M16Cのサンプルで
BZERO bss_FE_top,bss_FE
BZERO bss_FO_top,bss_FO
してるのがあったので、そのまま持ってきてみたのですが・・・
BZEROマクロがfarエリアでは使えないって事でしょうか?
つか、M16CのサンプルではBZEROマクロ本体がncrt0.a30にあるのに
R8C/2B用に自動生成されたスタートアップのncrt0.a30には本体がない・・・
643 :
630:2010/04/16(金) 01:33:16 ID:ktLQFx7Q
BZEROマクロがなかったので以下をsect30.incに追加
BZERO .macro TOP_,SECT_
push.w #sizeof SECT_ >> 16
push.w #sizeof SECT_ & 0ffffh
pusha TOP_
>>16 pusha TOP_ & 0ffffh
.stk 8
.glb _bzero
.call _bzero,G
jsr.a _bzero
.endm
これでコンパイルが通ったので、初期値ありの変数のために以下も追加
これでいいのかは分からない
・sect30.inc
;---------------------------------------------------------------------
; Initial data of 'data' section
;---------------------------------------------------------------------
.section data_SEI,ROMDATA,ALIGN
data_SEI_top:
.section data_SOI,ROMDATA
data_SOI_top:
.section data_NEI,ROMDATA,ALIGN
data_NEI_top:
.section data_NOI,ROMDATA
data_NOI_top:
;tuika
.section data_FEI,ROMDATA
data_FEI_top:
.section data_FOI,ROMDATA
data_FOI_top:
・ncrt0.a30
;---------------------------------------------------------------------
; initialize data section
;---------------------------------------------------------------------
N_BCOPY data_FEI_top,data_FE_top,data_FE
N_BCOPY data_FOI_top,data_FO_top,data_FO
とりあえずコンパイルは通るし、初期値も入る事は確認できたけど、やっぱり変数が0で初期化されない。
BZEROをNBZEROにしても同じ。
BZEROのマクロが何か間違っているんでしょうか?
>>643 >>644 初期化できましたか。 うーむ。 far エリアは 0FFFFh を越えたエリア
RAM部分は 当然 0FFFFh を越えてないので、うまくいかないと
思ってたんだが。 うまく割り当てられているのかしら?
C言語の変数は、2つのRAMエリアにどうやって割り付けられるのでしょうか?
何もしないと、連続して割り付けられ RAMエリアを越えてもエラーにも
ならないはず。
コンパイル時に変数領域のセクションを指定するか、
ソースの変数宣言にセクション情報を指定するか
のどっちかだと
r8cだと、nearとかfarとかあるみたいだから、ハマるかも
ふぅ…結局、ビルドフェーズの先頭で make_versionを入れたよ。
もち呼び出す make_version.exeは自作ね。この中で localtimeで文字列作って vesion.cに const char で一行吐き出す事にした。
これで毎回いやがおうでも compileされるわ。
far関係は面倒だよねぇ。
far使い出すとアドレスアクセスが倍になってコードも処理も倍になるし…
ましてや、この変数は farこれは付けなくても良いとか…バグりそうで怖いよ^^;
自分も悩んだあげく -fNROM(だったっけ?今家なので)で nearに配置させてる。
その代わり programセクションを far領域から配置して逃げたよ。
MESの蟹ドライバはあまり出来がよろしくない。
まああのボードがトロいのは8bitバスつうのが大きいと思うが。
650 :
774ワット発電中さん:2010/04/19(月) 18:00:43 ID:0AwaZGF/
NECのマイコン78Kシリーズもここでいいんかい?
専用スレがあるだろ。そっち行かんかい。
…と、78K 使いの俺が言ってみる。
そのうちR78Kとかでてくるんだぜ
ロードマップが出てないから分からないが、旧NECは新製品を出さないで
徐々にフェーズアウトが一番ありそうな。
フェーズアウト == 廃品種にする ってことだけど、一般的な用語じゃなかったかもしれない。
H8シリーズもロードマップに新製品がないから、徐々になくしていくつもりと思ってたんだが、
ここにきてCQ出版と組んで、H8Sを付録に付けたりしているのは なんのつもりと思ってしまう。
旧日立系の営業チームががんばっているんだろう。
フェーズって言うとphaseと間違うとかfadesは三単元(だっけ?)で間違いじゃないかとか
そこらへんのことでわ
辞書に載ってた
phase... out/phase out...
(1) …を段階的に停止[廃止]する.
(2) …を(…へ)段階的に移行する《 into... 》.
ディスコンなら通じますか?
ディスコンでもフェーズアウトでも通じる。
でもディスコンの方が古い部品って感じw
EOLとか言わないか?
ナイコン
RXやらR8Cはトラブってるからな。今月のサポートレター参照
>663
すまん。それどこ見ればいいの
評価版のDLのために、電話番号必須とかヒドス。
売り物をタダでずっと使おうなんてヒドス。
SH-2A付きのInterface 6月号を2冊買ってきた
使い道は何も考えてない
interfaceのまだ実物は拝んでないんだが、別途実装しなきゃならん部材って何がある?
USB-MiniABレセクタプル、3.3Vレギュレータ、1.2Vレギュレータ、
48MHzXTAL、ブートROMとか最低限必要そうなのは既に乗っかってる。
それととLEDが1個
USB-MiniケーブルつなげばLEDピカピカぐらいはできるんじゃね?
まだ厚紙の封も切ってないけどw
え?単体で?
それなら欲しいな
Linux使える?
付録は、MMUなし。
Linuxなど汎用OS不可、μITRONなどRTOS可らしい
>671
μClinuxでもポーティングしてくれないか?
トラ技の増刊号のH8SX/1655は40MHzクロックらしいです。
40MHzもの高速ならば、
秋月の300円カラーLCDに、アイマスの動画は表示できるでしょうか?
やはりFPGAでないと無理でしょうか。
問題はRAMなんだよ
何MB積んでる? 2-4ないと起動でもあふれかねん
if201006 sh2a付録基板、ledの抵抗が390Ωって書いてあるけど、
ちょっと小さくない?
図1のUSBクロックなんて48KHzだぜ
Interface 6月号のSH-2AもこのスレでOKなの?
質問するのはいいんじゃない?
了解。
明日届くみたいなので、(板を検索したけどなかったので)
もし専用スレがあれば誘導してもらうかと思った。
オレも買った。
sh7144を趣味でずっと使っていてカラー液晶の制御に使ってたけど、
さすがにフレームレート出なくてこまってた。
CPLD使おうか悩んでたんだけど、
これで解決しそうだ。
またハードバグがないか不安だけど。
おっ
今月はSHが付いてるのか
久々に買ってみよう
プログラム用のフラッシュ64kか・・・
sh7144乗り換えるにも、
今のプログラムが128k超えてるから、
フラッシュだけ載せかえ必須か・・・
OS なしだとしたらすげえな、何作ってんだ?
Enjoy CQ-SH7262
ttp://sourceforge.jp/projects/enjoy-cq-sh7262/ Renesas SH7262を搭載したCQ-FRK-SH2A(CQ出版Interface誌2010年6月号付録基板)向けの
各種組込みソフトウェアを開発するプロジェクトです。
TOPPERS/JSPおよびASPの移植、USB対応ライブラリやファイルシステムなどの開発を行い、
順次配布する予定です。
これらは、 SH7262と共通した内蔵モジュールを搭載する他のRenesas製CPUでも利用することが
可能です。
>>684 MODE-2限定でいうとCS1空間にフラッシュメモリ付け、内蔵ROMはフラッシュプログラミングかorフラッシュメモリの先頭にジャンプさせるんじゃだめなん?
と秋月の7144基盤のDBGMD端子で一週間悩んだ漏れが言って見る・・・orz
>>685 上にも書いたけどカラー液晶制御に使っていて、
自作描画ライブラリとか、その他ライブラリ。
って、実はフォントデータが半分以上なんだけど…
まぁデータを別で持てば半分以下になるっちゅーことですね。
あとはライブラリをもっと細かく分割するとか。
>>687 64kのうち半分がモニタプログラムで、
残り32kはユーザーが使えると。
それ以上使いたければ基板外に増設しろとゆーことらしい。
なんで一応増設は可能と。
256kのフラッシュ積んでくれればよかったのに…
DDRでも使えたらなぁ、とか欲を言い出したらきりがないね
ふろくのSH-2Aを利用して、LED点灯の残像を利用した、メッセージ表
示をやってみようとした場合、LEDと抵抗を買ってきて、サンプルのチ
カチカみたいに汎用のポートにアサインすればできそうなレベルですか?
>>691 そうですか。
組み込みは、トライアンドゴーが簡単にできない世界ですね・・・。
データシートみると一部のポート以外は流せる電流がけっこう
小さいみたいだから、avrみたいになんでも直結ということは
考えないほうがよさそう。
695 :
690:2010/04/27(火) 01:26:04 ID:b72/lXHd
>>694 そういうことですか、理解しました。
どうもありがとう。
>>689 機能概要には載ってたけど
ピン出てないのかな
やっと手に入った。これだから地方は。
現役を離れて数年、どんだけ進化してんだSH-2よ…ちょっとショック
好奇心で欲しいけど使い道がない。
……買っとくか。
たとえばGBAの液晶をこうやったら使えるよとかカニをこうやったら使えるよとかの情報を出しあったら楽しくなるだろうな
ゲーム機ならジャンクで手に入りやすいしものによっては量産可能かもしれんし
データシート見た感じPSPの液晶とか普通に使えそうやね。
PSPの液晶は普通にデータシート転がってるし。
もっともそれを活かすのは大変だろうけど。
いままでSH7144で全部ソフトウェアでやっていて、(320x240の液晶)
たいしたもん描いてなくてもまったくフレームレートが足りてなかったんだけど、
これならヌルヌル動きそうだ。
しかしPSP液晶は修理の為の部品として需要あるせいか、高い…
高いせいであまり使う気がおきない。
>>688 ユーザー用プ格納容量は32KBなのか、少ないな
外部にプ用ストレージだな。プ、データはSDメモリにって感じの使い方になるのかな
sh2a付録基板、ユーザ用のフラッシュはちょっと小さめだけど、
ユーザ領域はelmさんのfatfsを使ったローダを作っていれておけばよさそうですね。
あと、データシートのlcdコントローラのところみてて思ったんだけど、
抵抗並べるなりしてdac作ってやればアナログrgbで画面が出るんじゃないだろうか。
SH7144より3倍早い
赤い…のか?
見てみたいものだな、ルネサスのSH2Aの性能とやらを
CPUの性能の違いが、戦力の決定的差でないことを教えてやる
SPIフラッシュ外付けってことは、容量足らなくなったら
パターンカットして他のに交換すればいいわけ?
付属のHEWモニタをRAMに移して他のフラッシュに
焼きなおせないとだめだろうけど
チェインロードすればいいんじゃね?
他のスレで
>今からH8系に手を染めても先(将来)がない。
という書込を見ました。
だとすると、これからは何が主流になるのでしょうか。
H8/3048, H8/3069, H8S/2633とやってきました。
Rxxでしょうか?
言った奴に聞けよ
x86です
R8C, RX, SH じゃないの?
旧ルネサスで力を入れてたマイコンという意味なら
ありがとうございます。
>>711 では、286、386、486、586、どれがいいでしょうかね。
>>712 ありがとうございます。趣味人としては、秋月で売ってるものがデフォルトになってしまいます。
上をみるなら、64bitです
64bitってx86アーキティクチャだっけ?と思って調べたら
今のintel産って、AMDが作ったx86の64bit拡張の互換品なのね
そういやルネサスって、上位互換マイコン作って、下位をやめちゃうこと多い気がする。
枯れた石って考え方をしないのか、私の関わったマイコンの選択がマイナー側なのか…。
78K0S
RX はH8の上位互換じゃないけどね。ルネサスのWebの情報だと、
H8, H8S, H8SX, M16C --> RX
H8Tiny、R8C/Tiny --> R8C
RXは、M16Cの影響が強い気がする。 CISCマイコンについては 旧日立は負け組じゃないかな。
M16C もRXに置き換わるはずなんだが、なぜかまだ新製品がある。
M16CとR8CはCPUには互換性があるから、M16Cは残してもよい気がするんだけどな。
R8Cは基本思想は64K以内のメモリで納めるCPUなのに、むりやりメモリを拡張している
のが結構ある。 無理せず、M16C使えばと思うんだけどね。 I/Oが違うので仕方ないとは思うが。
H8系には、新製品も開発計画もないんだよね。
今時、near,farの概念があるのはちょっと
719 :
774ワット発電中さん:2010/04/30(金) 21:48:44 ID:A59FnTZB
トラ技増刊のH8SX/1655評価ボード、購入したのですが
本どうりにフラッシュ開発ツールキットインストール
して、いざサンプルプログラムを書き込もうと思ったら
認識しない・・。
※0 USB devices located とでる・・。
J1のジャンパーもショートしているし・・。
壊れているのかな
>>715 ルネサスじゃなくて日立時代の話だけど、
64180、あそこまで頑張ったのに
(ザイログに64180のセカンドソースとしてZ180を作らせるほど)
その後あっさり捨てたのは非常にもったいないと思った。
>>718 M16Cの場合、 CODE と CONST をFAR RAMは NEAR に割り付けてある。
FAR NEARが問題になるのは、 普通は文字列の処理くらいかな。
使っている時にFAR NEARを意識する場面は意外とない。
R8Cだと64K以内に収まれば、全部 NEARで 扱えたと思った。
レジスタ構成をH8 と M16C/R8Cを比較すると M16C/R8Cの方が古くさい
感じするんだけどね。 H8も高速化のためにRAMのエリアの割付に多少の
工夫があるんだが、高速化は難しそうだからな。
>>720 64180も一時期流行ったけどな。 あんまり長くは使われなかったような。
早めに切り上げたのは正解だと思うが。
>>720 三菱は8085から6502で今でも命令セット継承してるとか
>>715 >下位をやめちゃうこと多い気がする。
HD64180をこの最近まで製造していた。
H8のnearとかは書き方は面倒くさかったけど、使いやすかった。(RAMの方)
トラ技増刊号の、H8SXを今後のデフォルトにしよう、
とも思ったけど、
0.4mmQFPでは、見えないから困る。
しかも秋月で扱っていないし
現時点でのコスパと入手性を考えるとH8SXは無いな…
みんな、幻のH16をお忘れか?
俺のお客さんは64180でバンク殆ど全部使うようなASMの製品作ってしまって、
H8に移植できずに、Z180にフル乗せ換えして製造続けてます。合掌・・・
もったいないと言えば、63C09ももったいなかった。
究極の8ビットCPUと言われた6809をさらに強化したCPU・・・
それもあっさり捨てられた。
63C09を搭載したMB-S1とか作っていたら、さぞ面白かっただろうなぁ。
near(近い)とfar(遠い)という話が出ていますが、
なぜこんな定義があるのでしょうか。
アドレスbit幅が小さく済むので、
足の少ないマイコンのころ、アクセス速度的に有利だったということでしょうか。
今考えると、farだけで不便は感じないんですが
今でもアクセス速度的に有利だよ。プログラムサイズ的にも。
ありがとう。
へー、そうなんだ。
今でも、near/farを使い分けてるマイコンって、何があります?
Cで記述すると、その辺りは意識しなくてもいいんですよね?
…いまでも16bitCPUなら普通に
86なら small compact medium large huge とかあったよね。
>>736 解説サンクス
じゃあやっぱり
>三菱は8085から6502で今でも命令セット継承してるとか
は日本語がおかしい・・・
自然言語の曖昧さの範囲で矛盾ないと思っていますw
>>732 でも、BSRよりJSRのほうが速かったりするんだよね。
nearは近場限定のバイク便みたいなもんかな?
でfarは普通の宅配便。
ジャンプ系命令は今でも相対(near相当)と絶対(far相当)はあるよ
大抵は相対の方が速いし、命令長も短くできる
条件付きジャンプはほとんどが相対(near相当)で実装される
無条件相対ジャンプ(far相当)とかの例外もある
コンパイラを使う限り意識する必要はない
ARMは全部相対でやってたりする
>>741 >ARMは全部相対でやってたりする
それは、全部が絶対番地指示と同じではないの?
68000でアセンブラを覚えた後、インテルの8bitCPUの仕事になって、
嫌になった覚えがある。
744 :
774ワット発電中さん:2010/05/03(月) 23:18:29 ID:snW/kQ1/
どなたか教えてください。
SH-2A(SH7216)をモード2(内蔵メモリ有効)で使用し、
CS3空間(0x0C000000〜)にSDRAMを接続しています。
コンパイラはSHCです。
起動後は内蔵ROMのコードをSDRAMへコピーし、SDRAM上で動かしたいため、
リセット以外のセクション(P,C,D,B,R等)は全てSDRAM上に設定しています。
すると、コピー元となる内蔵ROMの番地でリンクしたコードは生成されません。
SDRAM基準のコード(0x0C000000〜)を無理矢理内蔵ROM(0x00000000〜)
へ書き込むことができれば、あとはなんとかできそうなのですが。
みなさんはどのような方法で内蔵ROM→SDRAMへのコピーを行っているのでしょうか。
>みなさんはどのような方法で内蔵ROM→SDRAMへのコピーを行っているのでしょうか。
内緒な方法
dbsct.cをよく読みませう
747 :
774ワット発電中さん:2010/05/04(火) 00:04:47 ID:0S+bMTiG
>746
dbsct.cはセクションをコピーする記述がのってますよね。
ただ、Pセクションを始めに内蔵ROM上へ設定してしまうと、
P(内蔵ROM)→P(SDRAM)
のコピーすることはできても、SDRAM上で動くコードにはならないので
リンカでのセクションは全てSDRAMへ設定しています。
考え方が間違ってるのでしょうか。
SDRAM上で動かしたいのに、Pを内蔵ROMに設定するの?
Dセクションみたいにすればいいのでは
749 :
774ワット発電中さん:2010/05/04(火) 00:17:45 ID:0S+bMTiG
>748
セクションは全てSDRAM上に設定しているのですが、
SDRAMへ展開するまでのコード(P,C,Dセクション)の仮置きを、
をどのように内蔵ROMへ展開すればよいのか分からないで困っています。
hewでPとかの移動はやったことないけど、(gccならある)
Dセクションの設定を真似すれば、出来るんじゃないの?
で、dbsect.cでPとかの移動を追加って感じか
そういや当たり前すぎて考えたことなかったけど、どこのアドレスでも動くようにできないの?
MS-DOSとかUNIXとかのように
なぜフラッシュから実行しないのかね・・
SH7216の場合キャッシュがないからSDRAMに
コードを移すと大幅に性能が劣化するが。
hewのリンカは決め打ちしてるみたいだから、
コード領域とかの移動は無理っぽい。意外
SH-4なCEとかどうやってたんだろう
755 :
774ワット発電中さん:2010/05/04(火) 02:14:59 ID:0S+bMTiG
>750
出来そうで出来ない。といった感じです。
一工夫必要なのではないでしょうか。
(単なるセクションのコピーならできます。)
>751
ごめんなさい、全然わかりません。
>752
おっしゃる通りです。(ただ、選定の時点では気がつきませんでした。)
今回の試作で動作するものが出来たら、
CPUはキャッシュを備えたものに変更するつもりです。
756 :
774ワット発電中さん:2010/05/04(火) 02:16:47 ID:0S+bMTiG
>753
リンカによってはコードのコピーに対応できるのもあるのですね。
また1つ勉強になりました。
>をどのように内蔵ROMへ展開すればよいのか分からないで困って
ROMにしたいソースコードに適当な名前のセクションを指定して、
セクション追加してアドレスを自分で指定するだけ。
GCCのリンカスクリプトと仕組みは一緒。
758 :
774ワット発電中さん:2010/05/04(火) 03:33:52 ID:0S+bMTiG
>757
私の説明がわるいのでしょうか。
繰り返しになりますが、
セクションはSDRAM領域を指定していながら、
内蔵ROMへ展開したいのです。
例)セクションP(0x0c001000〜)の内容を
内蔵ROM 0x00001000へコピー
それとも他にSDRAM上へコードをコピーするうまい手段があるのでしょうか。
759 :
774ワット発電中さん:2010/05/04(火) 04:23:41 ID:oo9RtOR2
内蔵ROM部分はそのまま焼く。後半は別モジュールとしてLINKして、
SDRAM空間でLINKした部分はflashライタで 「オフセット付き」 書き込みという機能が
ありませんか? -(0x0c000000) オフセットして書き込め、という指示。
安藤のROMライタとかには付いてました。この機能が無いと格納空間と実行空間が
異なる実行プログラムは作れないことになりますよね。今はリンカにこの機能が無い
ぶん、ローダ/ライタにその機能を持たせることで解決を図ることが多いようです。
何言ってるのか判らない。
SDRAM上で動くように作って、それをSDRAMにロードするだけなのに、
なんで内蔵ROMに展開すんの?
リンカ相当を自分で抱えるならともかく、
ローダーと本体プログラムは普通は別々に作るもんだよ。
ID: uIS2BtU8への回答も兼ねてる。
PCにだってNTLDRやGRUBとかあるでしょ。
CEでも同じ。
初期化付きRAMの定義は
-rom=D=R
こうだから
-rom=P=PR コード
-rom=C=CR 定数
とかして
-start=P,C,D/0800,PR,CR,R,B/SDRAMのアドレス
みたいにすれば、出来そうだね
転送はdbsect.cにP,Cを追加すればいいみたい
>セクションはSDRAM領域を指定していながら、
>内蔵ROMへ展開したいのです。
何がしたいのかよくわかってないのだけれど、
プログラムの一部はROMで一部はRAMに置きたいってだけじゃないの?
このプログラムはPセクション、このプログラムはP_ROMセクションとかに
わければいんじゃねって話。
どちらもPセクションにしなければいけない理由がわからない。
それかプログラム2つにわけたら。
起動用プログラムとSRAM用プログラム。
大体SRAMには何処からどーやってプログラム転送してんの?
まさかPCのモニタプログラム?
>>752 そうだよね。 外部記憶装置からロードするのならともかく、内蔵ROMから 外付けRAMに
プログラムをコピーして実行するなんて、無意味としか思えないよな。
まあ
>>744がやりたいことはわかるんだけどね。
SH-4みたいにオンチップのフラッシュがないタイプでは外付けの
低速フラッシュからSDRAMにコードをコピーしてから実行させる
手法は普通。ただSH7216での必要性については前述の通りだが。
その手法については
>>762でも書かれているけど詳しくは
「SH ROM化支援機能」などで検索してみるといい。
>ただSH7216での必要性については前述の通りだが。
だから皆わからんいってるんでしょう。
>>762 765
というかそれぞれ別のメモリ空間で動くプログラムが
同じセクションでコンパイル、リンクされてたら動く筈ないのでは?
セクションのアドレスがROMだったらROMでしか動かないし、RAMだったらRAM。
ジャンプとか全部相対アドレスで書かれてるんじゃないんだから、セクション分けるしかないでしょ。
768 :
774ワット発電中さん:2010/05/04(火) 17:07:28 ID:0S+bMTiG
多数のご意見ありがとうございました。
>759
オフセット付きのライタがあれば、解決できそうです。
早速機能がついているか確認してみます。
>762
確かに転送はできるのですが、それでSDRAM上で動くのでしょうか。
セクションPを内蔵ROM上に設定すると、
JUMP命令でまた内蔵ROMへ戻ってきてしまうような気がします。
>763
VECTセクション(SDRAM上では0x0C000000 これを内蔵ROM0x00000000領域に焼きたい)で
JUMP命令等を一切使用せずにバス初期化等を行い、
全てのセクションをSDRAMへコピーし、SDRAM上のコードを実行しようと考えています。
>764
はい、今回は無意味なものになってしまうかもしれません。
ただ、内蔵ROMを持たないCPUへ移植することを考慮して、
今回の手法で動かしたいのです。
>765
はい、もう一度検索してみます。
>766
内蔵ROMへ展開するコードは全てSDRAM上のアドレスでリンクされていることを前提と
しているため、内蔵ROMで動いている間はJUMP命令等は一切使用せずに
セクションのコピーだけをしてSDRAMへ移動させるつもりです。
>767
これからじっくり拝見させていただきます。
769 :
774ワット発電中さん:2010/05/04(火) 17:37:34 ID:0S+bMTiG
744です。
みなさんのご意見を参考にしながら
ROM化支援について、その内容をもう一度確認しました。
どうやらリンカオプションに関する理解が足りなかったことが、
今回みなさんを混乱させてしまった要因だったようです。
762さんが書かれたように
ROM化支援機能で-rom=P=PRを指定することで、
Pで宣言した「シンボルの参照がRAM領域のアドレスを指す」ように
自動的に変換してくれるようです。
ありがとうございました。
この設定でもう一度チャレンジしてみます。
>内蔵ROMへ展開するコードは全てSDRAM上のアドレスでリンクされていることを前提と
>しているため
だからー、そこをなんで気にするんだか・・・
ROMへ展開するコードはROMのアドレスでリンクされてることを前提として作ればいいだけじゃん。
ROMで動くようなプログラムを生成する為にセクション分けて
リンクすればって何度もいってるんだけど・・・
PセクションはRAMにP_ROMセクションはROMに割り当てる。
ROMで動かしたいプログラムはP_ROMセクションに割り当てる。
765がいってるROM化支援機能や、767が書いてるのはまさにそれで、
プログラム毎にセクション分けてるだけなんですけど。
最終的にSH3やSH4で何かやりたいための下準備してるんでしょ。
DセクションはROM化支援機能を使ってるんだけどね。(ROMー>RAMのコピー)
windows7でinterfaceのsh2a付録使ってる人います?
なんか正式には対応してないそうですが、
HEWからデバッグまで一通り普通に動くならそろそろ
変えようかな・・・
HEWをユーザー登録しないでダウンロードできるところ
ありませんか?
乞食クレクレ厨にやるHEWは無い。
by ルネサス
せこいな
セコイアは北米トヨタのピックアップトラック。M16C使ってるから。
情報も返さずタダでクレってほうが、せこさなら上位じゃね?
そういえば、ユーザー登録って何に使うんだろうか。
最低限情報管理的な何かが要るのかもしれんけど。企業だし。
仕方ないから偽名で登録するか
マジでせこいよね。無料ダウンロードなんかやめればいいのに
ルネは日立時代から(三菱は知らんけど)
「個人や、ほとんど個人に近いような零細企業は相手にしません」
ってオーラを放出しまくっていたからなぁ。
個人情報の入力は、金にならん顧客をふるい落とすための
初段フィルターなんだろうね。
入力した個人情報が何に使われているのか不気味ではあるけれど、
割り切って入力できない奴ははなから相手にされないと。
アルテラやザイリンクスの開発ツールも個人情報入力は必須。
そういう世の中の流れなのかも。
>>780 入力して拒否されたのならまだしも、欲しいソフトが入手できたなら、それで良いんじゃない?
個人情報も大事だが、利用価値考えたら大手のメーカーがリスク犯してまでおかしなことする
とは思えない。
782 :
780:2010/05/05(水) 16:56:20 ID:CBhhU4ZZ
>>781 さすがに名簿業者に売る、なんてことはしないと思う。
でも、何の目的で使うのかわからないけどひたすら情報を
集めまくるのが不気味だと思います。
783 :
781:2010/05/05(水) 17:29:26 ID:MCtNCt6Q
>でも、何の目的で使うのかわからないけどひたすら情報を
>集めまくるのが不気味だと思います。
今後、顧客として自分達に利益を提供してくれる相手を探している。
それ以外の細かな目的、例えば今後わが社に入社希望してくれる優秀な人材や
それに協力してくれる大学の担当者には多少のサービスがあるかもしれない。
ひょっとして、過去に振り込め詐欺や架空請求に引っかかったこと無いですか?
一部上場企業の極めて常識的な経済活動に何をそんなに恐れている?
登録してると、サポートとかのメールがちょくちょく来るな。
バグの埋まったコードを後々までバラまかれるのを抑止するとかいうのもあるかもしれんなあ、とか思ったり。
ちーさい企業としては、いい商社を挟むと楽かもしんない。
顧客のサーチとしてはNECがやたら懸命だった気がするが、さてこれからどーなるかしら。
>>782 「名前」の登録は必要だろうけど,「本名でなくてはならない」とは
書いてないしな。ペンネーム/ビジネスネームでも使っておけば良い。
(別に住民票だの戸籍謄本出せといわれてるわけでもなし)
電話はFletsなんかにしておくと追加番号は月100円だから「登録用電話番号」
にでもしておくといい.
>>785 凄いへ理屈、会社でもそんな調子?
登録が嫌なら使わない。それで良いじゃね
ルネはよくやってるよ、NECが今一つだったから、
今後どうなるのかに期待
在日か
実際の所、適当な情報でもDLできるけどな。
なぜこの間(デザインウェーブARM)と違うminiUSBなんだYO!!
USBホストが付いてるからじゃね?
でもminiABコネクタは普通のminiBケーブル挿せばクライアントに、miniA
ケーブル挿せばホストになる素敵仕様だけど、御不満?
あれっ、これで挿さるんだね
ごめんなさい知りませんでしたorz
USBのサンプルコードとかフリー提供されてないのかな?
やっぱり、営業にお問い合わせくださいとかそういうパターン?
>>795 サンクス。
1から実装しないと駄目なのか・・・面倒臭いなぁ。
サンプルソース位用意しておいてくれたらいいのに・・・
interface付属のボード試してみたんだけど、
なんだこの遅さは・・・
普通にプログラム転送してから実行可能になるまでとか、
ブレークポイント付けたりが鬼のように遅い。
20〜40秒くらいかかる・・・
HEWが何やってもすぐ30秒以上固まる。
これってオレだけ?
windows2000なのがイカンのかなぁ。
USBのノイズによるエラー&再送頻発かな
パソコン変えてみれ
>>797 中身はみとらんが、5/7に2000andXP用のドライバをUPしたと、
特設ページでアナウンスされとるよ。
それで治るとは思えないけど。
>>798 799
サンクス。
ドライバは既に変えてみたけど駄目だった。
てか、一旦新しいの入れると削除しても実は新しいのが入ったまま?
どうも最初の一発と、ブレークなどの機能を使うと超遅い&頻繁にバグる。
ちゃんと測ったら起動まで2分、ブレークポイント付けるのに40秒。
ステップ実行は一瞬。プログラムの読み直し〜再実行は10秒くらい・・・
取り敢えずXPマシンに入れてみるか・・・ これならシリアルターミナルデバッグの方がまだマシ。
てか今回はモニタプログラムのソースがないから起動時のピン設定もままならない。
なんでソース公開してくれないんだろ? 非公開にするほどのもんでもないと思うんだけど。
シリアル用デバッグモニタ頑張って7262に書き換えようと思ったらアセンブラでビックリ。
Interface付録SH2Aで遊んでますが、内臓USB経由の仮想シリアルポートって、
暴走したりリセットするたびに出たり消えたりするようなんで、
開発上非常にやりにくい気がするんですがそういうもんですか?
マイコンが暴走(?)→仮想シリアルポート消滅?(or無反応)→HEW固まる→プロセス落とし
を繰り返してつらくなってきたんですがorz
そういうものです。
線引っ張り出してSCIF使えばいいんでないかい。
HEWで使えるかどうかわからんけど。
>>801 おー使ってる人発見。
私も似たような感じ。
シリアルポート消滅というより、マイコンと通信出来なくなってHEWが固まるって感じですかね。
暴走した時ならわかるけど、普通にブレークポイントつけたりするだけで通信出来なくなるし・・・
ブレークポイントとか初回起動時の反応時間はどーですか?
Interface付録SH2Aで遊びたいのですがHEWがユーザー登録しないと
ダウンロードできないので遊べません。
>>802 やっぱそうですか。
>>803 初回起動時も含めて数秒も待たされるなんてことは一切ないような。
非公式サポートの 64bit 7 で使ってるんでそのせいでいろいろ不安定だと信じたいんですが…。
シリアルデバッグモニタのソースは公開されなさげですかねぇ〜。
SCI経由にだけでも切り替えたい…。
>>804 自分でHEWの代わりになるものを作ったら遊べるよ
>>804 2005年のSH2Aボード(通称吉田基板)には付いてきてたよ。
GDB対応モニタ作ってSCIで使ってるよ。
HEWの操作性が恐ろしく悪かったんで、eclipse上で作った。
で、ほとんど target sim で検証した。
HEWはダウンローダとシリアル通信ドライバのデバッグで使ったくらい。
むむむ・・・・HEW環境から付録SH-2AにHOS V4載せようとしてるんだが、割り込み周りで中々前に進まない・・・
秋月のH8やSH2にHOS載っけるのは偉大なる先人様のおかげで間単に出来たのになぁ
根本的な勉強不足を痛感中
812 :
774ワット発電中さん:2010/05/12(水) 02:21:13 ID:r5HA9qrl
FAQ1のabort現象で開発できないんだよなぁ
早く解決してくれ
XPなのに・・・
>>811 レジスタバンク使わなきゃSH2とほとんど同じだろう。
815 :
774ワット発電中さん:2010/05/15(土) 01:17:19 ID:+gqZwJRh
SH2AのDMACでSDRAMとやり取りできますか?
データシートに書いてある
バスにつなげたRAMならできるってことでしょうか?
ダイレクトメモリアクセスコントローラは、DACK(転送要求受け付け信号)付き外部デバイス、外部メモリ、
内蔵メモリ、メモリマップト外部デバイス、および内蔵周辺モジュール間のデータ転送をCPU に代わって高速に
行うことができます。
できるよ
したらuClinuxいけんじゃね
がんばれ
>>817
付録SH2Aで24bit 44.1kHzのシリアルオーディオ通信って可能?
可能だけどタイミング生成も含めて外部にCodec ICが必要。
SH2Aがマスターだとだせないんですね。
I2SとDACあるのにできないの?
SH2Aをマスタにする場合はX4を実装する必要がある。
826 :
774ワット発電中さん:2010/05/17(月) 23:37:12 ID:bvA7xqvD
どうも、Abortの人です。
>>825 の対策で正常動作するようになった!
Interface公式GDBスタブきてたのね
自前で実装始めたトコだったけど、色々イミフだったんで丁度よかったヽ(・∀・)ノ
付録基板のLEDがポート直でドライブされてるけど、まずくない?
電流制限抵抗値が小さいよね。SHの仕様書だとIOL = 2mAになってる。
SML-310のVfが2V程度だから1.3/390 = 3mA
そのR13の抵抗値じゃ絞りきれてないって事を言いたいんだが
普通にまずいように見えるね。
大電力用のポートはちゃんとあるんだけど、使ってないし。
所詮それがC級クオリティ。
でも、今回は今までの中じゃかなりマシなほうじゃない?
これだけの高性能CPUなのにロム小さすぎなのがC級。
50円上げて256kとかにしてくれればよかった。
このROMとかCPUって全部メーカーからの提供品なんすよね?
ふっふっふっ…
やっとLEDの件に気が付いたかね。
私は発売初日に気が付いたけど3歩あるいて忘れてたよ
VOL がmax 0.4V となっていますが、
それで計算すると (3.3-2.2-0.4)/390 = 1.8mA となりますね。
VOLが実際にどのくらいになるかわかりませんが、、、
834 :
774ワット発電中さん:2010/05/26(水) 21:20:00 ID:OQvSISAT
大人の科学のjapaninoに触発されて、Interface6月号買ってみた。
とりあえず、チカチカだけ。敷居が高かった・・・・・・
俺も6月号買ったけど、使い方がわからなくて
せいぜい裏返して見たりするくらい。袋も開けてない
なんか適当にやってたら、アプリがお手軽に作れるソフトウェアと違うものだから、覚悟が必要。
実際にこんなことを業務で作ったら左遷だろ?とか、こんなガラクタ子供だって騙せないやとか
アムロ父の化石級ジャンクを目の当たりにする、そんな石もう無ぇよとか
もっとこう、実用的な用途で実践的内容で、子供だましじゃない作例ってないものか・・・。
エンジンだけあっても走らせるようにするには色々足りないんだ
映像、音楽系の自作ネタはちょっと食傷気味だな、
秋葉で2000円台でタッチパネル付き動画プレイヤー買えちゃう現状を見ると更に、、
いやまぁ、俺自身は秋月液晶にカラーバー表示してピコピコ音出すのがやっとなんだけどさ…
Of course it runs <operating system here>
アキバに行けない奴が悪い
ピンファンクションコントローラで各端子に機能をアサインできますが、
違う端子に同じ機能をアサインしたらどうなるんでしょうか?
>>843 マニュアル読め。
うろ覚えだが、そういうことした場合
「不定」な動作になるからヤメロ、
と書いてあったと思う。
6月号のLED
/*--- PCDR0設定 PC8のLEDを消灯 ---*/
PORT.PCDR0.BYTE.H |= 0x01u;
/*--- PCIOR0設定 PC8のLEDをを出力に設定 ---*/
PORT.PCIOR0.WORD |= 0x0100u;
/*--- PCCR2設定 PC8の制御設定 ---*/
PORT.PCCR2.WORD &= 0xFFF0;
なんで&と|を使い分けてるんでしょうか?
うーん。わからないです
>>845 ここで質問するべき内容じゃ無い。
C言語の入門書でも読んでから出直し。
「論理演算」とか、「ブール代数」とかで検索すれば答えが見つかる。
論理演算なのはわかります。
>>848 じゃなくて、
/*--- PCDR0設定 PC8のLEDを消灯 ---*/
PORT.PCDR0.BYTE.H |= 0x01u;
ではなくて、
PORT.PCDR0.BYTE.H = 0x01u;
にしてないのはなぜですか?というのがQの本質だと推測している。
ちがうかな?
>>850 本当に知りたいのは、きっとそれだろうな。
はい。それです。
&をとるのは前の状態を維持したまま、狙ったところを変化させたいためかな?と思ったんですが
普通は、
変数 |= 値;
変数 &= ~値;
というイディオムを使う。
>>845を書いた奴は素人。
直接代入はNGなのですか?
ビット演算ね
|= も狙いはそれであってる
&= ~の狙いはなんですか?
同じだよ。書き方の問題
後は自力で考えてみよう。難しいことじゃないので理解できるはず
>>854 俺がPGRしたなら、今回の場合は制御したい端子機能1つなので、全部直値代入でOKだと指摘する。
また、明示的に未使用のビットは、マニュアルに書いてある推奨値を入れるべきなんで、直値で
いいかと。
どっかに初期化処理があって、(例えばCPUリセットで0で初期化されるとしても)0が設定される
なら、
>>845でもいいかなぁと思うよん。
疑問に思ったのは良いこと。
PGRってプギャーですか?
付属のマイコン買って来た。
レギュレータがほんのり熱くならないかい?
ほんのりならええやん
レギュ熱くなるね
最初びびった
>>856 |= 0x01; でONしたのと同じ所をoffするんだよ というのが
&= ~0x01; と書けば判りやすいでしょ。 これを&= 0xFE; と書くと、
FEは01の反転だな・・・そうか、01の場所をoffするのか、という思考のムダを
誘発するから。
smalightってお幾らなの。
>>863 &= ~0x01; という書き方をしても、&= 0xFE; と書いても、
コンパイラは全く同じコードを吐いてくれるのでしょうか?
それが怖いので、僕は &= 0xFE; を使っているのですが。
また、aaa = 0x01u; の「u」は、どのような意味なのでしょうか?
LongのLは見たことがありますが、uは初めて見ました。unsigned のuでしょうか。
動作スピードが変わらなければ、今後もuなしで行きたいと考えています。
ASM吐いてコード見ればいいのに
>>865 同じコード吐きますよ。「演算子の優先順位」 という所を見れば解ります。
>>866 ありがとうございます。
>ASM吐いてコード見ればいいのに
すみません、言葉の意味がわからないです。
ASMとは何のことでしょうか?
すみません、C言語だけでやっているので、教えてもらえないでしょうか?
0x01uのuは、unsigned のことで合っているでしょうか?
コンパイラの設定で、アセンブラソースを吐くようにできる
objでもasmでも、アセンブラが受け付ければ普通にリンクまで完了するはず。
uはunsignedでいいはず…。
ありがとうございます。
ASMはassemblerの略だったんですね。初めて知りました。
Cばっかりでやっているので、アセンブラのことは・・・・
ありがとうございました。
いえいえ
872 :
774ワット発電中さん:2010/05/30(日) 14:21:44 ID:vfoPjS9G
SH7262にてIRQ0を使って割り込み処理をさせたいのですが、うまく動作しません。お知恵をください
PJ1をIRQ0として使っています。 通常は10kでプルアップされていて、スイッチを押すとGNDに落ちます。
ポートの設定は以下の通り
//PJ1をIRQ0に設定
PORT.PJCR0.WORD = 0x0060;
//立下りエッジを検出
INTC.ICR1.WORD = 0x0002;
//優先度を15に設定1
INTC.IPR01.BIT._IRQ0 = 15;
//レジスタバンクの使用を許可
INTC.IBCR.WORD = 0xFFFF;
実際の関数はこれです。(7セグ光らせる)
void int_irq0(void){
PORT.PBDR0.WORD = segment[4];
}
SH2A基板て、消費電力どれぐらい?
874 :
774ワット発電中さん:2010/05/30(日) 20:28:46 ID:eEHv0G3m
立ち上がり、立ち下がりって、普段使ってるし、意味もわかるんだけど、
立ち下がりって、変な日本語って思う
>>873 データシートによると Vcc+PLLVcc が 100〜140mAぐらい
レギュレータの損失や内蔵USBモジュールの電源含めるともっと増えると思われ
∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
( ・∀・)< 立ち上がるモナ
( ) \_________
| | |
__(__)_)______________
( _)_)
| | |
( ) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
( 。A。)< 立ち下がれやゴルァ!!
∨ ̄∨ \_________
こんなイメージ
ちんこしか想像できない
寝ていようが起きていようが立つ事にはかわらんのだよ
「立ち上がり」に対して「裁ち下がり」だと思ってたが…。
初めて68000の英文データシートを読んだときにASSERT/NEGATEって書いてあった。
Pos Edge/Neg Edge
>>875 おっと、書いてあったか
結構食うね
電池で動かすとかはやめとこ
上の割り込みの件です。割り込みは出来るようになったんですが、今度はスイッチのチャタリングに悩まされています。
エッジがある回数だけ、割り込み要求がたまるんだと思うんですが、待ちをいれても良くなりません。
IRQ0発生→IRQ関数内で待ち→処理
みたいにしてますが、それが何度もおこります
ぐぐれと言えばいいのかな
IRQを利用したのが見つからなくて・・・
・最初のエッジでIRQが呼び出される。
・数ms待つ
・割り込み要求を下げる
・処理
これで処理が1回になるはずと思ったんですが・・・
なにがダメなんでしょうか
>>888 割り込みの中でのディレイは一般的じゃない。
ディレイ入れたいときはは割り込みの外で。
チャタ取りたいのなら、割り込みをトリガに(割り込みの外で)ポートのレベル判定てのが楽そう。
もちろんこのほかにもいろいろ方法はある。
ディレイを入れるとCPUが占有されてしまいますね・・・
CMTを使ったほうがいいでしょうか?
是が非でも割り込みで入力を採りたいなら、割り込み処理内で割り込み禁止にして処理。
チャタが終わると想定される時間を通常ループかタイマー割り込みで待ってから
割り込みフラグクリアして割り込みを許可。
割り込みフラグのクリア忘れて、延々割り込んでるだけってのは無いよね。
>>888 >IRQを利用したのが見つからなくて・・・
ということは、スイッチをIRQで取ることは、行われていない、と考えられないか?
通常は、タイマー割り込みで、定周期時間にスイッチの状態を見に行って、
onかoffを取り込んで、○○回連続してHだったらHと認める、とかやるんよ。
intruppt timer1 (){
t1 = on;
T1.XXX.XXX = 0;
}
void main(){
:
:
if( t1 == on ){
t1 = off;
temp1 <<= 1;
temp1 &= 0b0000_0111;
temp1 |= IO.XXX.B0;
if( temp1 == 0b0000_0111 ){ SW1 = on; }
else if( temp1 == 0b0000_0000 ){ SW1 = off; }
}
:
:
}
>>875、
>>884 しかし、SH2/7144より低いのは意外だった
SH2/7144の場合50MHzで typ160mA、max220mA。
頑張ったわね。 SH2A
コアは1.1vだし。
だから何?
ペリフェラルが3.3V/5V で接続できるならコアが低電圧駆動されても全く関係ない
オーバクロッカどもの言うところのVcoreだな
>895
いや、コア電圧が低いから省電力って話だと思うんだが。
SH2Aは何nプロセスなんだ? 65n?
げらげら
近所の本屋にゃInterface7月号が売ってない。 買っとけ!てな内容だった?
知りたいのは6月号おまけのバグフィックス情報があるかどうかなんだけどな。
ずーっと買い続けてた時期もあったけど、同じような情報の繰り返しで、
今更、あんまり買いたくない
試用期間をすぎた後も、コードサイズが256KB以上のブツを作る人用の記事があった。
関係のない話なんで、まだ読んでないけど。
そんなに高いもんじゃあるまいし、ケチくせえな
近所の本屋にはなくても、図書館にはあるかもしれんぞ。
市民権を生かして利用すべし。
906 :
774ワット発電中さん:2010/06/06(日) 23:44:11 ID:/lEvaDxo
http://akizukidenshi.com/catalog/g/gK-00168/ 上記URLのH8/3069Fを半田付けしました。
romにplus3068.motを書き込み、ramにlcd.motを書き込んだ後、
tera termを起動して「exec ffde40」と打ち込むと
「input:」と表示されるのですがキーボードを打っても何も表示されません。
Enterを押すとexecuted.となります。
なぜキーボードを打ち込んでも何も表示されないのでしょうか。
他サイトで半田付けの仕方が悪いのではないか。と言われたのですが
CPUボードの半田付けは2ヶ所しかなく、またプログラムの処理はマザーボードの部分は
関係ないと思うので考えにくいです。
(一回半田付けした部品をボードから取るのは自分の技量では出来なかったので
一回、半田を吸い取る奴で一通り取ってもう一回半田付けしましたがだめでした)
よろしくお願いいたします。
907 :
774ワット発電中さん:2010/06/07(月) 00:05:55 ID:imPl2Vbl
>>906 すみません自己解決しました・・・
どうやら付属のlcd.motじゃうまく動かないらしく、
サイトに落ちてたのを拾ってやってみたら打ち込むことが出来ました。
>>904 俺の昼食10日分だw 文句あっか? orz
98円 (´;ω;`)
トップバリュのカップラーメン\88で地道に10円貯めてます。
e-priceのものではダメでしょうか?
体壊しちゃ元も子もない
>>907 単にローカルエコーバックをONに指定していなかっただけの様な気もするが、
解決したならなにより。
コンビニで、でかいラーメン買ってるけど値段気にしたことないわ。
Interface付属SH2AでフラッシュROM飛ばして再書き込みする場合を想定しているのですが、
6月号のP113ページでやっていることは次の理解でよいのでしょうか?
1.ROMに書き込むためのプログラム(SPIwriterAll)をJTAG経由で内臓RAMに転送
2.ブートローダー(SPIROM.bin)をSPIwriterAllの後ろあたりに転送
3.SPIwriterAllを起動して実際にフラッシュに書き込み
さらに
4.SH2A自体にフラッシュ書き込み機能はない(ので必ずユーザプログラムで書き込む必要がある)
5.微妙にプロトコルが違うフラッシュに乗せ変える場合には、SPIwriterAllを修正する
ということでよいのでしょうか?
別件ですが、1.2Vレギュが立ち上がらない問題が発生しているようですがみなさんはいかがでしょう?
>>915 >4.SH2A自体にフラッシュ書き込み機能はない(ので必ずユーザプログラムで書き込む必要がある)
なかったっけ?
MODEを切り替えて立ち上げれば、フラッシュの書き込みをシリアルからできるんじゃね?
書き込みプログラムは、ルネサスにあると思うけど。
Flash内蔵なら自力で書けるが、7262には入ってないからのう。
>>917 ほんとだ、ROMlessなんだ。使えね。
interface sh2a付録で遊んでるんだけど、
以前の付録のsh7144のサンプルでは割り込み関数の前に
#pragma interrupt 割り込み関数
みたいに割り込み関数であることを明示してたんだけど、
今回のサンプルでは特にないみたい。
これがないとレジスタの復帰処理が入らなくて大変な事になりそうな気がするのですが
問題無し?
勝手にやってくれるのだろうか?
6月号のP105のリスト5を見るべし
vect.hの中で全部まとめて定義されているはず。
ありがとうございます。
今調べてたらある事に気がつきました・・・
と思ったらタッチの差で指摘が。
sh2aでコンテストやるみたいだけど受賞すると何か得するんだろか?
特に記載が無い。
あと、液晶ボードが発売されたようですが、3万。
タッチパネルは魅力的なんですけど個人で買う人っているんだろか。
タモリ「どんな変態ビデオも500本は売れる」
sh2a付録とHEWの組み合わせで、
sprintf使うと永久ループに突入してsprintf関数から帰って来ない・・・
同じプログラムがsh7144では動いてたんすけど。
main関数のしょっぱなでsprintf呼んでも同じ。
sprintf(&nameBuff, "test %d" 10) // こんな感じ
誰か暇な人いたらsprintf動くか試して頂けるとありがたいです。
訂正 sprintf(&nameBuff[0], "test %d" 10) // こんな感じ
10の前にコンマは要らないの?
>>925 動いてるよ
#include <stdio.h>
char buf[80];
// CMCNT0 の値を表示する
unsigned short int cnt = CMT.CMCNT0.WORD;
sprintf(buf, "%05d (%04XH)\n", cnt, cnt);
ScifPuts(buf);
>10の前にコンマは要らないの?
ミスタイプでした。
>#include <stdio.h>
ありがとうございます。
原因判明しますた。
#include <stdio.h>
が抜けてますた・・・ 恥ずかしい。
てか、抜けてもコンパイルもリンクも通る。
けど、実行時に飛ぶ・・・ 謎だ。
ちょっと調べた感じsprintf関数自体には行ってるみたい。
可変引数だから定義ないと上手く関数に引数の数が渡らないのかな・・・
プロトタイプの宣言なしに関数呼び出したら警告が出ない?
でませんね。
試しに適当な関数でもスルーされた・・・
ってことはコンパイラの警告オプションが緩すぎるのかな。
いじった覚えはないんですが。
後、sh7144で作ったプロジェクトは自分で
#include "typedefine.h"
してるけど、
sh7262のプロジェクトはincludeすると
二重定義だボケェ言われる。
>>931 iodefine.h 30: #include "typedefine.h"
>iodefine.h 30: #include "typedefine.h"
ギャー
特には困ってなかったのであまり気にしてなかったのですが、
HEWが勝手にやってるのかと思ってた。
(コンパイラの引数とかで)
ついでに気になったのですが、スタックって
プロジェクト->構成の編集->スタック
ビルド->Toolchain->最適化リンカ->カテゴリ->セクション
の両方で指定できる 何故?
sh2a 今度はカラー液晶制御ではまってます・・・
怪しいカラー液晶パネル買ってきて、静止画表示が出来たので
今度は動かしてみようと表示領域をメモリに2面もって
ダブルバッファにしてみたけど上手くいかず・・・
LCDが参照しにいくVRAMアドレスを書き換えてるだけなんだけど、
一度VRAMアドレス設定して動き出したら実行中にアドレス変えても無反応。
ダブルバッファで動かしたい場合どーすればいんでしょう。
VDC3.GROPSADR1.LONG = GetBackBuffAddr(); // こんなん
1つのユニットでやろうとせずに
2つ表示ユニットで、交互に表示ON/OFF
するんだろうか・・・
しかしそれだと機能が限定される気が・・・
なんかマイ日記ページになって申し訳ないんですが、
解決しました。
VRAMアドレスレジスタは書き換えた後に
レジスタ転送レジスタに1を書き込まないと
反映されなかったようです。
(画像が乱れないようvblank期間自動転送される)
937 :
774ワット発電中さん:2010/06/22(火) 22:09:57 ID:kUKqikHC
コンテスト、MP3再生、動画再生、JPEG再生+タッチパネル以外の
作品出てくるかなぁ???
938 :
質問。:2010/06/24(木) 21:41:18 ID:Q0wQDW17
うぜえ、あちこち書くなボケ!
FSBとコアが等速のCPUってどんだけあるよ
>>938 あんた 70MHz でちゃんと動くバスの設計できるの?
70MHz
―――――――v―――――――――――――――
―――――――――――――.、
./.  ̄ ̄ ̄//. ̄ ̄| ||| ̄ ̄ ̄ | ̄ ̄||
/. ∧// ∧ ∧| || ∧,,∧ ||∧,,∧||
[/____(゚_//[ ].゚Д゚,,) || (・∀・) ||・∀・.||
||_. ***_|_| ̄ ̄ ∪|.|. *** **|****||
lO|o―o|O゜.|二二二 |.|双葉ようちえん| ..
| ∈口∋ ̄_l__l⌒l_|_____|_l⌒l__..|| ≡))
 ̄ ̄`ー' ̄ `ー' `ー' `ー'
付録基板本体はなかなかよかったと思うけど、
タッチパネル液晶基板が3万円近くするというのは
ちょっとどうかしてると思う。
トラ技のh8用タッチパネル液晶も同じような規格なので
値段の差が・・・
教えてください。
H8マイコン基板 H8←→LVDS変換3対[コネクタA]---------(3線SPIをLVDSで3対, 2mくらい)-------[コネクタB]LVDS変換3対←→ADコンバータ基板
という感じで、2m程度離れたAD変換値を取り込んでいます。
clockは500kHzくらいで、変換出来次第に連続して、データをドンドン取り込んでいます。
以下のような問題があり困っています。
解決に向けて何かヒントがあれば、教えて欲しいです。
1. ケーブル長でデータ化けしてしまう
AD変換clock(SPI clock)は、H8→ADに送信。すると、H8←AD方向でデータが届きます。
変換データの帰り遅れ時間を見込んで、clockの反転エッジでH8は読み込んでいます。
ところが、ケーブルが長くなると、ケーブル長により、返信遅れが変化して
データ1bit分ズレてしまいます。
2. ケーブル挿抜時に、データ化ける
上記コネクタA, B部分で、挿抜をしていますが、常時転送をしていますので、
1フレーム途中など、ケーブルを抜くタイミングによって、H8は変なデータを取り込んでしまいます。
これまで考えた対策は、
1.については、
・clockもdataもAD基板側が発生し、H8は、AD側から届いたclock, dataを取り込む
線の数が決まっているので、信号線を増やせない。
・ケーブル長を限定する。
・clock周波数を下げる
2. これは困りました。思いつきません。
抜かれては困るデータを送っているのに、勝手に線を抜かれては、
手の打ちようがないように思います。
すみません、知恵を貸してください。
>>944 1.
結論としてはSPIのような短距離用プロトコルを使うのが間違いです。
RS485のような上りと下りでクロックが異なるプロトコルを用いるべきです。
2.
・フレームの開始を示すデータをいれて、それが検出されるまでのデータを捨てる
・最後にチェックサムをつけて妥当か検証する
XMODEMのような実装をしてみてください
>>945 さっそくありがとうございました。
>SPIのような短距離用プロトコルを使うのが間違いです。
そうですか。ありがとうございます。
ADが信号を吐いてくれるので、相手基板にはマイコン等は何も入れずに、
単に相手(今回AD)の信号が、こちらにキチッと届けば良いとしか
考えていなかったので、失敗でした。
H8側から送り込むclockをやめて、相手基板上にclock生成回路を追加で載せ、
そのclockで送り出すようにできないか検討しています。
>それが検出されるまでのデータを捨てる
>最後にチェックサムをつけて妥当か検証する
ありがとうございます。
送信側での前処理ができる素子を乗せていないので、ちょっと困りました。
う〜ん、ちょっと考えてみます。
どうもありがとうございました。
LVDSって距離が限られる分超速いんだろ
SPIはせいぜい基板上とかMPUからROMまでとかの規格だろ
外に出すなら外付けコネクタが定義されてるような規格にしなよ
いっそFMにでもしちゃえば?
クロック同期で距離があるなら、化けてもしょうがないでしょ
素晴らしいチャレンジ精神だな
前提知識があって尻込みして何もやらないよりはスキルが身に付きそうだな
その無謀さ見習いたい
趣味ならいいけど仕事だったら会社潰さないように気をつけてね
>>947 >LVDSって距離が限られる分超速いんだろ
インピーダンス整合がちゃんとしてあれば、2mくらいは楽勝です。
ノイズ少ないし、高速だし、言うこと無しです。
H8の信号程度の速度では「余裕のよっちゃん」です。
>SPIはせいぜい基板上とかMPUからROMまでとかの規格だろ
SPIそのものは、高速なI2Cというイメージで、基板内部で終わるものですが、
いったん他の規格の信号に変換すれば、特に問題はないと思います。
ただ、今回は僕がアホでした。プログラムを修正の予定です。
>>948 そうなんです。今考えてみると、おバカでした。
H8送出clock→→→ケーブル(LV)→→→→clock→AD
H8 IRQ←←←←← ケーブル(LV)←←←←clock←AD
H8 I/O←←←←← ケーブル(LV)←←←←data←AD
に、できないか検討中です。
ありがとうございました。
それだとH8の処理速度が厳しくないですか?
次スレは78K0SとかV850とかも入れるの?
A/D側もインテリジェント化しないと
DVIってLVDSだっけ
そうだよ
78K0Sって78K0のtiny版って程度のもので、
命令セットとしては78K0と同等だよな。
スレタイではH8やSHについて、tiny版は非tinyのと同列に扱ってる(もしくは省略)から、
スレタイに入れるなら78K0Sじゃなく78K0だな。
これが、78K0Rとかなら、78K0とはコアアーキテクチャが違うし命令セットも違うから、
78K0とは別物として扱っても問題はないんだろうけど。
全部一緒くたでいいんじゃないかな。
どうせ旧 NEC エレのマイコンのスレ過疎ってるし。
2スレ目俺が立てたんだけどね。 (´;ω;`)
開発環境はフリーだったしデバッガはやっすいんだけどねえ、78K0
いかんせん、いろんな意味で使いにくすぎる
同等じゃないよ(w
0Sはかなり抜かれている。
>961
え?
周辺機能だけじゃなくて命令セットも減ってるの?
乗除算とかないよ。
今度SH-2を使う事になって開発ツールを何にしようかと考えてたら
昔誰かに日立超LSIのCコンパイラがいいって聞いた事あるんだけど
具体的に何がいいのか知ってたら教えてください。
>>964 普通に日立のHEWとか、お客に買ってもらえば?
966 :
964:2010/06/30(水) 18:28:31 ID:3CuHL+yo
>>965 ゴメン。書き方が悪かった。
HEW使うならルネサスのC/C++コンパイラより日立超LSIのコンパイラの方がいいって聞いた。
コンパイラだからコンパイルした結果の事を言ってるのかと思うんだけどね。
しかし今時そんな違いが出るのかってのも疑問だし、何が違うんだろう?
ちなみに客がいない開発品なので、買うのは自腹ね。
いわゆるルネサスの純正コンパイラが日立超LSIなんだけど
968 :
964:2010/06/30(水) 19:03:34 ID:3CuHL+yo
>>967 え〜どっちも同じ物なの?
かなり前に商社にH8関連で問い合わせた時も日立超LSIのがいいって言ってたんだけど何なんだ?w
昔からの流れで内容はともかく決まり文句になってるのかな?
アセンブラで書け。www
実際、HEWが吐いたコードを見ると、
SHのパイプラインを理解してないように思える
ケースが少なくないんだが。
メモリにロードした値を直後にレジスタ間演算で使おうとしたり。
(それやるとパイプラインストールが発生して遅くなる)
そんなん、今時のキャッシュついてるCPUでは当たり前だけど、
差し込める命令あるのに、
殆どのコンパイラでいきなり使うの当たり前。
てか、まともにやってる奴見たことない。
x86しかり、Mips、PowerPC等々。
単にコンパイラがそこまで考えられるほど
進化してないだけ。
もっとも解析したの数年前なんで、今はマシになってるんかね。
>>968 コンパイラーそのものは同じ
バンドルされるライセンスや価格 または その商社にとっての利幅 なんかが
違うだけでしょう
赤星は吉見や岩瀬は走りやすいと言ってたねえ
973 :
968:2010/07/02(金) 15:49:47 ID:SJpuF/pw
>>971 問い合わせしたら、どっちも同じって回答が来た。
最近はPCアプリばっかりだったからリハビリだと思って評価版で遊んでみるよ。
ルネサス、4000人削減のリストラ効果期待で株価上がるが、NECはルネサスに対する投資損益として118億円の赤字計上
H8S/2368がモード4で動作していて、CS2(400000〜)にSRAMが接続されています。
CS2なのでPFCR0で0x04を書き込みCS2を有効にすれば、SRAMにアクセス可になるのが
普通かと思うのですが、なぜかPFCR0に0x02(CS1有効bit)を書き込むとSRAMにアクセスできる
ようになります。
しかもCS1ビットなのに(CS1は200000番地〜)デバッガでメモリを確認すると400000(CS2領域)番地にアクセスできる
ようになっています。
何か変だと思うのですが、原因は何が考えられるでしょうか?
>>975 アセンブルソースを読んでみる
ビットテーブルで操作してみる
ここでソースを晒してみる
CSをあたってみる
>>975 バグ取りの鉄則は、一に自分のしたことを疑い、二に自分のしたことを疑い、
三、四も自分のしたことを疑い、五にも自分のしたことを疑う、です。
>>977 それができないやつがほとんどだけどね。
複数テスト機がありゃちょっとラクなんだよな・・・
975ですがBSCの部分の設定さらしてみます
OUTPORT(ABWCR, 0xfd);
OUTPORT(ASTCR, 0xFB);
OUTPORT(WTCRBH, 0x77);
OUTPORT(WTCRBL, 0x77);
OUTPORT(BCR, 0x0C04);
OUTPORT(PFCR0, 0x04);
OUTPORT(PFCR1, 0x07);
OUTPORT(PFCR2, 0x04);
CS1は16bitフラッシュ
CS2は8bitSRAMに使用しています。
PFCR0に0x02を書き込むとSRAMにアクセスできると書きましたが、
実際このときCS2信号が全く出ていませんでした(0x02ではCS1信号なの
で当然なのですが・・・)ので読み書きできるのはおかしいのですが・・・
PFCR0に0x04を書き込むとCS2がリードライトに合わせてCS信号がでるのですが、
デバッガ上では全く読み書きできず全部0xFFとなってしまいます。
>980
CS出力を有効にするには、その端子があるポートのデータディレクションレジスタの設定が必要
>>複数人で開発してるとな……
でも大抵、真っ先に他人のせいだと言い出したヤツが真犯人なんだぜ。
事実は小説よりも単純だな。