SSブログ

書籍「今すぐ使える!H8マイコン基板」買って来たよ。 [RX&SH&H8]

Img_1795.jpg色々あってすぐには触れそうにないけれど、HOSとか入れたいよね。それからLANとかグラフィックとか。

書籍「今すぐ使える!H8マイコン基板」発売まであと僅か [RX&SH&H8]

h8sx_1655.jpgさてさて何処で買いましょうかね。アマゾン?、CQ Web Shop?、いやいや近所の本屋さんも捨て難い。

サポートページ
http://toragi.cqpub.co.jp/tabid/284/Default.aspx
では「予約受付始まりました!」の案内が。クリックしてみるとアマゾンに飛ばされる、、、こら!、何故CQではない?。

楽しみです。

今すぐ使える!H8マイコン基板 2010年 04月号 [雑誌]

今すぐ使える!H8マイコン基板 2010年 04月号 [雑誌]

  • 作者:
  • 出版社/メーカー: CQ出版
  • 発売日: 2010/02/25
  • メディア: 雑誌



「ルネサスの本気」、SH-2Aセミナーに行ってきました。LESSON1 SH-2とSH-2Aの比較7 [RX&SH&H8]

※絶対アドレスの取得に32bit命令を使うメリットが判りました、、、と言うか指摘していただいたのですけれど。詳細は追記して置きます。
※20bitアドレスに関して修正が有ります。
K3300018.jpg今回は新たに追加された命令の内、特徴的な32bit命令について解説します。

その前にSH-2では命令の種類は62種類でしたが、SH-2Aでは随分追加されて112種類となっています。
SH-2の命令長は全て16bitでしたが、SH-2Aでは従来の16bitに加えて32bit命令が追加されています。
32bit命令が追加された理由は、使い勝手の向上だそうです。
具体的にどの様な命令が32bit命令かと言えば、
1.イミディエイト転送命令
2.構造体アクセス用命令
3.メモリを対象としたビット操作命令
です。

うーん、32bit命令ですか。わざわざ追加すると言う事はやっぱり効果が大きいのでしょうね。
随分昔の話になりますが、初めて使う32bitマイコンを選択する段階で候補としてはNECのV850か日立のSHかで悩んでいましたが、日系エレクトロニクスのSH開発秘話の記事を読んでSHを選んだ経験が有ります。
その当時の話では、こだわって16bit固定長を採用していると言う事だったので、SH-2Aでは32bit命令が追加されたと聞いてちょっと微妙な感じがします。
16bit固定長の理由としてはパイプラインの効率を最大限にする為だった筈です。
確かにそうですよね、命令フェッチが必ず1回と決まっていれば、パイプラインに隙間無くインストラクションフェッチ(IF)、インストラクションデコード(ID)、実行(EX)を並べる事が可能で、つまり1クロック1命令ができます。

ではこの32bit命令ではどうなるのでしょうか?。

ソフトウエアマニュアルにはパイプラインの動作を解説しているページがありますのでそこを参考にすると、当然インストラクションフェッチは32bitである為に1クロックでは終了できず2クロック必要としています。(305ページ、図8.5より)

またスーパースカラーの動作にも制限を与えてしまうようです。スーパースカラーの最大の長所である2命令同時実行が一部の条件を除いてできません。(311ページ、「32ビット命令による競合の詳細」)

まあでも、逆に言えばこの程度のデメリットであると。

ではSH-2の16bit固定長の何が問題で32bit命令が追加されたのでしょうか。
最大の問題はイミディエイトデータまたはディスプレースメントの扱いにあります。

16bit命令では、その命令の中に埋め込めるイミディエイトデータの最大サイズは8bitまでとなっています。ディスプレイスメントも同じです。
※SH-2命令でも12bitディスプレースメントが存在します。

では32bitのデータを扱う為にはどうすれば良いのでしょうか。
従来のSH-2では以下の様にして32bitデータにアクセスしていました。
mov.l @(disp,pc),r1
add r1,r0
   ・
   ・
   ・
   ・
data.l h'12345678

この様に直接データを命令の中に埋め込む事が出来ないので、そのデータをテーブルに配置し、PC相対でアクセスして値を取得しています。

