JH7UBCブログ

アマチュア無線 電子工作 家庭菜園など趣味のブログです

PIC16F18326 MCC CLCテスト

2024-02-06 23:18:40 | MPLAB X MCC
 PIC16F18326のCLCのテストをします。

 CLC(Configuable Logic Cell)は、内蔵している下の図(いずれもmicrochipの説明書より)のロジックを設定により、プログラムとは関係なく使用できる機能です。これにより、高速の処理を行うことができます。


実際には、下のCLC BLOCK DIAGRAMで必要な設定をすることで使用可能になります。Logic Functionに上記のロジックのいずれかを設定します。



 CLCの入力は、次の中から選択します。


 microchipの説明書によれば、次のようなCLCの応用例が紹介されています。
• 応用例1: 位相検出器
• 応用例2: SCCP を入力とするデッドバンド制御を備
えた相補波形ジェネレータ
• 応用例3: 非同期のデータ信号モジュレータ(DSM)
• 応用例4: 複数パラメータの監視
• 応用例5: NRZ からRZ へのエンコード
• 応用例6: 2x1 マルチプレクサ

うーん、よく分かりません。とりあえず、どんな風に設定して使うのかWebで調べてみると、「はじめてのPIC & Arduino」というサイトにCLCを利用して、スイッチを押すとLEDが点灯するという記事を見つけたので、これをやってみることにしました。記事は、こちら。(ただし、PICはPIC16F1619が使用されています。 )

 さっそくプロジェクトを作成し、MCCを起動して、設定を始めます。

 systemモジュールです。デフォルトのままです。クロックは1MHzです。


 CLC1モジュールを導入しました。(CLC1からCLC4まで4つのCLCが使えます。)Mode、つまり使うLogic Functionは、AND-ORを選びます。
 下の論理回路をクリックして、入力はCLCIN0を1のOR回路に接続し、2のORの出力を反転させます。最後に出力を反転させます。



 次に、pinモジュールで、CLCの入力ピンと出力ピンを選択します。
 今回は、CLCIN0をRC4にCLC1OUTをRA4に設定しました。


 回路図です。RC4のPUSHスイッチを押すとRA4のLEDが点灯します。



 Generateして、build書き込みをしました。(ICSPでテストしています。電源は、PICKit3から供給しています。)

 プログラムには、次のように何も書かれていませんが、CLCは動作します。
------------------------------------------------------------
#include "mcc_generated_files/mcc.h"

void main(void)
{
     // initialize the device
     SYSTEM_Initialize();

     while (1)
    {
    }
}
---------------------------------------------------------------

 ブレッドボードです。スイッチを押すとLEDが点灯しました。



 最も簡単な回路で、CLCの動作を確認することができました。

 しかし、ここまで来るのに1週間ほどかかってしまいました。というのは、先述のサイトでは、CLCの出力をRA5としているので、私も最初はその設定でやってみました。
 ところが、ボタンを押してもLEDはつきません。何故?。
 CLCの設定やピンの設定、回路を見ても問題ありません。原因が分かりません。もんもんとして1週間が過ぎました。
 ひょっとして、RA5の出力設定がダメなのかな、と思いRA5を使ったLチカをやってみると、案の定LEDが光りません。PICを替えてやっても光りません。他のピンでは、Lチカができました。
 どうも、RA5を出力に設定できていないようです。Webで探ってみるとRA5は外部ロックのINに設定されているらしい。

 CLCの出力先をRA4に変更してみると、問題なく動作しました。ちょっとしたことで沼にはまってしまったわけです。

 このCLC機能をアマチュア無線で何かに利用できないか、今後考えていきたいと思います。


最新の画像もっと見る

コメントを投稿