H8,SH,マイコン,ぼやき川柳,ダウンロード

パイの計算


世の中に無駄な物は色々ある。
πって、普通に暮らしていたら、3桁で十分である。10桁あれば一生のことは足りるよう気がする。それを何百、何千と計算して何の意味があるだろう?そんなことを考えていると、寒い中を毎日会社に行ったり、果てはどうせ、宇宙は何れ収縮を始めるだろうから、人は何のために生まれてきたのだろう、などとなってしまう・・・。なのでそれこそ無駄なことで悩むのは止めよう。
SH-2Aがどんなに頑張っても、パソコンには敵う筈がない。ただ、有利なのは電気代の心配をしなくてよいことだ。
頭が悪いので、計算式の意味はさっぱり分からないが、プログラム(計算方法)のバリエーションを考えると、当分遊べそうである。
初期(プレーン)の実行結果は下記のような感じ、
Tiny Dump Monitor
>
>
>ub
Binaryimage download start!
Download address = 1C000000h
Binaryimage download start! ................................................................................................................
Download program size : 6F28h
Jump address = 1C000500h
Download program start!!



時刻を設定する場合は年月日をYYYYMMDDhhmmssの形式で入力してください。
設定しない場合は空送信してください。20101221220100

時刻は20101221220100でよいですか?(Yes/No)

y
?算する桁数は1000

計算桁数 L=1024(64の倍数へ)


計算開始:2010/12/21   22:01:03.59
計算終了:2010/12/21   22:01:05.31



 π = 3.
        1  14159265 35897932 38462643 38327950    28841971 69399375 10582097 49445923
       65  07816406 28620899 86280348 25342117    06798214 80865132 82306647 09384460
      129  95505822 31725359 40812848 11174502    84102701 93852110 55596446 22948954
      193  93038196 44288109 75665933 44612847    56482337 86783165 27120190 91456485
      257  66923460 34861045 43266482 13393607    26024914 12737245 87006606 31558817
      321  48815209 20962829 25409171 53643678    92590360 01133053 05488204 66521384
      385  14695194 15116094 33057270 36575959    19530921 86117381 93261179 31051185
      449  48074462 37996274 95673518 85752724    89122793 81830119 49129833 67336244
      513  06566430 86021394 94639522 47371907    02179860 94370277 05392171 76293176
      577  75238467 48184676 69405132 00056812    71452635 60827785 77134275 77896091
      641  73637178 72146844 09012249 53430146    54958537 10507922 79689258 92354201
      705  99561121 29021960 86403441 81598136    29774771 30996051 87072113 49999998
      769  37297804 99510597 31732816 09631859    50244594 55346908 30264252 23082533
      833  44685035 26193118 81710100 03137838    75288658 75332083 81420617 17766914
      897  73035982 53490428 75546873 11595628    63882353 78759375 19577818 57780532
      961  17122680 66130019 27876611 19590921    64201989 38095257 20106548 58632788

表示終了:2010/12/21   22:01:05.44




Tiny Dump Monitor
>
>ub
Binaryimage download start!
Download address = 1C000000h
Binaryimage download start! ................................................................................................................
Download program size : 6F28h
Jump address = 1C000500h
Download program start!!



時刻を設定する場合は年月日をYYYYMMDDhhmmssの形式で入力してください。
設定しない場合は空送信してください。
?算する桁数は1000

計算桁数 L=1024(64の倍数へ)


計算開始:2010/12/21   22:01:39.94
計算終了:2010/12/21   22:01:41.66



 π = 3.
        1  14159265 35897932 38462643 38327950    28841971 69399375 10582097 49445923
       65  07816406 28620899 86280348 25342117    06798214 80865132 82306647 09384460
      129  95505822 31725359 40812848 11174502    84102701 93852110 55596446 22948954
      193  93038196 44288109 75665933 44612847    56482337 86783165 27120190 91456485
      257  66923460 34861045 43266482 13393607    26024914 12737245 87006606 31558817
      321  48815209 20962829 25409171 53643678    92590360 01133053 05488204 66521384
      385  14695194 15116094 33057270 36575959    19530921 86117381 93261179 31051185
      449  48074462 37996274 95673518 85752724    89122793 81830119 49129833 67336244
      513  06566430 86021394 94639522 47371907    02179860 94370277 05392171 76293176
      577  75238467 48184676 69405132 00056812    71452635 60827785 77134275 77896091
      641  73637178 72146844 09012249 53430146    54958537 10507922 79689258 92354201
      705  99561121 29021960 86403441 81598136    29774771 30996051 87072113 49999998
      769  37297804 99510597 31732816 09631859    50244594 55346908 30264252 23082533
      833  44685035 26193118 81710100 03137838    75288658 75332083 81420617 17766914
      897  73035982 53490428 75546873 11595628    63882353 78759375 19577818 57780532
      961  17122680 66130019 27876611 19590921    64201989 38095257 20106548 58632788

表示終了:2010/12/21   22:01:41.79
 
1000桁で約2秒なので結構速い。(ちなみに1万桁で2分45秒だった。但し、同じ1万桁が、我が家のPCではたった数秒で終わった)
2万桁で10分52秒
Tera Termの設定の問題だと思うのだけど、入力文字が端末に表示されない。ローカルエコーをチェックすれば表示されるが、そうするとファイル送信が正常に出来なくなってしまう。仕方がないので、SH-2A側のcharget()からputchar()を呼んでリモートエコーバックした

たかが、数百行のプログラムで、πが計算出来るのは感動です
 
 

 

苦労?した処


いつものように、肝心なところは他サイトから頂いたので、苦労と言えるほどの苦労はしていないけれど、

一、折角、パイの計算をしても速いのか遅いのか分からないのではチューニング出来ないので、RTCを使って、
  計算開始時刻と計算終了時刻を表示するようにした。RTCと言うだけあって、SH-2Aの時刻はRESETしても
  消えない。すばらしい!!
  例えば、上記ログの2回目の実行時は時刻情報を入力していません
 
二、しかし、流石に電源を切ると、時刻情報は消えてしまうので、最初は時刻情報を入力できるようにする必要がある。
  GPSや電波時計と連携して時刻を入力すれば恰好良いが、そんな器量はないので、手入力することにした。
  この為、シリアル通信経由でcharget()を実装し、gets()やscanf()などの入力関数を使えるようにしました。
  printf()への対応方法は本誌(8月号P52)に解説がありますが、scanf()については記述されていませんでした。

参、細かな話ですが、表示方法。1000桁とか、10000桁とか丁度、キリの良い数字にしたがるが、それでは
  最後の行の表示桁数が可変になり、面倒になります。ここは諦めて表示桁数を64の倍数に切り上げました

 
 

参考にさせて頂いたサイト


パイに計算方法について記述したサイトは幾つかありますが、内容的に問題があるサイトが多いなかで下記、サイトは秀逸でした。他のサイトのサンプルプログラムには初期化していない変数を参照しているものもあります。
他人を批判するほど、自分がちゃんとしているわけではないですが・・・。


パイの計算
たぶん、学生への課題だと思うのですが、lsub()がなかったので、ladd()を参考にして作成しました
非常に簡潔!説明など全く必要ないほど自明です
 

GingaX情報
RTCの実装方法を参考にさせていただきました
 

SH7262/SH7264 グループFIFO 内蔵シリアルコミュニケーションインタフェース調歩同期式モード送信設定例
シリアル通信での受信方式を参考、いや、そのまま使わせて頂きました
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
  
  
  
  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Menu

管理人/副管理人のみ編集できます