ではでは32bit命令が追加されたSH-2Aではどうなるでしょうか。
実はSH-2と変わりません(笑)、やっぱり32bitデータは命令の中に(当然)埋め込む事ができないのです。でもこれは32bitだからであって、SH-2Aでは20bitまでのイミディエイト(またはディスプレイスメント)なら32bit命令の中に埋め込めます。また28bitまでなら2つの命令に別ける事でやはり命令中に置く事ができます。
こんな命令にになります。
movi20 #h'12345,r1 ;20bitイミディエイト

movi20s #h'12345,r1 ;28bitイミディエイト
or #h'67,r1 ;結果はr1にh'1234567が代入される

※共に符号は拡張されます。

でもなんで20bitなのでしょうか。それには理由が有ります。
20bitをアドレスとした場合、0番地から1Mbyteの範囲にアクセスできますが、実際には符号拡張されます。これを実際のSHのメモリに当てはめると、0番地から512Kbyte、0xFFFFFFFF番地からマイナス方向にも512Kbyteアクセス可能となります。
この範囲は、例えばSH7216ならば内蔵ROMの前半と、内蔵RAMや内蔵周辺IOの全てをカバーできる事となります。もっとも利用頻度の高いと思われる領域を32bit命令1個だけでアクセスできるからです。

※すいませんおおぼけでした。32bit命令で絶対アドレスを取得して、その後レジスタ間接を行いますので2命令です。でもそうなると16bit固定長に対する32bit命令のメリットって何だ?。

※これ以外の32bit命令にはメモリに対するビット操作命令があります。これもレジスタ間接となります。

※簡単ですがこれでSH-2との比較編は終了です。
もっと詳しく知りたい方はルネサスのセミナーを受ける事を御勧めします。有料セミナーの場合、2日間のコースで通常価格21,000円ですが、特約店経由で申し込むと、その半額で受けられるキャンペーンを行っているそうです(笑)。
http://japan.renesas.com/fmwk.jsp?cnt=seminer_category_landing.jsp&fp=/support/seminar/


追記
絶対アドレスの取得に32bit命令を使う理由。
従来のSH-2命令ではアドレスをレジスタに取り込む為にはディスプレースメント付きPC相対を利用していました。つまり以下の様な命令です。
mov.l @(disp,pc),r0
mov.l @r0,r1
この@マークが曲者で、メモリアクセスが伴うとパイプライン上では以下のステージが実行される事となります。
順番に、
インストラクションフェッチ(IF)、インストラクションデコード(ID)、実行(EX)、メモリアクセス(MA)、ライトバック(WB)

先の命令が実行されて結果がr0レジスタに代入されるタイミングがWBとなります。
後の命令でもr0レジスタを使用していますので、後の命令が実行されるタイミングは先の命令のWBの後である必要があります。
パイプラインのイメージとしては以下の様になるでしょう。スーパースカラーは取り敢えず無視して書きます。
IFIDEXMAWB------
-- IF-- -- ID EXMAWB

16bit命令で実行すると8スロット掛かる事が判ります。

32bit命令を使用した場合は以下の様になります。
movi20 #h'12345,r0
mov.l @r0,r1
この場合は先の命令に@マークが付いていない事に注意してください。
パイプラインのイメージは以下の様になると思います。
IFIDEX------
--IFIDEXMAWB

こちらは6スロットで完了できます。


SuperHファミリのCプログラミング

SuperHファミリのCプログラミング

  • 作者: 鹿取 祐二
  • 出版社/メーカー: オーム社
  • 発売日: 2008/09
  • メディア: 単行本



SuperHで学ぶμITRON仕様OS―リアルタイムOSの動作原理と実装法がわかる!

SuperHで学ぶμITRON仕様OS―リアルタイムOSの動作原理と実装法がわかる!

  • 作者: 鹿取 祐二
  • 出版社/メーカー: 電波新聞社
  • 発売日: 2005/12
  • メディア: 単行本



「ルネサスの本気」、SH-2Aセミナーに行ってきました。LESSON1 SH-2とSH-2Aの比較6 [RX&SH&H8]

