2011-08-01から1ヶ月間の記事一覧

円周率の計算 (10)

アセンブリ言語による arctan 公式による円周率の計算プログラムを、8 ビット縛りで STM8S-Discovery 用に、16 ビット縛りで PC (x86 プロセッサ) 用に作成しました。 ソース・プログラムは、両者とも 500 行を超えるので、この blog 上には置かず、web サイ…

円周率の計算 (9)

8 月 20 日の記事で検討した spigot アルゴリズムの変更点を、8 月 15 日の記事の Arduino 用のスケッチに適用し、乗除算部分をインライン・アセンブラによる 8 ビット演算に置き換えたプログラムを下に示します。 (Spigot 関数の部分のみ) 全体のスケッチの…

円周率の計算 (8)

8 月 20 日の記事で検討した、spigot アルゴリズムを base = 100、つまり 100 進数として扱う場合に 8 ビット演算におさまる条件は、100 進に限らず、他の場合でも有効であることが分かりました。 それは、 num[] の初期値を base にかかわらず「2」とする …

円周率の計算 (7)

STmicroelectronics 社の開発環境 ST Visual Develop (STVD) 用の spigot アルゴリズムのアセンブラ・ソースプログラムを下に示します。 STM8S Discovery 上で実行すると、PD5/UART2_TX 端子 (コネクタ CN4 の 10 番ピン) から 38.4 kbps シリアルでπの値を…

円周率の計算 (6)

「8 ビット縛り」の 8 ビット・マイコンとして、次は手持ちの STM8S Discovery (STmicroelectronics 製、STM8 コア) を選びました。 STM32F103 を使ったフラッシュ・ライタ/デバッグ・インターフェース部分と、切り離し可能な STM8S ターゲットボード部分と…

円周率の計算 (5)

8 月 13 日版のプログラム・リストを下に掲載します。 (8 月 17 日追記: コメント中の aran255 の公式の 44*acot(2072) の符号が誤っていたのを修正しました。 プログラム本体には誤りはありません。)

円周率の計算 (4)

8 月 9 日版のプログラムを改訂し、ATmega168 使用の Arduino でも修正なく実行可能にした 8 月 13 日版のプログラムを作りました。 バイナリ・スケッチ・サイズは 5602 バイトです。 プログラム・リストは次回、掲載します。 今回のプログラムでは、arctan …

円周率の計算 (3)

前回までの記事で書き忘れていたことがあったので、補足しておきます。 まず、「pi_atan.pde」の中の #define ADDSUBONLY 1 の行を削除あるいはコメント・アウトして、「ADDSUBONLY」というシンボルが未定義な状態にすると、MUL / ROL 命令を使ったプログラ…

円周率の計算 (2)

Arduino 用のスケッチを下に示します。 (8 月 11 日追記: ATmega328P を使ったタイプの Arduino 用のプログラムです。 ATmega168 を使ったタイプでの実行には修正が必要になります。 修正方法は 8 月 11 日の記事を参照してください。) 「pi_atan.h」と、「…

円周率の計算 (1)

今回からは、シンセ関係から離れて、円周率の計算について触れたいと思います。 それと言うのも、20 個ほどの LSTTL を使った「RETROF-8」という 8 ビット・コンピュータを製作されている方がいて、Web サイト上で進行状況を公開されています。 TTLのみでコ…

BBD コーラス (15) -- 逆数特性の VCO (10)

6 月 3 日付けの CMOS タイマ IC LMC555 を使った逆数特性の VCO の回路図を下に再掲し、回路動作の説明をします。 ワンショット回路は、555 タイマ IC 自体の本来の使用法により実現し、555 には存在しない定電流源と電流スイッチ部分を外付けの PNP トラン…

BBD コーラス (14) -- 逆数特性の VCO (9)

前回は、Vx を表す式を積分して時間平均を求めましたが、実は、ほとんど計算らしい計算をせずに時間平均の値を求めることができます。 それは、「定常状態」であれば、コンデンサに流れる電流の時間平均、つまり DC 成分は厳密に「ゼロ」なので、コンデンサ…