前の記事以来もう一ヶ月が経とうとしている。記事を上げたいが、この状態のまま経過報告するのもしゃくだ。何とかすっきりする結果にしてしまいたい。考えれば智恵が出るものだ。正しいチャンネルで再生成功(3/14/2013)デバッグに疲れると、他の事をやって気を紛らわす。メモにこれまでの経過を書きとめて、あれこれ仮説をたてる。解決策は生まれてこない。あきらめてブログにこれまでの経過を報告し、完全に直せなかったことを謝ろうと文案を考え始めたころ、ふっと方法を思いついた。タイマーのトグルにしたピンを勝手にいじれないのなら、トグルをデコードとは分けて何回かまわし(要するに空振り)、所定の位置に揃えてから再生を始めれば良いのではないか。トグルするピンの状態は、PINを読めばわかるはずだ。何か、光が差してきた。コードはそれほど難しくない。DAC割り込み部に空振りするロジックを加え、再生開始の方ではトグルピンを見て左チャネル(最初)になったのを確かめて、空振りをやめて再生に入る。うむ、これはうまくいきそうだぞ。あせる手でコンパイルする。何十回とやったテストを始める。何度やってもチャネルはぶれない。今までなら4~5回で必ず逆になる状態が20回以上やっても同じだ。いやあ、久しぶりの爽快感に体中が満たされていく。気分の良いことこの上ない。難しいパズルを解いたときの達成感である。苦労が大きければ大きいほど、この解決した時の喜びは何ものにも替えがたい。単なるデバッグでバージョンを上げるのは少々気が引けるが、混乱をさけるためV43としてプログラムソースを公開することにする。V41以降をお使いの方は、是非、このV43を使っていただきたい(V41以前はトグルを自前でやっているので問題ないと思われる)。この微妙な不具合を発見、報告していただいたn_piezoさんに改めて御礼を申し上げる。ここに例によって、AVRStudioのプロジェクトフォルダーを固めたソースコード一式を置きます。元の記事にもリンクを貼る予定です。上段が2号機、3号機の小さな液晶をつかったタイプ、下段が1号機のソースコードです。双方とも、ソースファイル名は前と変わっていないので注意してください。整数のルートですが、参考になる資料として、http://elm-chan.org/docs/avrlib/sqrt32.S↑のリンクをお勧めします。アセンブラコードですが、アルゴリズムは理解できると思います。※足し算、引き算、シフト命令しか使われていませんwこれはアセンブラやハードロジックに適した方法で、割り算とあまり変わらないコストで高速に計算でき、「余り」がある為、精度も好きなだけ計算できます。※展開法と言うらしいですが、コンピューターが開発される以前に既に開発されたアルゴリズムのようです。11時27分みなさん、色々な方法の紹介、ありがとうございました。>tomozhさん、ブレゼンハムというアルゴリズムを始めて知りました。>shuji009さん、これで円が描けるんですね。>O-Familyさん、おおー、読んでいただいているんですね。sinのテーブルを作るのが早いですかね。TCCR0BのFOC0Aビットの機能のご紹介ありがとうございます。これを使えば、わざわざ割り込みルーチンを空振りさせなくても出来そうですね。トグルの「強制変更」って、どっちに行くのか、やっぱり調べないと駄目か。11時56分がた老さん、お疲れ様です。円ですが、前にアップした動画で使っている方法が高速なので、マイコンと小さい画面用途になら、お勧めです。1;}}元ネタは、http://oku.edu.mie-u.ac.jp/~okumura/algo/のhttp://oku.edu.mie-u.ac.jp/~okumura/algo/archive/algo.lzhのcircle.cですが、色々な場面で使われています。runnerのマップ画面がでてくるとき、閉じるときのアルゴリズムもこの方式でした。00時00分こんにちは。私もこの手の処理をする時は、Sin等の関数テーブルを多用します。BASCOM-AVRのライブラリも、17バイトのSinテーブルで4象限を同時に描画するので、プログラムはとても簡単です。Timerのトグル動作の出力状態は、私も位相差を作る発振器の時に悩みました。解決は、OC0AとOC0Bポートの状態を読み出してから、[TCCR0B]の[FOC0A],[FOC0B]ビットでOC0AとOC0Bを任意の状態に設定できました。いつも興味深く拝見しております。円の描画ですが、僕はsin/cosを使ってやってました。ここのサイトで紹介されている方法です。http://www.ami3s.net/about_nsb/index18.htmlsinはπ/2の分をテーブルに持って、線はブレゼンハムで描画していました。16時57分コメントを書く名前:メールアドレス:(ウェブ上には掲載しません)アドレス(URL):この情報を登録するコメントは記事投稿者が公開するまで表示されません。STM8Sでグラフィック液晶に日本語文字が表示できた。