世の中に無駄な物は色々ある。
πって、普通に暮らしていたら、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 内蔵シリアルコミュニケーションインタフェース調歩同期式モード送信設定例
シリアル通信での受信方式を参考、いや、そのまま使わせて頂きました
コメントをかく