新規登録がまだの方

下の[新規登録]ボタンを押してコミュニティに登録してください。

登録がお済みの方はこちら

コミュ二ティポイントのご案内

詳しく見る

マイコン情報の交換広場

マイコン情報の交換広場>掲示板

公開 メンバー数:19人

チャットに入る

サークル内の発言を検索する

サークルで活動するには参加が必要です。
「サークルに参加する」ボタンをクリックしてください。
※参加を制限しているサークルもあります。

閉じる

  • from: zwiさん

    2009年04月24日 16時16分58秒

    icon

    ストップウォッチパート2

    長くなったので新しいスレに移動しました。

    > 今さっき、
    > フローをアップしました。
    > また見てください。
    > よろしくお願いします。

    フロー見ました。
    1.メイン処理に割り込みは書かなくて良いですよ。
    2.メイン側にはSWの処理と状態変数の変更だけを書いてください。LCDの処理は後述しますが割り込み側に全部移動します。割り込みがスタートしたら、LCDはメインで制御してはいけません。
    3.割り込み側ですが、SWの判定はメイン担当なので状態変数で分岐するだけです。
    4.割り込み側で状態変数が1の時だけ秒数カウントしてください。
    5.割り込み側で状態変数に関係なく秒数の表示は常に行います。
    6.割り込み側でタイマーの再スタートは、割り込み直後に開始してください。秒数のカウントやLCD表示後ではタイマーの開始が遅れてしまって1秒のカウントが出来ません。

    で、制御がややこしくなったので、とりあえずの方針発表します。
    まず、簡易な制御でLCDを使うことにして表示する文字数に制限を加えます。複雑な制御にすれば、長い文字も扱えるのですが状態遷移を使いますので状態遷移に慣れてからとしますね。

    で割り込み中にLCDを制御することにしますが、割り込み周期が25msなため、割り込み処理は25ms以内に終了する必要があります。
    で、LCDの転送にかかる時間は1文字あたりWAITを含めると4ms以上掛かるので余裕を見て5msと仮定した場合、カーソル移動と4文字処理が25ms以内に出来る限界です。
    ですのでストップウォッチで表示できる文字は4文字以内でかつカーソル移動は一回のみです。2文字は秒数で使うので、"sec"はタイマースタート前に先に表示して置いてください。
    あとはスタート、カウント中、ストップですが、次のような案はどうでしょう?
    スタート: S:00sec
    カウント中:R:04sec
    ストップ: E:55sec
    理想は色々あるとは思いますが、今の時点で出来る方法としての提案です。
    状態遷移を覚えて徐々に機能アップを図りましょう。
    とりあえずフローの修正をお願いします。

    • サークルで活動するには参加が必要です。
      「サークルに参加する」ボタンをクリックしてください。
      ※参加を制限しているサークルもあります。

      閉じる

    • 43
    • サークルで活動するには参加が必要です。
      「サークルに参加する」ボタンをクリックしてください。
      ※参加を制限しているサークルもあります。

      閉じる

    • 0

    icon拍手者リスト

コメント: 全43件

from: zwiさん

2009年04月28日 15時13分29秒

icon

「Re:Re:Re:Re:Re:Re:Re:Re:Re:Re:Re:Re:Re:Re:Re:Re:Re:Re:Re:こんな感じになりました・・・」
> えーっと、
> フローチャートみながら、
> プログラムを書いたつもりなのですが、
> 「S:00sec」と表示され、
> sw押しても何も変わらずです。

えーと、フローはまだ未完成なはずですが?
また、慌てて作っちゃいました?
割り込み処理とストップウオッチのカウント部分を合成できてませんよ。「ストップウォッチのタイムカウント処理」を見る限りまだ間違いが有しますし「あと割り込みフローチャートのどことドッキングさせようかと・・LCDに秒数表示とおもってるのですが」が確実に間違ってます。


これからソースを眺めてみますけど。
問題だらけならフローをちゃんと仕上げましょう。ステップを順に勧めないと混乱するばかりなので中途半端なままプログラムに戻ることは禁止です。


