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 - 11  >>
 
LOGIN
現在モード: ゲストモード
USER ID:
PASS:
CATEGORIES
ARCHIVES
PROFILE
OTHERS
    処理時間 0.297347秒
POWERED BY
POWERED BY
ぶろぐん
DESIGN BY
ブログンサポート
          
---自作MPGワイヤレス化 (1)---
 リモコンよろしく自作のMPGをワイヤレス化するという、

 無謀な取り組みをしています。

 赤外線通信等、信号を変調して伝送するのは、ちょっと

 できませんが、RS232Cの延長で、キャラクターの送信

 は、有線でできました。

 この部分をワイヤレス化すれば、実現できそうです。

 そのために、受け手のPICで、A相B相のパルスを生成します。

 なかなか実現できませんでしたが、やっと、エンコーダーの

 パルスと近い波形を生成することができました。

 

 送り手のPICから、1バイトのキャラクターコードを送り、

 受け手のPIC側で、それに応じた処理を行います。

 一番の難物がパルスの生成でした。

 キーボードから操作してますが、一回キーボードのキーを押

 すと一回だけパルスが生成できます。連続で押すと、連続
 
 で生成できました。

 有線のRS232Cで送ってますので、ワイヤレス化した時の

 応答速度が気になるところですが、まあ、DIYの範囲での

 使用ですので、それほど気にしなくてもいいと、思うことに

 します。

 プログラムは、当初、割り込みで処理する予定でしたが、

 ポーリングの処理でも、それほど変わりないようなので、

 通常のものに変更しました。

 プログラムは、後日掲載します。Webはくしゅ

| mabo52 | 11:24 | comments (7) | trackback (0) | DIY:: -MPGワイヤレス |
---新しい開発環境(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 |

こんな物欲しいな
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