K3300019.jpgレジスタバンクの使用方法をかるーく解説します。

レジスタバンクの使用方法の選択は、
1.レジスタバンクなんて使うか!。
2.もう全面的に使用したいです。
3.特定の割込み優先度レベルのみ使おうかな!。
の3つになるかと思いますが、1番は初期状態でそうなので、以下で解説するレジスタに対しては特に何もせずに初期化を完了させてください。

レジスタバンクを使う為に必要なレジスタは最低、IBNRレジスタ、そしてIBCRレジスタの2つです。

2番の様に1~15までの優先度全てで使用する時はIBNRレジスタのBEbitに1を代入します。
ルネサスのヘッダー流儀で記述するとこうなります。
INTC.IBNR.BIT.BE=1;

3番の様に特定の優先度で使用する場合は以下になります。例えばレベル14以上で使うなら、
INTC.IBNR.BIT.BE=3;
INTC.IBCR.BIT.E14=1;
INTC.IBCR.BIT.E15=1;
※リセット直後はIBNRもIBCRも0クリアされています。

上記の設定は割込み開始時にレジスタバンクにレジスタの内容を保存する様に設定したのですが、実は割込みから戻る時はレジスタバンクからレジスタに書き戻す命令を自分で追加せねばなりません(笑)。

アセンブラで書けば、RTEの直前にRESBANKと言うSH-2Aで追加された命令を挿入するだけです。
C言語の場合は
#pragma interrupt 割込み関数名 (resbank)
とコンパイラディレクティブを記述する事でRTEの直前にRESBANKを追加してくれます。

次回「32bit命令編」で違いシリーズは終了かな。

SuperHファミリのCプログラミング

SuperHファミリのCプログラミング

  • 作者: 鹿取 祐二
  • 出版社/メーカー: オーム社
  • 発売日: 2008/09
  • メディア: 単行本



「ルネサスの本気」、SH-2Aセミナーに行ってきました。LESSON1 SH-2とSH-2Aの比較5 [RX&SH&H8]

mainPromo_1.jpg詳細はありません(笑)。

「最近のマイコンは!」と言えるほど色々知っている訳ではないので、ここでは最近ちょっと触っているCortex M3マイコンに関して言えば、割り込みの応答性の向上としてハードウエアがレジスタの一部を保存するようになっています。
ARMの場合AAPCSでしたっけ、C/C++言語標準のプロシージャ・コール規約で関数内で保証されるレジスタ、非保証のレジスタが決められており、それに準拠してハードウエアも作られている為に、割込み処理ルーチンが呼ばれる前にハードウエアが非保証のレジスタをスタックに退避してしまいます。
※資料によると次のレジスタが対象です。
PC、PSR、R0~R3、R12、LR

これ以外にもテールチェインや後着と言うなかなか良く考えられた方法での割込みの応答性の向上を計っています。
が、結局のところ保存先はRAMとなる訳です。
その為1クロックで保存可能なレジスタ数は1と言う事になりますので、上記8個のレジスタを保存する為には最低8サイクル必要となりますね。勿論スタックに使用しているRAMのアクセス速度が遅ければ更に時間が掛かる事となります。
更にこの先でソフトウエアによる割込み関数内部で使用するレジスタの退避が行われます。
なんだか割込みに応答するまでに随分時間が掛かっている様に思えますが、これでもSH-2のそれよりは随分進んでいるのも事実です。

今後発表されるマイコンでは、この割込み処理の高速化をハードウエア支援で行う方法が主流になる様な気がします。

さて、SH-2Aはどうなっているかと言えば、従来通りのSH-2方式、つまり必要なレジスタの退避はソフトウエアで行う方式も継続していますが、ここが多分ユニークなところなんだと思いますが、汎用レジスタ全部を特殊な領域に保存する方法も選択する事ができます。