> P.S.7時間睡眠できました(>_<)2倍くらい寝れました。

そりゃ良かった!。薬って合わないと全然ダメですね。

  • サークルで活動するには参加が必要です。
    「サークルに参加する」ボタンをクリックしてください。
    ※参加を制限しているサークルもあります。

    閉じる

  • サークルで活動するには参加が必要です。
    「サークルに参加する」ボタンをクリックしてください。
    ※参加を制限しているサークルもあります。

    閉じる

  • 0

icon拍手者リスト

from: Simbaさん

2009年04月28日 15時00分53秒

icon

「Re:Re:Re:Re:Re:Re:Re:Re:Re:Re:Re:Re:Re:Re:Re:Re:Re:Re:こんな感じになりました・・・」
えーっと、
フローチャートみながら、
プログラムを書いたつもりなのですが、
「S:00sec」と表示され、
sw押しても何も変わらずです。

今日は朝からずーっとマイコンやってたんですが、
どこがおかしいのか、を見ていたら、どれもアカンような
気がして、意気消沈してます。

気分変えて、
社労士の勉強をやらんと♪

P.S.7時間睡眠できました(>_<)2倍くらい寝れました。

  • サークルで活動するには参加が必要です。
    「サークルに参加する」ボタンをクリックしてください。
    ※参加を制限しているサークルもあります。

    閉じる

  • サークルで活動するには参加が必要です。
    「サークルに参加する」ボタンをクリックしてください。
    ※参加を制限しているサークルもあります。

    閉じる

  • 0

icon拍手者リスト

from: Simbaさん

2009年04月27日 21時21分49秒

icon

「Re:Re:Re:Re:Re:Re:Re:Re:Re:Re:Re:Re:Re:Re:Re:Re:Re:Re:こんな感じになりました・・・」
> >
> > > BCLR #0,@TSR0は別の意味があります。
>
> それで合ってるとは思うんですがマニュアルの説明が悪くてはっきりしないんですよね。

さっきからずっとマニュアル読んでるんですが、
突然知らない言葉というかアルファベットの固まりが
でてくるので、あたふたしてます。
手強いですね〜。
ちゃんとしたテクニカルライターに見せてないのかな・・・




> > で、割り込みなんですが、
> > カウンタTCNTのカウンタ値が、今回の場合、GRA0の値と一致したとき、TCNTがクリアされ、割り込み要求をするということですよね・・・
>
> それはOKだと思います。

