工作の2S(Seiri/Seiton)

工作やプログラムでやったことをまとめていきます

PIC1823のクロック出力を見る

●PIC16F1823のクロック出力

内部動作クロックを4MHz(工場で±1%に校正済み)に設定しCLKOUTピンから出力します。ただし、データシートには”実際出力されるのはFOSCの1/4の周波数”とあり、1MHzが出力されるはずです。また、CLKOUTENは優先度が高くONに設定すると問答無用でクロックを出力します

6.3.2 CLKOUT FUNCTION
The CLKOUT function has a higher priority than the reference clock module. Therefore, if the CLKOUT function is enabled by the CLKOUTEN bit in Configuration Word 1, FOSC/4 will always be output on the port pin.

●プログラム

#include <xc.h>

// CONFIG1
#pragma config FOSC = INTOSC 
#pragma config WDTE = OFF
#pragma config PWRTE = ON
#pragma config MCLRE = ON 
#pragma config CP = OFF
#pragma config CPD = OFF
#pragma config BOREN = OFF
#pragma config CLKOUTEN = ON
#pragma config IESO = ON
#pragma config FCMEN = ON

// CONFIG2
#pragma config WRT = OFF
#pragma config PLLEN = ON
#pragma config STVREN = ON
#pragma config BORV = LO
#pragma config LVP = OFF 


void main(void) {
  // Oscillator Control Register
  // SPLLEN (0) : 4x PLL is disable.
  // IRCF (1101): Internal oscillator frequency [4MHz HF]
  // uninplemented (0) : Read as '0'
  // SCS (11) : System clock select [Internal oscillator block]

  OSCCON = 0b01101011;
  TRISC = 0b11101111;
  while(1);
  return;
}

 OSCCON

マイコンのオシレータをコントロールするレジスタを設定しています

内蔵オシレータを4MHzに設定しています

8MHzに限り4倍のPLLを使用でき最大32MHzで使用できるようです

●CLKOUTの出力波形

1.001MHzとでました

 0.99MHz ~ 1.01MHzの間に収まれば仕様上OKなのでいい感じですね

f:id:kt-marshal:20160501111724j:plain

 

マイコンが自分の狙った周波数で動いてることが確認できました

8MHz, 16MHzと変更すればちゃんと変わりますが、ジッタが目立ち始めました

 

さーて、ラーメンでも食ってくるか