この特殊な領域の事をバンクレジスタレジスタバンクと呼んでいる訳です。説明では15段のバンクレジスタレジスタバンク(群)があるとの事です。
この15と言う数字は一般的な割り込みの優先度の数である15と一致しているので、それぞれの優先度に対応したレジスタなのかと言えばそうではないみたいで、容量的に最大15の割込みでレジスタをバンクに保存可能と言った感じです。
ちなみにレジスタと言っているので本当にレジスタなのかと言えば、セミナーではメモリだと説明していました。うーん、ちょっと微妙な理解ですいません。

バンクレジスタレジスタバンクの動作はFILO、最初に入って来たデータは一番最後に出される、つまりスタックされているイメージですね。但し保存先は内蔵RAMでもなければ外部RAMでもなく専用のメモリであると。

バンクレジスタレジスタバンクに保存されるレジスタとその手順は、
1.ベクターテーブルオフセット、GBR、MACLを保存
2.R12、R13、R14、MACHを保存
3.R8、R9、R10、R11を保存
4.R4、R5、R6、R7を保存
5.R0、R1、R2、R3を保存
※プログラムカウンタやステータスレジスタは従来通りスタックに保存。

1~5まではそれぞれ1サイクルで実行されていますので、汎用レジスタの退避は5サイクルで完了しています。
しかもこれの保存先はRAMではないのでMバスを使わずに保存可能。その為前回解説した割込み処理ルーチンが開始するまでの間に全て完了していると言う事です。

この用にチート(笑)なバンクレジスタレジスタバンクですが、勿論欠点もあります。
それは最大でも15割込みしか有効ではないと言う事です。この為この15を超える、超えないをチェックするオーバーフロー検出機能も利用できる様になっています。「検出する/検出しない」で前回の割込み処理に入るまでのサイクル数に若干の違いが有るようです。

しかし割込みの優先度は15なので、通常の使い方であればオーバーフローする事は考え難いのですが、割り込み内部で現在の割込みレベル以下の割込みを許可するようにIbitを操作してしまった場合はその限りではありませんので、そう言った操作を行い且つレジスタバンクを利用するなら、チェックを有効として置いた方が良いのでしょう。
ちなみにセミナーでは同一レベルの割込みをレジスタバンクに保存する事は可能だが、あまりお勧めはしないとの事でした。

なお前回のベクターアドレスの読み込みが先に来ている云々の話は、例えばSH7216のハードウエアマニュアルの164ページの図6.4を見ていただければ判りますが、m3のメモリアクセス(PCの退避)と平行して割込み処理ルーチンのフェッチが開始されています。割込み処理ルーチンの開始アドレスはm1のメモリアクセスで読み込んでいますので、それ以降ならフェッチが可能であるのですが、まさにここではハーバードアーキテクチャの恩恵に与っても居る訳です。

レジスタバンクを利用する事で割込み処理の応答速度を向上出来る事は判りましたが、これ、RTOSのディスパッチャーを作る時は悩んじゃいそうですね。

※ついついバンクレジスタと書いてしまうし、、、。

これならわかるSuperHマイコン

これならわかるSuperHマイコン

  • 作者: 藤沢 幸穂
  • 出版社/メーカー: オーム社
  • 発売日: 2003/02
  • メディア: 単行本



ITRONプログラミング入門―H8マイコンとHOSで始める組み込み開発

ITRONプログラミング入門―H8マイコンとHOSで始める組み込み開発

  • 作者: 濱原 和明
  • 出版社/メーカー: オーム社
  • 発売日: 2005/04/25
  • メディア: 単行本



「ルネサスの本気」、SH-2Aセミナーに行ってきました。LESSON1 SH-2とSH-2Aの比較4 [RX&SH&H8]

K3300020.jpgところでこの写真のボードは北斗電子のボードなんですが、USBやEthernet、SDRAMがレディで最大200MHzで動作できます。http://www.hokutodenshi.co.jp/7/HSB72167F.htm
結構小さくて作りもしっかりしていてよさげなのですが、21000円かぁ。そんなに高いと言う訳でもないけれど、、、と言う事で早く何処かから電子工作ユーザーがお手軽に買えるSH-2Aボードが出ませんかね。

