SBCZ8002のクロック生成まで確認

SBCZ8002のプリント基板が届いた。Seeed Fusionの5枚$7.9+OCS$2で、注文日から数えてざっと2週間。シリアル端子付近のシルクがカスレているが実用性に影響がないから良品。CADの画面で飽きるほど見たやつだけど実物を手にするとやっぱり燃えるよね。

sbcz8002_pcb

組み立て完了、電源まわりを確認、PICだけ挿して通電。所定のピンにクロックが供給されている。周波数が4MHzを微妙に超えているのは必要に応じあとで調整。この周波数から通信クロックを作るので1段階下げたほうがいいかもしれないが下がりすぎると困る。

sbcz8002_clk

PICのファームウェアを下に示す。PWMでクロックを生成し、ポートでリセットする。最低限のことしかやっていなくてフラッシュ使用率が2.1%。最後、永久ループに入るところはスリープさせたほうがいいと思うが、それやこれやはSBCZ8002が動いてからの話。

 /*
 File: main.c
 Author: Tetsuya Suzuki
 Created on 3/10/2019 1:48:46 AM UTC
 Created in MPLAB Xpress
 Device: PIC12F1822
 Compiler: XC8
*/

#include

#pragma config FOSC = INTOSC
#pragma config WDTE = OFF
#pragma config MCLRE = ON
#pragma config CLKOUTEN = OFF
#pragma config PLLEN = ON

#define _XTAL_FREQ 32000000

void main(void) {
  // initialize
  OSCCON = 0b11110000; // Configure clock to 32MHz
  ANSELA = 0;          // Set all pins as digital
  TRISA = 0b11111010;  // Set RA0(RES) and RA2(CLK) as output
  nWPUEN = 0;          // Pullup all input pins

  // clock generate
  CCP1CON = 0b00001100; // Set RA2 as PWM out
  PR2 = 1;              // Period 2 clock (32MHz/4/2=4MHz)
  CCPR1L = 1;           // Duty 1 clock (50%)
  T2CON = 0;            // Desable pre-scaler
  TMR2ON = 1;           // Start

  // Reset
  LATA0 = 0;       // Reset
  __delay_ms(200); // Wait 200ms
  LATA0 = 1;       // Release

  // permanent loop
  while(1);
}

PICがうまく動いてくれて小さな課題がひとつ解決した。この先、最大の課題はGAL。何しろまだ1回も動かしたことがなくてCUPLの書き方をおぼろげに理解したところ。動作確認は、シミュレータの使いかたを覚えるより冶具を作ったほうが早いかなと思っている。

カテゴリー: Z8000 パーマリンク

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google フォト

Google アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中