よかった(泣ここ外すと受験勉強中断して、
2,3日マイコンのみを勉強しようかと考えてました。


> simbaさんは、慌ててやるところがあるので落ち着いてやりましょう。一歩止まって考えてみる事から。

そうですね;;図星です。昔からそうなんですよ〜。
直さないと・・・

ということで、
今日は、寝ようかと。睡眠薬の種類を変えたので、
試してみたいのです。せめて4時間は寝たい;;

明日、コメントとプログラムの整合性を見た方がいいですよね。今のプログラム、つぎはぎだらけな感じがして・・・

では、おやすみなさい

P.S. この掲示板って反映されるのに結構タイムラグありますよね^^;

  • サークルで活動するには参加が必要です。
    「サークルに参加する」ボタンをクリックしてください。
    ※参加を制限しているサークルもあります。

    閉じる

  • サークルで活動するには参加が必要です。
    「サークルに参加する」ボタンをクリックしてください。
    ※参加を制限しているサークルもあります。

    閉じる

  • 0

icon拍手者リスト

from: zwiさん

2009年04月27日 20時45分36秒

icon

「Re:Re:Re:Re:Re:Re:Re:Re:Re:Re:Re:Re:Re:Re:Re:Re:Re:こんな感じになりました・・・」
>
> > BCLR #0,@TSR0は別の意味があります。
>
> この部分、以下のように理解しました。
> ITUは割り込み要求が発生すると、TSRレジスタにフラグを立てます。今回の場合はbit0のIMFAで、1回フラグが立ったら、これをクリアしないと、次の割り込みが発生しなくなる。なので、そうはならないように、割り込みルーチンの最初の方でフラグをクリアして、次回の割り込みを可能にしてから、現在の割り込みルーチンを処理する、ですよね・・・

それで合ってるとは思うんですがマニュアルの説明が悪くてはっきりしないんですよね。

> で、割り込みなんですが、
> カウンタTCNTのカウンタ値が、今回の場合、GRA0の値と一致したとき、TCNTがクリアされ、割り込み要求をするということですよね・・・

それはOKだと思います。

>
> 今回のプログラムに関してのやりとりで、
> 一生懸命教えてくださってるzwiさんに対して、
> ナメた振る舞いをした(するつもりはなかったのです)
> ことをお詫びします。
> サブルーチンや割り込みなど聞いたことあるけど、こんなに突っ込んでやったことがなく、パニックになって・・・
> あのちゃんとできるところはちゃんとしますので、
> これからもよろしくお願いします。

別の怒ってませんよ。
とりあえず、思い込みは危険なので止めましょうってだけですよ。プログラムのバグの大半は思い込みが原因ですから。
自分を疑え・他人を疑えがバグ取りの合言葉です。

simbaさんは、慌ててやるところがあるので落ち着いてやりましょう。一歩止まって考えてみる事から。

  • サークルで活動するには参加が必要です。
    「サークルに参加する」ボタンをクリックしてください。
    ※参加を制限しているサークルもあります。

    閉じる

  • サークルで活動するには参加が必要です。
    「サークルに参加する」ボタンをクリックしてください。
    ※参加を制限しているサークルもあります。

    閉じる

  • 0

icon拍手者リスト

from: Simbaさん

2009年04月27日 19時51分47秒

icon

「Re:Re:Re:Re:Re:Re:Re:Re:Re:Re:Re:Re:Re:Re:Re:Re:こんな感じになりました・・・」

> BCLR #0,@TSR0は別の意味があります。

この部分、以下のように理解しました。
ITUは割り込み要求が発生すると、TSRレジスタにフラグを立てます。今回の場合はbit0のIMFAで、1回フラグが立ったら、これをクリアしないと、次の割り込みが発生しなくなる。なので、そうはならないように、割り込みルーチンの最初の方でフラグをクリアして、次回の割り込みを可能にしてから、現在の割り込みルーチンを処理する、ですよね・・・

で、割り込みなんですが、
カウンタTCNTのカウンタ値が、今回の場合、GRA0の値と一致したとき、TCNTがクリアされ、割り込み要求をするということですよね・・・

申し訳ないのですが、この部分だけOKかNGか、
教えてもらえませんか?

今回のプログラムに関してのやりとりで、
一生懸命教えてくださってるzwiさんに対して、
ナメた振る舞いをした(するつもりはなかったのです)
ことをお詫びします。
サブルーチンや割り込みなど聞いたことあるけど、こんなに突っ込んでやったことがなく、パニックになって・・・

あのちゃんとできるところはちゃんとしますので、
これからもよろしくお願いします。

ちゃんとできてないときは、
分かってないか、
頭ん中のいろんな物質がラジカル反応おこしてると思ってください。躁状態ですね;;

さてと、
最初から見直してきます。

  • サークルで活動するには参加が必要です。
    「サークルに参加する」ボタンをクリックしてください。
    ※参加を制限しているサークルもあります。

    閉じる

  • サークルで活動するには参加が必要です。
    「サークルに参加する」ボタンをクリックしてください。
    ※参加を制限しているサークルもあります。

    閉じる

  • 0

icon拍手者リスト

from: zwiさん

2009年04月27日 16時35分03秒

icon

「Re:Re:Re:Re:Re:Re:Re:Re:Re:Re:Re:Re:Re:Re:Re:こんな感じになりました・・・」
> 疑問が・・・
> タイマの初期設定で
> BSET #0,@TSTR カウント開始
> RTS
>
> 割り込みルーチンで
> BCLR #0,@TSR0 カウンタ止める・・・でいいんですよね

マニュアル見てみましたが違いますね。
TSTRはタイマそのもの動作を決めるレジスタですが、TSR0はコンペアマッチのステータスレジスタですね。
BCLR #0,@TSR0は別の意味があります。

> 初期設定でカウント開始するのは、
> 分かるんですが、
> 割り込みルーチンでいきなり止めるのは何故??
> と思ってます。
> 止めてる間に作業して、
> で、またカウントするんですか?

すでに勘違している思いますので、マニュアルを参照してください。結構大事なポイントです。
私もsimbaさんのソースコメントを信じていた部分ががあってそのまま間違ったコメントを書いたかもしれませんので、一度忘れて全部を見直してください。

  • サークルで活動するには参加が必要です。
    「サークルに参加する」ボタンをクリックしてください。
    ※参加を制限しているサークルもあります。

    閉じる

  • サークルで活動するには参加が必要です。
    「サークルに参加する」ボタンをクリックしてください。
    ※参加を制限しているサークルもあります。

    閉じる

  • 0

icon拍手者リスト

from: Simbaさん

2009年04月27日 14時52分23秒

icon

「Re:Re:Re:Re:Re:Re:Re:Re:Re:Re:Re:Re:Re:Re:こんな感じになりました・・・」
帰ってきました。
GW前なので凄い人だかりで・・・

夕方まで社労士の勉強します。

晩飯後、ストップウォッチ関連をしようかと思ってます。できれば助言を頂ければと・・・zwiさんにも予定があるだろうし、無理はしないで下さい。

家、晩飯6時なんですよ(はやっ!!)
食べ終わるの6時半www

疑問が・・・
タイマの初期設定で
BSET #0,@TSTR カウント開始
RTS

割り込みルーチンで
BCLR #0,@TSR0 カウンタ止める・・・でいいんですよね

初期設定でカウント開始するのは、
分かるんですが、
割り込みルーチンでいきなり止めるのは何故??
と思ってます。
止めてる間に作業して、
で、またカウントするんですか?

タイマでは
GRA0=49999→0、49999→0・・・と延々繰り返してるのですよね?

あーもっかいタイマの載ってる本見直します。
といっても、今から社労士せんとアカンので、
明朝かな・・・

といわけです。




  • サークルで活動するには参加が必要です。
    「サークルに参加する」ボタンをクリックしてください。
    ※参加を制限しているサークルもあります。

    閉じる

  • サークルで活動するには参加が必要です。
    「サークルに参加する」ボタンをクリックしてください。
    ※参加を制限しているサークルもあります。

    閉じる

  • 0

icon拍手者リスト

from: Simbaさん

2009年04月27日 08時07分44秒

icon

「Re:Re:Re:Re:Re:Re:Re:Re:Re:Re:Re:Re:Re:Re:こんな感じになりました・・・」
おはようございます again!!

午前中、病院回りなので、
昼過ぎ帰宅予定です。

とにかく睡眠時間2,3時間から逃れたい;;

では、行ってきます。

  • サークルで活動するには参加が必要です。
    「サークルに参加する」ボタンをクリックしてください。
    ※参加を制限しているサークルもあります。

    閉じる

  • サークルで活動するには参加が必要です。
    「サークルに参加する」ボタンをクリックしてください。
    ※参加を制限しているサークルもあります。

    閉じる

  • 0

icon拍手者リスト

from: Simbaさん

2009年04月27日 02時37分27秒

icon

「Re:Re:Re:Re:Re:Re:Re:Re:Re:Re:Re:Re:Re:Re:こんな感じになりました・・・」
気がついたら寝てました;;
不覚!!
おはようございます。

> 最後のループが違う気が・・・。
> サブルーチンとしてはRTSすべき所では?

うーん、もひとつ分かってない所が歯がゆいです。
RTSか・・・

> あと99になったときの処理が無いですね。

99のは今回は無しとなったから、
省いたのですが^^;
付け足しておきます。

  • サークルで活動するには参加が必要です。
    「サークルに参加する」ボタンをクリックしてください。
    ※参加を制限しているサークルもあります。

    閉じる

  • サークルで活動するには参加が必要です。
    「サークルに参加する」ボタンをクリックしてください。
    ※参加を制限しているサークルもあります。

    閉じる

  • 0

icon拍手者リスト

from: zwiさん

2009年04月26日 20時33分32秒

icon

「Re:Re:Re:Re:Re:Re:Re:Re:Re:Re:Re:Re:Re:こんな感じになりました・・・」
> タイムカウント処理のチャートを書いてみました。
> アップしてます。
> 見てください。
> なんか凄いものをつくってる感じで、
> というか、
> ストップウォッチってこんなに大変な処理をしてるに
> 感動してます。

最後のループが違う気が・・・。
サブルーチンとしてはRTSすべき所では?
あと99になったときの処理が無いですね。

  • サークルで活動するには参加が必要です。
    「サークルに参加する」ボタンをクリックしてください。
    ※参加を制限しているサークルもあります。

    閉じる

  • サークルで活動するには参加が必要です。
    「サークルに参加する」ボタンをクリックしてください。
    ※参加を制限しているサークルもあります。

    閉じる

  • 0

icon拍手者リスト

from: Simbaさん

2009年04月26日 19時31分50秒

icon

「Re:Re:Re:Re:Re:Re:Re:Re:Re:Re:Re:Re:こんな感じになりました・・・」
タイムカウント処理のチャートを書いてみました。
アップしてます。

見てください。

なんか凄いものをつくってる感じで、
というか、
ストップウォッチってこんなに大変な処理をしてるに
感動してます。


  • サークルで活動するには参加が必要です。
    「サークルに参加する」ボタンをクリックしてください。
    ※参加を制限しているサークルもあります。

    閉じる

  • サークルで活動するには参加が必要です。
    「サークルに参加する」ボタンをクリックしてください。
    ※参加を制限しているサークルもあります。

    閉じる

  • 0

icon拍手者リスト

from: Simbaさん

2009年04月26日 18時40分22秒

icon

「Re:Re:Re:Re:Re:Re:Re:Re:Re:Re:Re:Re:こんな感じになりました・・・」
なるほど〜

メモしときます。というよりも、結構インパクトのある説明なので、記憶に残るでしょう。

今晩は10:30頃に薬のんで寝ようかと・・・
(先日、薬が変わって寝れなくなったんですが;;)

さてと、ストップウォッチのタイムカウント処理を書きます。
書いてたとおもってたやつは、全く別物でした;;

少しばかりご飯休憩♪

  • サークルで活動するには参加が必要です。
    「サークルに参加する」ボタンをクリックしてください。
    ※参加を制限しているサークルもあります。

    閉じる

  • サークルで活動するには参加が必要です。
    「サークルに参加する」ボタンをクリックしてください。
    ※参加を制限しているサークルもあります。

    閉じる

  • 0

icon拍手者リスト

from: zwiさん

2009年04月26日 18時19分51秒

icon

「Re:Re:Re:Re:Re:Re:Re:Re:Re:Re:Re:こんな感じになりました・・・」
> 「メモリ上に置く」理由は、レジスタだと中身を変更されやすいからでしょうか??

基本的にレジスタはメイン処理のためもので、割り込み処理はレジスタに値を保持してはいけません。

理由は、メインが大きくなると絶対割り込みで使っているレジスタを忘れて使ってしまうから。そうするとメインと割り込みで同じレジスタを使うことになり、どっちかが誤動作します。割り込みのレジスタを避けながらメイン処理を組むのはナンセンス。物事を忘れる人間には無理です。
特に今後機能追加する予定のプログラムにそんなものを紛れ込ませはいけません。

割り込む処理中で使う値をレジスタ保持するのは、裏技中の裏技テクニックで、よほど高速化したいコンパクトなプログラム以外では使ってはいけません。それと全てのレジスタの状況と割り込み状態をイメージできる天才的な天才的な頭脳が必要。様はCPUのシミュレーションが頭の中で完全に出来る人物だけ。凡人は、凡人向けの安全な組み方をすべし。

  • サークルで活動するには参加が必要です。
    「サークルに参加する」ボタンをクリックしてください。
    ※参加を制限しているサークルもあります。

    閉じる

  • サークルで活動するには参加が必要です。
    「サークルに参加する」ボタンをクリックしてください。
    ※参加を制限しているサークルもあります。

    閉じる

  • 0

icon拍手者リスト

from: Simbaさん

2009年04月26日 17時26分00秒

icon

「Re:Re:Re:Re:Re:Re:Re:Re:Re:Re:こんな感じになりました・・・」

> 「25msインターバルタイマ割り込みに置いてあるレジスタ」について
>
> 1.割り込み処理中の値はレジスタ保存してはいけません。

はい、わかりました。
割り込み-メイン間をまたぐものだけかと思ってました。


> 2.今フローを書いているこの割り込みルーチンが「25msインターバルタイマ割り込み」そのものですので、別の割り込みルーチンはありませんよ。

はい。

> 3.「秒数カウンタのレジスタ」の様なレジスタだけでの保持は絶対禁止です。かならずメモリ上に置いてください。

はい、肝に銘じます。

「メモリ上に置く」理由は、レジスタだと中身を変更されやすいからでしょうか??

  • サークルで活動するには参加が必要です。
    「サークルに参加する」ボタンをクリックしてください。
    ※参加を制限しているサークルもあります。

    閉じる

  • サークルで活動するには参加が必要です。
    「サークルに参加する」ボタンをクリックしてください。
    ※参加を制限しているサークルもあります。

    閉じる

  • 0

icon拍手者リスト

from: zwiさん

2009年04月26日 17時15分16秒

icon

「Re:Re:Re:Re:Re:Re:Re:Re:Re:こんな感じになりました・・・」
> 25msインターバルタイマ割り込みに置いてあるレジスタで、このレジスタは計算上(1sec/25ms=40回)割り込みの40回目毎に1秒となるので、それを拾って1秒ごとにカウントアップするレジスタを「秒数カウンタ」と読んでいます。
> 割り込みをとめてはいけないとなると、
> state=2の情報をもらって、秒数カウンタのレジスタから、その時の値を退避させるレジスタを作り、そのレジスタをLCDに表示させるというのはどうでしょうか。

「25msインターバルタイマ割り込みに置いてあるレジスタ」について

1.割り込み処理中の値はレジスタ保存してはいけません。

2.今フローを書いているこの割り込みルーチンが「25msインターバルタイマ割り込み」そのものですので、別の割り込みルーチンはありませんよ。

3.「秒数カウンタのレジスタ」の様なレジスタだけでの保持は絶対禁止です。かならずメモリ上に置いてください。

  • サークルで活動するには参加が必要です。
    「サークルに参加する」ボタンをクリックしてください。
    ※参加を制限しているサークルもあります。

    閉じる

  • サークルで活動するには参加が必要です。
    「サークルに参加する」ボタンをクリックしてください。
    ※参加を制限しているサークルもあります。

    閉じる

  • 0

icon拍手者リスト

from: Simbaさん

2009年04月26日 16時48分49秒

icon

「Re:Re:Re:Re:Re:Re:Re:Re:こんな感じになりました・・・」
>
> [疑問1]
> state=2で
> 「2.秒数カウントを止める」
> とありますが、秒数カウントは何処で行われていて、どういう仕組みで止めますか?
> ただし、割り込みを止めていけません。

割り込みをとめることを考えてました。

25msインターバルタイマ割り込みに置いてあるレジスタで、このレジスタは計算上(1sec/25ms=40回)割り込みの40回目毎に1秒となるので、それを拾って1秒ごとにカウントアップするレジスタを「秒数カウンタ」と読んでいます。
割り込みをとめてはいけないとなると、
state=2の情報をもらって、秒数カウンタのレジスタから、その時の値を退避させるレジスタを作り、そのレジスタをLCDに表示させるというのはどうでしょうか。


> [疑問2]
> 「現在の秒数をメモリNUM1,NUM10に記憶する」
> とありますが、唐突に出てきた「現在の秒数」とは何処のレジスタや何処のメモリから持ってきた値ですか?

疑問1の回答の中の秒数カウンタとしているレジスタ内にあるデータが現在の秒数です。また、NUM1、NUM10はそれぞれRAM上のメモリで、秒数カウンタの1の位をNUM1、10の位をNUM10に代入しております。

> [疑問3]
> いちばん肝心のストップウォッチのタイムカウント処理はフローから何処へ消えたのでしょうか?

すいません。最初はあったのですが・・・
失念してました。

肝心なものを忘れるなんて・・・


  • サークルで活動するには参加が必要です。
    「サークルに参加する」ボタンをクリックしてください。
    ※参加を制限しているサークルもあります。

    閉じる

  • サークルで活動するには参加が必要です。
    「サークルに参加する」ボタンをクリックしてください。
    ※参加を制限しているサークルもあります。

    閉じる

  • 0

icon拍手者リスト

from: zwiさん

2009年04月26日 16時04分40秒

icon

「Re:Re:Re:Re:Re:Re:Re:こんな感じになりました・・・」
フロー見ました。

[疑問1]
state=2で
「2.秒数カウントを止める」
とありますが、秒数カウントは何処で行われていて、どういう仕組みで止めますか?
ただし、割り込みを止めていけません。

[疑問2]
「現在の秒数をメモリNUM1,NUM10に記憶する」
とありますが、唐突に出てきた「現在の秒数」とは何処のレジスタや何処のメモリから持ってきた値ですか?

[疑問3]
いちばん肝心のストップウォッチのタイムカウント処理はフローから何処へ消えたのでしょうか?

  • サークルで活動するには参加が必要です。
    「サークルに参加する」ボタンをクリックしてください。
    ※参加を制限しているサークルもあります。

    閉じる

  • サークルで活動するには参加が必要です。
    「サークルに参加する」ボタンをクリックしてください。
    ※参加を制限しているサークルもあります。

    閉じる

  • 0

icon拍手者リスト

from: Simbaさん

2009年04月26日 15時31分24秒

icon

「Re:Re:Re:Re:Re:Re:こんな感じになりました・・・」
フローチャート書き直しました。
これで動くとおもうのですが。
割り込みフローのはじめにカーソル位置をホームにもってくるようにしました。



ご査証くださいm(_ _)m


  • サークルで活動するには参加が必要です。
    「サークルに参加する」ボタンをクリックしてください。
    ※参加を制限しているサークルもあります。

    閉じる

  • サークルで活動するには参加が必要です。
    「サークルに参加する」ボタンをクリックしてください。
    ※参加を制限しているサークルもあります。

    閉じる

  • 0

icon拍手者リスト

from: Simbaさん

2009年04月26日 14時29分22秒

icon

「Re:Re:Re:Re:Re:Re:こんな感じになりました・・・」
> > このブロックでは、秒数を表示しないで(次のステップで表示するから)、準備だけするようにしました。
> > 割り込みフローも書き換えしようかと。
> > つまり、[S:  sec]という様にしてみようかと思いますがどうなんでしょうか?
> > いけると思うんですが。

> はい。OKです。

では、書き換えてフローチャートに反映させます。

> > 10の位を含めて秒数を表示するには、上記の4行がいるとおもってました。変な勘違いでしょうか?
>
> 2桁表示すると言う考え方は間違いないです。
> ただしフロー通りだと「ステートの処理」と「LCDに秒数表示」に両方に秒数表示処理がある事になります。
> それともフローと流れがちがうのでしょうか?

フローチャートの流れがおかしいです。上述のこともあり、うまく流れるようにフローを書いてみます。


> > > > それと、
> > > > S=00sec
> > > > R=26sec
> > > > E=55secのような感じになる
> > > > とありますが、「LCDに秒数表示」の部分だけの具体的なアセンブラのコードは

> MOV.B #B'00000011,R0L
> JSR @LCD_CONTROL
> はカーソル処理だと思うんですが。
> ソースコードに書かれている以上は、実行されてしまいます。不要なら書いてはいけません。

不要です。
割り込みフローチャートの最初のタイマ割り込み初期設定において、カーソル位置をホームに置くという風に変えようかと思うのですが。

> メインでLCDのカーソルをセットしても割り込みでLCD表示するたびにカーソル位置はずれて行くので、割り込み内でカーソル位置を再度設定する必要があります。なのでメインで何をやっても効果無しです。

そうですか、わかりました。

また、いろいろ考えてみます。

どうもありがとうございました。

  • サークルで活動するには参加が必要です。
    「サークルに参加する」ボタンをクリックしてください。
    ※参加を制限しているサークルもあります。

    閉じる

  • サークルで活動するには参加が必要です。
    「サークルに参加する」ボタンをクリックしてください。
    ※参加を制限しているサークルもあります。

    閉じる

  • 0

icon拍手者リスト

from: zwiさん

2009年04月26日 14時06分20秒

icon

「Re:Re:Re:Re:Re:こんな感じになりました・・・」
> このブロックでは、秒数を表示しないで(次のステップで表示するから)、準備だけするようにしました。
> 割り込みフローも書き換えしようかと。
> 秒数だけを次のステップで書き換えで、
> [S:],[R:],[E]をこのブロックで[S:]他同様に
> しようかと。[sec]はメインで出力しているのでおKかと。
> つまり、[S:  sec]という様にしてみようかと思いますがどうなんでしょうか?
> いけると思うんですが。

はい。OKです。

> > ???何度、秒数を表示するつもりですか?
>
> 10の位を含めて秒数を表示するには、上記の4行がいるとおもってました。変な勘違いでしょうか?

2桁表示すると言う考え方は間違いないです。
ただしフロー通りだと「ステートの処理」と「LCDに秒数表示」に両方に秒数表示処理がある事になります。
それともフローと流れがちがうのでしょうか?

> > > それと、
> > > S=00sec
> > > R=26sec
> > > E=55secのような感じになる
> > > とありますが、「LCDに秒数表示」の部分だけの具体的なアセンブラのコードは
> >
> > > MOV.B #B'00000011,R0L
> > > JSR @LCD_CONTROL
> > >
> > > MOV.B @NUM10,R2H ;10の位の数字
> > > JSR @LCD_TIME ;[秒数]表示
> > >
> > > MOV.B @NUM1,R2L ;1の位の数字
> > > JSR @LCD_TIME ;[秒数]表示
> > >
> >
> > カーソル処理をして25ms以内に割り込み処理は終わりますか?
>
> 頭のほうから
> ここまでくるのに、カーソル位置が十の位のところまできてるので、
> MOV.B @NUM10,R2L ;10の位の数字
> JSR @LCD_TIME ;[秒数]表示
> MOV.B @NUM1,R2L ;1の位の数字
> JSR @LCD_TIME ;[秒数]表示
> そのままの流れで、10の位数を流してやれば、
> うまくいくとおもうのですが・・・

MOV.B #B'00000011,R0L
JSR @LCD_CONTROL
はカーソル処理だと思うんですが。
ソースコードに書かれている以上は、実行されてしまいます。不要なら書いてはいけません。

> メインのフローチャートの「LDCに[sec]を表示」のところで、次のステップに行く前に、カーソル位置をホームにもっていこかと思ってます。

メインでLCDのカーソルをセットしても割り込みでLCD表示するたびにカーソル位置はずれて行くので、割り込み内でカーソル位置を再度設定する必要があります。なのでメインで何をやっても効果無しです。

  • サークルで活動するには参加が必要です。
    「サークルに参加する」ボタンをクリックしてください。
    ※参加を制限しているサークルもあります。

    閉じる

  • サークルで活動するには参加が必要です。
    「サークルに参加する」ボタンをクリックしてください。
    ※参加を制限しているサークルもあります。

    閉じる

  • 0

icon拍手者リスト

もっと見る icon