さて、SH-2Aの割込み処理の手順はどうなっているのか、SH-2と変わらないのか?、なんてところから調べてみましょう。例によってハードウエアマニュアルを参考にすると、
1.割込み要求が割込みコントローラに受け付けられる
2.受け付けた割込みに対応する割込みベクター先のアドレスを取得する。
3.ステータスレジスタ(SR)をスタックに退避。受け付けた割込みレベルを現在のSRの割込みマスクビット(Ibit)にコピー
4.プログラムカウンタ(PC)をスタックに退避
5.割込み処理ルーチンのアドレスにジャンプする。
となります。
ここまではハードウエアが勝手にやってくれますので、その後の処理はプログラマーがソフトウエアで行う事となります。
6.場合によっては、プログラマーが割込み処理の中で使用する各種レジスタをスタックに退避する。

あれ、若干処理の順序が変わっていますね。特に飛び先アドレスを早い段階で取得しています。これは何故でしょう。

SH-2に比較してSH-2Aの割込み応答時間の計算はえらい大変です。まず関係するクロックが3種類あります。
次に、ここが大きく改善されたところですが、レジスタの保存用に最大15レベルのレジスタバンクを利用できる様にもなった点です。

クロックから解説してみます。
SH-2の時にやったように割込み要求が発生して、それが受け付けられるまでの時間の計算ですが、もうハードウエアマニュアルを読んで欲しいのですが、
内蔵周辺IOの場合は
2Icyc+1Bcyc+2Pcycまたは2Icyc+1Bcyc+1Pcycです。
IRQが要因の場合は
2Icyc+3Bcyc+1Pcycです。

って、IcycとかBcycとかPcycって何?ってところですが、ハードウエアマニュアルのクロックパルス発振器のCPGのところを読むと詳しく書いて有ります。

IcycはCPU及び、CPUの極近くのブロックの動作クロックで、最大200MHzです。
Bcycは外部バスクロックで、最大50MHzです。
Pcycは周辺クロックで、最大50MHzです。
つまり単純にCPUクロックを基準に考えると
2Icyc+1Bcyc+2Pcyc=14サイクルとなりますか。※200MHz:50MHzなので4:1で換算

あれ!CPUクロックの周波数が上がっただけであまりSH-2と変わっていない、と言うかむしろサイクル数は増えている?、いえいえそれだけではないのです。

次回、「チート過ぎるぞSH-2A」。
C言語でH8マイコンを使いこなす

C言語でH8マイコンを使いこなす

  • 作者: 鹿取 祐二
  • 出版社/メーカー: オーム社
  • 発売日: 2003/10
  • メディア: 単行本



SuperHファミリのCプログラミング

SuperHファミリのCプログラミング

  • 作者: 鹿取 祐二
  • 出版社/メーカー: オーム社
  • 発売日: 2008/09
  • メディア: 単行本



「ルネサスの本気」、SH-2Aセミナーに行ってきました。LESSON1 SH-2とSH-2Aの比較3 [RX&SH&H8]

K3300018.jpgSH-2とSH-2Aでは割込み処理も随分異なっています。

従来タイプのSH-2の割込み処理の手順は、
1.割込み要求が割込みコントローラに受け付けられる
2.ステータスレジスタ(SR)とプログラムカウンタ(PC)をスタックに退避
3.受け付けた割込みレベルを現在のSRの割込みマスクビット(Ibit)にコピー
4.受け付けた割込みに対応する割込みベクター先のアドレスにジャンプする。
となります。
ここまではハードウエアが勝手にやってくれますので、その後の処理はプログラマーがソフトウエアで行う事となります。
5.プログラマーが、割込み処理の中で使用する各種レジスタをスタックに退避する。

と、多数のレジスタの退避が必要な時に5の処理に時間が掛かってしまい、割り込みの応答性を損なってしまいます。

実際にSH-2の5を抜かした1~4までの処理でどれ位時間が掛かるかはハードウエアマニュアルに記載されていますが簡単に説明すると、

割込み要因が内蔵周辺モジュールの場合、最低で10サイクル、最大は12+メモリアクセスに必要なサイクル数となります。
割込み要因がIRQの場合、最低で12サイクル、最大は13+メモリアクセスに必要なサイクル数となります。
当然遅いメモリを使用した場合はその分時間が掛かる事になります。

