COUNTER



新BLOG
 
新BBS
MN-BBS
旧BBS
CALENDAR
S M T W T F S
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30     
<<  2024 - 04  >>
 
LOGIN
現在モード: ゲストモード
USER ID:
PASS:
CATEGORIES
ARCHIVES
PROFILE
OTHERS
    処理時間 0.27132秒
POWERED BY
POWERED BY
ぶろぐん
DESIGN BY
ブログンサポート
          
---新しい開発環境(8)---
 また、また、はまりました。二日ほど、あれこれ悩みました

 が結局、プログラムのミスでした。

 <はまったことその1>===============

    タイマー0とタイマー1の割り込みで、割り込みの関数

   部分で、初期値の設定を入れる部分が違ってました。

   switch文で、本来なら、switchを抜けてから再設定

   しなければならないのに、switchのなかに書いてました。

        void interrupt InterReceiver( void ){
            if(TMR1IF==1){
              if(ccw==0){
                  if(p_count<6){
                     p_count++;
                  }
                  switch(p_count){
                      case 1:cwOut=0;
                           ccwOut=0;
                           break;
                      case 2:cwOut=1;
                           ccwOut=0;
                           break;
                      case 3:cwOut=1;
                           ccwOut=1;
                           break;
                      case 4:cwOut=0;
                           ccwOut=1;
                           break;
                      case 5:cwOut=0;
                           ccwOut=0;
                           break;
                      case 6:cwOut=0;
                          ccwOut=0;
              TMR1L = tMr1_Low;//TMR1初期値
                TMR1H = tMr1_Hight;//

                            break;
         }

        }
        (本来の位置)
          TMR1IF=0;//割り込みフラグクリアー
    }


  TMR1L = tMr1_Low;//TMR1初期値
     TMR1H = tMr1_Hight;//


  の位置が問題でした。6回割り込みさせて、一連の動作が

  が終わるように組みましたが、初期値の設定を変えても

  割り込みの時間がほとんど変わりませんでした。

  なんのことはない、割り込みで、6回目に戻ってくる時に

  だけ初期値が設定されますので、1回だけは、期待した

  時間での割り込みがかかりますが、後の5回は、なんと

  設定の最大値、65536まで、カウントアップしてました。

  これでは、期待した動作になりません。

  期待した動作をさせるには、フラグのクリアーの前に入れ

  ないとだめでした。


  <はまったことその2>==============

   「main」のプログラムでは、必ず無限ループを作りますが、

   このなかの処理で、大きな勘違い。

   if文で判定をして、動作をさせましたが、if文に一回だけ

   入って処理をさせたかったのですが、一回動作をさせた

   後に、ifの条件を書き換えなかったので、動作を永遠に

   繰り返すことになって、終わりませんでした。

   終わりにさせたかったのがタイマー1の割り込みだった

   ので、タイマー1の割り込みのストップの方法をあれこ
   
   れさがしてしまいました。



  分かれば、なんのことはない、単純なミスでした。最新の

  開発環境にして、単なるシンタックスミスは、環境の方で

  指摘してくれるので、文法的な間違いは、ほとんど時間を

  賭けずに修正できるようになりましたが、アルゴリズム等

  のミスは、ダメです。修正に時間がかかります。

  頭が硬くなってます。Webはくしゅ

| mabo52 | 00:58 | comments (0) | trackback (0) | DIY::  -pic |
コメント

コメントする









この記事のトラックバックURL
http://mabo52.sakura.ne.jp/tb.php/956
トラックバック

こんな物欲しいな
CLOCK
NEW ENTRIES
COMMENTS
    ---SPINDLEのPWM制御 (その2) (7)
  • TR >06.18
    ---番外編---
  • TR >06.02
    ---SPINDLEのPWM制御 (その2) (5)
  • mabo >05.30
保留中コメント:10件
LINKS
    相互リンクさせていただいてます。
  • The Rider
Search Box
名言集
メール
   
連絡は下記から
名前:

メールアドレス:

件名:

メッセージ(必須):


TOP PAGE