上のロジック構成(4-input AND)をツールを使って設定して見た画面
ツールの詳しい操作方法はマニュアルを読みましょう!
赤枠の場所で信号の反転操作が出来ます。
ゲート1にCLC1IN1(RA5)を設定、ゲート2にPWM 3を設定しています。
ゲート3/4にも入力しないと動作しなかったのでPWM 3を入れています。
下がツールにて設定した内容で保存したファイル内容です。 --------------------------------------------------------------------- // File: CLC_AND_SET.inc // Generated by CLC Designer, Version: 3.0.0.4 // Date: 2014/05/04 15:44 // Device:PIC16(L)F1501 CLC1GLS0 = 0x02; CLC1GLS1 = 0x20; CLC1GLS2 = 0x20; CLC1GLS3 = 0x20; CLC1SEL0 = 0x01; CLC1SEL1 = 0x06; CLC1POL = 0x00; CLC1CON = 0xC2; --------------------------------------------------------------------- 12F1501ではCLC1出力がRA2とRA4の何れかを選択できますが、このファイルにはその設定が有りません。 CLC1SEL= 0 ; // 0:RA2から出力 1:RA4から出力 とこの行を追加する必要が有ります。
PIC12F1501のピン構成図です
--------------------------------------------------------------------- #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 // 電源電圧降下常時監視機能ON(ON) #pragma config CLKOUTEN = OFF // CLKOUTピンをRA4ピンで使用する(OFF) // コンフィギュレーション2の設定 #pragma config LPBOR = OFF // 低消費電力ブラウンアウトリセット(OFF) #pragma config WRT = OFF // Flashメモリーを保護しない(OFF) #pragma config STVREN = ON // スタックがオーバフローやアンダーフローしたらリセットをする(ON) #pragma config BORV = HI // 電源電圧降下常時監視電圧(2.5V)設定(HI) #pragma config LVP = OFF // 低電圧プログラミング機能使用しない(OFF) // メインの処理 void main() { OSCCON = 0b01110000 ; // 内部クロックは8MHzとする OPTION_REG = 0b00000000 ; // デジタルI/Oに内部プルアップ抵抗を使用する ANSELA = 0b00000000 ; // アナログは使用しない(すべてデジタルI/Oに割当てる) TRISA = 0b00100000 ; // RA5のみ入力、その他は全て出力に割当てる(RA3は入力のみ) WPUA = 0b00100000 ; // RA5は内部プルアップ抵抗を指定する PORTA = 0b00000000 ; // 出力ピンの初期化(全てLOWにする) // CLCの設定 CLC1SEL = 0 ; // 0:RA2から出力 1:RA4から出力 CLC1GLS0 = 0x02; // ゲート1は入力1の信号(CLCIN1)を真(非反転)で使用する CLC1GLS1 = 0x20; // ゲート2は入力3の信号(PWM3)を真(非反転)で使用する CLC1GLS2 = 0x20; // ゲート3は入力3の信号(PWM3)を真(非反転)で使用する CLC1GLS3 = 0x20; // ゲート4は入力3の信号(PWM3)を真(非反転)で使用する CLC1SEL0 = 0x01; // 入力1=CLC1IN1 入力2=Fosc CLC1SEL1 = 0x06; // 入力3=PWM3 入力4=NCO1_out CLC1POL = 0x00; // ゲート出力もCLC出力も反転出力はしない CLC1CON = 0xC2; // 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) { } } ---------------------------------------------------------------------
記事一部追記(*2) 2016/12/01
MPLAB X用に記事変更(*1) 2015/10/02
【きむ茶工房ガレージハウス】
Copyright (C) 2006-2016 Shigehiro Kimura All Rights Reserved.