※この為、割込み応答時間の観点からも可能な限りプログラムコードやスタック領域は可能な限り内蔵メモリを利用した方が良いですね。

※やっぱり最大時間の方が問題なので、ROMやRAMに内蔵メモリを使うとして1~4までに掛かる時間は、IRQに起因する場合は20サイクル、内蔵周辺の場合は19サイクルと言う事になります。

※これ本当はパイプラインの動きを図に表した方が判り易いんだけれど、ルネサスのハードウエアマニュアルの図をそのまま掲載する訳にはいかないし、かといって自分で絵を描けるほど絵心がある訳では無し。なのでそれぞれ皆さんハードウエアマニュアルをご覧下さい。
特にSH-2Aのそれは図が無いと本当に理解できない。

SH-2Aでは!、、、続く。

「ルネサスの本気」、SH-2Aセミナーに行ってきました。LESSON1 SH-2とSH-2Aの比較2 [RX&SH&H8]

K3300020.jpgSH-2とSH-2Aの比較をアーキテクチャから見ると、以下の2点が大きく向上しています。

1.スーパースカラによる2命令同時実行

2.ハーバードアーキテクチャによるインストラクションフェッチとメモリアクセスの競合回避

まあ実のところ私はそんなにCPUアーキテクチャに詳しい訳ではないので、CPUアーキテクチャの詳細について知りたい方は別途調べてください。ここでは上記により何が向上するのかを解説するのみです。

ルネサスのサイトで400MIPSと出ているのは、CPUクロックが200MHz、2命令同時実行でその2倍の400MIPSと言う事だと思いますが、セミナーでは流石に2倍とは言わず、1.6倍1.5倍程度の実行速度の向上という感じで説明されていました。
上手くメモリアクセスがぶつからない命令が続く時、パイプライン上では各クロック毎に2つの命令を実行できる事となりますが、実際にはそんなに上手く行かないので、現実的な数字として1.6倍1.5倍なのでしょう。

ハーバードアーキテクチャは今ではそれ程珍しいアーキテクチャでは無いですね。PICやAVRだってそれですし、最近ではCortex M3シリーズもそれです。もっともSH-2Aの方がリリースはCortex M3よりも早かったので後追いと言うわけではありません。結局スループットを上げるにはこうするしか無いとも言えるのでしょう。

SH-2Aでは命令を転送するFバスと、データを転送するMバスの構成となっています。FLASH ROMやRAMからはどちらのバスにもアクセス可能です。
つまりインストラクションフェッチはFバスを通り、メモリアクセスはMバスを通りますので、バスの競合が発生しないと言う事になります。従来のSH-2ではバスが共有されていた為、メモリアクセスが発生するとフェッチが遅らされ、結果パイプラインの効率が悪くなっていました。

SH繋がりで、、、なんだそりゃ。

SHならシーホークも!と思ったけれど、シーホークの本は無いのか。

話は変わるけれど陸自や空自の大型ヘリCH-47J(チヌーク)って、災害派遣や孤島の緊急搬送、山火事なんかで大活躍ですが、あのヘリの前のローターは前傾して取り付けられています。Wiki見て知ったのですが、前のローターの先端部分の地上高はちょうど首の高さ位になるらしいので、なんかの理由で乗る事になったとしても、絶対にチヌークの直前に立たないでくださいね。通常は後ろから乗るように誘導されるとおもうけれど。

※ちなみに関東では木更津で待機しています。機会があれば基地際とかどうぞ。

シコルスキーSH-3シーキング

シコルスキーSH-3シーキング

  • 作者:
  • 出版社/メーカー: 文林堂
  • 発売日: 1999/06
  • メディア: ムック



モノクロール 1/72 陸上自衛隊CH-47J チヌーク

モノクロール 1/72 陸上自衛隊CH-47J チヌーク

  • 出版社/メーカー: トランペッター
  • メディア: おもちゃ&ホビー



1/72 CH-47J(LR)レスキューバード 航空自衛隊

1/72 CH-47J(LR)レスキューバード 航空自衛隊

  • 出版社/メーカー: ビーバーコーポーレーション
  • メディア: おもちゃ&ホビー



