動作実験は左の構成で行って見たいと思います。
上のロジック構成(4-input AND)をツールを使って設定して見た画面
ツールの詳しい操作方法はマニュアルを読みましょう!
赤枠の場所で信号の反転操作が出来ます。
ゲート1にCLC1IN0(RA5)を設定、ゲート2にPWM 3を設定しています。
ゲート3/4にも入力しないと動作しなかったのでPWM 3を入れています。
下がツールにて設定した内容で保存したファイル内容です。 --------------------------------------------------------------------- // File: CLC_AND_SET.inc // Generated by CLC Designer, Version: 3.0.0.4 // Date: 2014/12/01 9:18 // Device:PIC16(L)F1704/5 // PPS Initialization CLCIN0PPS = 0x05; CLCIN1PPS = 0x00; CLCIN2PPS = 0x00; CLCIN3PPS = 0x00; CLC1GLS0 = 0x02; CLC1GLS1 = 0x08; CLC1GLS2 = 0x08; CLC1GLS3 = 0x08; CLC1SEL0 = 0x00; CLC1SEL1 = 0x0E; CLC1SEL2 = 0x00; CLC1SEL3 = 0x00; CLC1POL = 0x00; CLC1CON = 0x82; --------------------------------------------------------------------- 16F1705ではCLC1出力を何れかのピンに割り当てないとダメですが、このファイルにはその設定が有りません。 RA2PPS = 0b00100 ; // CLC1OUT出力をRA2から出す。 とこの行を追加する必要が有ります。

PIC16F1705のピン構成図です
左が今回の実験を行た回路です。
---------------------------------------------------------------------
#include <xc.h>
// コンフィギュレーション1の設定
#pragma config FOSC = INTOSC // 内部クロック使用する(INTOSC)
#pragma config WDTE = OFF // ウオッチドッグタイマー無し(OFF)
#pragma config PWRTE = ON // 電源ONから64ms後にプログラムを開始する(ON)
#pragma config MCLRE = OFF // 外部リセット信号は使用せずにデジタル入力(RA3)ピンとする(OFF)
#pragma config CP = OFF // プログラムメモリーを保護しない(OFF)
#pragma config BOREN = ON // 電源電圧降下(BORV設定以下)常時監視機能ON(ON)
#pragma config CLKOUTEN = OFF // CLKOUTピンをRA4ピンで使用する(OFF)
#pragma config IESO = OFF // 内部から外部クロックへの切替えでの起動はなし(OFF)
#pragma config FCMEN = OFF // 外部クロック監視しない(OFF)
// コンフィギュレーション2の設定
#pragma config WRT = OFF // Flashメモリーを保護しない(OFF)
#pragma config PPS1WAY = OFF // ロック解除シーケンスを実行すれば何度でもPPSLOCKをセット/クリアできる
#pragma config ZCDDIS = ON // ゼロクロス検出回路は無効とする(ON)
#pragma config PLLEN = OFF // 動作クロックを32MHzでは動作させない(OFF)
#pragma config STVREN = ON // スタックがオーバフローやアンダーフローしたらリセットをする(ON)
#pragma config BORV = HI // 電源電圧降下常時監視電圧(2.7V)設定(HI)
#pragma config LPBOR = OFF // 低消費電力ブラウンアウトリセット(LPBOR_OFF)
#pragma config LVP = OFF // 低電圧プログラミング機能使用しない(OFF)
// メインの処理
void main()
{
OSCCON = 0b01110010 ; // 内部クロックは8MHzとする
OPTION_REG = 0b00000000 ; // デジタルI/Oに内部プルアップ抵抗を使用する
ANSELA = 0b00000000 ; // AN0-AN3は使用しない全てデジタルI/Oとする
ANSELC = 0b00000000 ; // AN4-AN7は使用しない全てデジタルI/Oとする
TRISA = 0b00100000 ; // RA5のみ入力、その他は全て出力に割当てる(RA3は入力専用)
TRISC = 0b00000000 ; // ピン(RC)は全て出力に割当てる
WPUA = 0b00100000 ; // RA5は内部プルアップ抵抗を指定する
PORTA = 0b00000000 ; // RA出力ピンの初期化(全てLOWにする)
PORTC = 0b00000000 ; // RC出力ピンの初期化(全てLOWにする)
// CLCの設定
RA2PPS = 0b00100 ; // CLC1OUT出力をRA2から出す。
CLCIN0PPS = 0x05 ; // CLCIN0 入力はRA5から入れる
CLCIN1PPS = 0x00 ;
CLCIN2PPS = 0x00 ;
CLCIN3PPS = 0x00 ;
CLC1GLS0 = 0x02 ; // ゲート1は入力1の信号(CLCIN0)を真(非反転)で使用する
CLC1GLS1 = 0x08 ; // ゲート2は入力2の信号(PWM3)を真(非反転)で使用する
CLC1GLS2 = 0x08 ; // ゲート3は入力2の信号(PWM3)を真(非反転)で使用する
CLC1GLS3 = 0x08 ; // ゲート4は入力2の信号(PWM3)を真(非反転)で使用する
CLC1SEL0 = 0x00 ; // 入力1はCLCIN0PPSのレジスタ(RA5)から入力
CLC1SEL1 = 0x0E ; // 入力2はPWM3から入力
CLC1SEL2 = 0x00 ;
CLC1SEL3 = 0x00 ;
CLC1POL = 0x00 ; // ゲート出力もCLC出力も反転出力はしない
CLC1CON = 0x82 ; // CLCは有効で、ロジックは[4-input AND]
// PWM3の設定
PWM3CON = 0b10000000 ; // PWM3ピンからは出力しない
PWM3DCH = 64 ; // デューティ値は50%で初期化
PWM3DCL = 0 ;
T2CON = 0b00000010 ; // TMR2プリスケーラ値を16倍に設定
TMR2 = 0 ; // タイマー2カウンターを初期化
PR2 = 124 ; // PWMの周期を設定(1000Hzで設定)
TMR2ON = 1 ; // TMR2(PWM)スタート
while(1) {
}
}
---------------------------------------------------------------------

記事一部追記(*1) 2016/12/01
【きむ茶工房ガレージハウス】
Copyright (C) 2006-2016 Shigehiro Kimura All Rights Reserved.