秋月ファンクラブ掲示板

No.3558へ返信

記事投稿フォーム
補助
送信

なんじゃらほい(2017/12/06 Wed 23:03) [ 編集 ] [ 返信 ]

Re^4: LED Cube2

>これもそうだと考えました。早計でしたか?

いやむしろ悠長で気が長いという意味です。



>> チカラ技第3弾のHEX STEP変化版 重複あり1mS

>これまで固定だったSTEPDATAを途中で変化させる仕様なんでしょうか。

重複回数を指定する部分にSTEPDATAを設定する記述を追加しました。

MOVLW D'12'
MOVWF STEPDATA
GOTO UPSTART ;どれも該当しないなら、そのまま表示へ

S1SET MOVLW D'200'
MOVWF CHOUFU
MOVLW D'1'
MOVWF STEPDATA
GOTO UPSTART

S2SET MOVLW D'120'
MOVWF CHOUFU
MOVLW D'4'
MOVWF STEPDATA
GOTO UPSTART

S3SET MOVLW D'30'
MOVWF CHOUFU
MOVLW D'8'
MOVWF STEPDATA
GOTO UPSTART

> 頭脳技版TIMER1使用の最低加減速インターバル50mS版
> 頭脳技版TIMER1使用の最低加減速インターバル250mS版
> 頭脳技版TIMER1使用の最低加減速インターバル250mS版 STEPDATA5 最低ウェイト150マイクロ秒

>これらは力ずくではないスマートで美しい方法なんですね。

一定のインターバルで何かを処理する場合は、クロックを基準に自動的に一定間隔で処理するタイマー割り込みを使うのが正当な手法ですが、タイミングがシビアでなければ必然ではありません。

タイマー割り込みを使った方が、チカラ技版よりもリニアに変化させることが出来るので、美しくできる可能性がありますが、自由度という意味ではチカラ技版を極めた方が幅が取れます。

今回使った割り込みプログラムの大部分は、前回バスケットボールの24秒タイマーとかを作ったときに、7セグパターンのスキャンで処理速度がばらつき、あまりにも精度がメチャメチャだったので、その時に書いたものの抜き取り加工品です。



割り込み版はインターバル250mS版ではざっと計算したらDPCNTが70を割らないと、ほぼ意味がなかったようで、

>走らせてみました。ひとつめとふたつめはほぼ同じに見え2分で全点灯に達し、それが1秒弱続きました。
>みっつめは1分で全点灯に達し続いた時間はもっと短かったです。

よって、この様な結果だったと言うことですね。

>割り込みというのはさらに難しそうですね。

レジスタの設定が増え、お約束処理も増え、面倒が増えるだけですね。

解れば何てこと無いですが、初心者〜初級の人には結構敷居が高いはずです。



フィックス宣言が出る前にアセンブルしてあった物です。

気が向いたらどうぞ。10分掛からないと思います。

最低ウェイト150マイクロ秒、速度変化インターバル1秒版
:020000040000FA
:020000001528C1
:08000800AB00030EAA00AC0AD4
:1000100014302C02031D0E28AC01291458200C109A
:100020002A0E8300AB0E2B0E0900831660308F0062
:1000300000308600F03085008117831207309C0065
:100040000030900083160C1483120B178B17850158
:100050008601851405158515FF30A6000130A8001E
:10006000AC01A90133285D2061206D2065206D2041
:1000700069206D2065206D20291C34281010280867
:10008000A602031833280130A6005D2061206D20F0
:1000900065206D2069206D2065206D20291C462873
:1000A00010102808A607031C4528FF30A600332897
:1000B000C9308E003C308F000800AC01582010146D
:1000C000080085100515851508008514051185158E
:1000D0000800851405158511080005108601061411
:1000E0008A20860186148A20860106158A208601C8
:1000F00086158A20860106168A20860186168A20A1
:10010000860106178A20860186178A208601051433
:100110008A2008002608A7009D20A70803190800C8
:10012000A70B8C2808001330A1000000000000007D
:10013000A10B95280000000008001D30A100000060
:100140000000A10B9F280000000008006430A300FD
:100150000000000000000000000000000000A30BF1
:10016000A82808003230A4009320A40BB42808006B
:100170006430A4009320A40BBA2808002830A500FE
:10018000B220A50BC02808006430A500B220A50B42
:10019000C6280800C930A500B220A50BCC2808004D
:02400E00503F21
:02401000FD3F72
:00000001FF



>宿題が解けました。
>249行 GOTO UPSTART → GOTO DNSTART
>ではないでしょうか。これで意図どおりに動作します。

>いろいろカットアンドトライして、
>STEPDATA 30
>TIME150
>それに、ループ回数の配分を
>200,120,30 から 100,20,10 に変更しました。
>これで、
>・1発点灯横走り
>・2発点灯(に見える)横走り
>・3発点灯(に見える)横走り
>・3発点灯(に見える)縦走り
>・全点灯(に見える)トップスピード
>の見せ方で上り坂35秒全点灯10秒下り坂35秒と程よい遷移です。

これで、今回の勉強は十分でしょう。

>ICSPで書き込むことができました。MPLAB IPEで書き込みを開始すると、PICKit3からの電源で回路が走り出したのには驚きました。なるほど便利ですね。

>なんじゃらほいさんにお世話になった試作4号機もこれにて完成です。ありがとうございました。

ようやく完成ですね。不適切なパラメータの試験レポートご苦労様でした。



>せっかく頭脳版プログラムで鍛えてくださろうとしていたのに区切りをつけてしまって申し訳ありません。

レベルの飛びすぎたプログラムに手を出して混乱するよりも、現状レベルで少しずつステップアップする方が勉強になります。