「ルネサスの本気」、SH-2Aセミナーに行ってきました。LESSON1 SH-2とSH-2Aの比較1 [RX&SH&H8]

K3300019.jpgまあ色々と変わっています。例えば動作周波数は従来のSH-2の倍以上、100MHz~200MHz動作となっています。

命令も随分と追加され、特にコントローラー系の命令としてはビット操作命令が追加されています。
まあ勿論最近のマイコンではビット操作命令自体は普通なんですが、SH-2にはそれが無かった(笑)。
これ、何がメリットかと言えば、ビット操作命令が存在すると言う事は1命令でビットの操作が可能と言う事です。
従来のSH-2では周辺IOの特定のビットを操作する時、1.読み込んで、2.変更して、3.書き戻してと最低3命令で実現していましたが、その間に割り込まれてしまい、その割り込みの中でも同じ周辺IOに対して操作が行われた場合、割り込みの中で行った操作が保証されない事になってしまいます。


例えばこうです。
1.mainの中でポートのデータレジスタを読み込み。
2.割り込み発生。
3.同じポートのデータレジスタを読み込み。
4.bit1を変更。
5.データレジスタに更新した値を書き戻し。
6.割り込み終了。
7.mainの中でbit0を変更。この時、bit1には割り込み前の値が記憶されている事に注意。
8.データレジスタに更新した値を書き戻し。
と、折角割り込みでbit1の値を更新したにも関わらず、その直後で古い値に戻されてしまいました。

しかしbit操作命令を使用するとこうなります。
1.mainの中でbit操作命令を実行。同時に割り込み要求も発生するがbit操作命令が完了しない限り割り込みには入れない。
2.割り込み発生。
3.bit操作命令の実行。
4.割り込み終了。
と、bit操作命令が実行している間は誰にも邪魔されずに完了する事ができるので、結果、先に挙げたような問題が発生しないと言う事です。

※RTOSを使った場合もSH-2の場合は同様の問題が発生します。

SuperHで学ぶμITRON仕様OS―リアルタイムOSの動作原理と実装法がわかる!

SuperHで学ぶμITRON仕様OS―リアルタイムOSの動作原理と実装法がわかる!

  • 作者: 鹿取 祐二
  • 出版社/メーカー: 電波新聞社
  • 発売日: 2005/12
  • メディア: 単行本



SuperHファミリのCプログラミング

SuperHファミリのCプログラミング

  • 作者: 鹿取 祐二
  • 出版社/メーカー: オーム社
  • 発売日: 2008/09
  • メディア: 単行本



「ルネサスの本気」、SH2Aセミナーに行ってきました。 [RX&SH&H8]

ルネサスの本気です。



K3300018.jpg
K3300019.jpg
K3300020.jpg


講師はあの方なので、当然使う上で有益な情報を盛り沢山に披露してくれました。
やっぱりSHもいいよねー。こうやって色々解説してもらえると(良い所も悪いところも)、使ってみたくなります。
午後からがっつりやって、それで無償ですから。チャンスが有れば皆さんも是非。
なお、資料そのままは掲載できませんので、私なりにSH2Aについて判った事を、順次掲載していこうかな!っと。

今回のマイコンはSH2A/SH7216でしたが、ルネサス好きならばSH7262もちょっと押さえておいてください。多分損はしません。

余談
そう言えばルネサスのマイコンと言うより、H系のマイコンには長らくSPIが無かったような気がしないでも無い事もないのだが、やはり過去に日立とモトローラであれが有ったからか?。



SuperHファミリのCプログラミング

SuperHファミリのCプログラミング

  • 作者: 鹿取 祐二
  • 出版社/メーカー: オーム社
  • 発売日: 2008/09
  • メディア: 単行本



SuperHで学ぶμITRON仕様OS―リアルタイムOSの動作原理と実装法がわかる!

SuperHで学ぶμITRON仕様OS―リアルタイムOSの動作原理と実装法がわかる!

  • 作者: 鹿取 祐二
  • 出版社/メーカー: 電波新聞社
  • 発売日: 2005/12
  • メディア: 単行本



この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。