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.302761秒
POWERED BY
POWERED BY
ぶろぐん
DESIGN BY
ブログンサポート
          
---自作MPGワイヤレス化 (11)---
 外部セラロックを使わないで、内部PLLを使って、32Mhzで

 動作させるために、16F1827に16F88のプログラムを移

 植しました。

 今回、移植するのに、丸々3日ほどかかりました。はまっ

 てしまったのは、二つでした。

 一つ目は、大いなる勘違いで、

     for( ; ; )

 の使い方を誤ってました。そのため、A相、B相のパルスが

 正しく発生できませんでした。16F88で作った時は、パルス

 の発生を前後の余裕をもってしていたので、その余裕が、

 ロジックの誤りを吸収してくれたようです。初期値1~5まで、

 5回のループを作りたいのに、

   for(i=0;i<5;i++)

 のような記述をしてました。これでは、0~4までの5回の

 ループになってしまいます。正しくは、

   for(i=1;i<=5;i++)

 でした。

 もう一つは、原因がよく分からないのですが、クロックを早く

 すると、PORTが思った動作をしてくれなくなるようで、

 PORTレジスタとLATレジスタ
 
 と

 PICとMikroC
 
 に記事がありました。

 早速、LATレジスタを使って組み直すと、見事動きました。

 動いたプログラムです。ゴミが沢山残ってます。

  main.c

 特に、メインの処理では、switch分とif分が混在してます。

 原因をあれこれ探るためにやった名残です。

 もしかして、このように、PICは癖があるのかもしれませんね。

 AVR等は、どうなんでしょうか。

**************************
*           追記           *
**************************

 もしやと思い、諸兄の記事を参考に、ポートのビット操作

 の間に’nop’を一ついれて動かして見ました。

 あれほどなやんだのが嘘のように、通常の書き込みで、

 LATレジスタを使わないで、動きました。

   ’nop’をいれたプログラムです。

     main.c

 やはり、諸兄はすごい。Webはくしゅ

| mabo52 | 17:03 | comments (4) | trackback (0) | DIY:: -MPGワイヤレス |

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