セラロックとか水晶発振子でなく発振器からのクロックで駆動する。
と思ったら、発振器を持ってなかった。
セラロックと水晶発振子しか持ってなかった。
なので、Arduino Nanoで4MHzを作ってクロックにした。
1 2 3 4 5 |
pinMode(11,OUTPUT); TCCR2A = ((1 << WGM21) | (1 << COM2A0)); TCCR2B = (1 << CS20); // prescaler = 1 TIMSK2 = 0; OCR2A = 1; |
上は拾い物のコードで、中身は見てない、いずれまた機会があったら見る。
とりあえず、これだけで11ピンから4MHzのクロックが出る。
これを、当初、SOSCIにつないだのだがうんともすんともいわない。
Secondary Oscillator (SOSC) on the SOSCI and SOSCO pins
って書いてるのに。
でもExternal Clock Input Operationという図でクロックはOSC1につないである。
なので、Nanoの11ピンをPICのOSC1につないだらPICが動き出した。
追記(2020/03/06)
Arduinoのフォルダ内をfindstrで探してみた。
1 |
findstr /s c:"define COM2A0" *.h |
いっぱい出て来るけど328pがNanoなんだろうということでそこだけ拾う。
1 |
hardware\tools\avr\avr\include\avr\iom328p.h:#define COM2A0 6 |
つまり
1 |
1 << COM2A0 = 1 << 6 = 0b01000000 |
これですっきりした。
XCで書くなら、
TCCR2Abits.WGA21 = 1;
TCCR2Abits.COM2A0 = 1;
ってこと。