////////////////////////////////////////////////////////////////////////////////
//  CQ出版社 インターフェース 2008年7月号
//
//  初音ミク（はちゅねみく）・アニメーション
//  FRマイコン用プログラム	Copyright(c)2008 Sumio Morioka
//  morioka@fb3.so-net.ne.jp,  http://www002.upp.so-net.ne.jp/morioka/
//
//  本プログラムコードの商業利用，および改変ファイルの二次配布を禁じます．それ以外の
//  利用はとくに制限しませんが，利用によって生じた被害・不利益などに対しては，一切
//  責任を負いませんのでご了承ください．
//
//  また，本プログラムのサンプルとして同梱される初音ミク，はちゅねミク，鏡音リン・レンの
//  画像（フォント・データも含む）は，クリプトン・フューチャー・メディア株式会社
// （http://www.crypton.co.jp）の著作物です．商業利用等については同社へ問い合わせてください．
//
//
// History:
// 1. Original coding by Sumio Morioka, 2008/04/15
//
////////////////////////////////////////////////////////////////////////////////

#include "_fr.h"

/************************************************************************/
/*   関数のプロトタイプ宣言                                             */
/************************************************************************/
void ppg_init(void);/* PPG初期化関数 */

/************************************************************************/
/*   PPG初期化関数                                                      */
/************************************************************************/
void ppg_init(void)
{
	/* Port-4 : HSYNC,VSYNC output */
	IO_PORT.IO_PFR3.bit.PPGE0=1; /* PPG0 Enable(P44) */
	IO_PORT.IO_PFR3.bit.PPGE1=1; /* PPG1 Enable(P45) */
	/* PPG Ch.0 : HSYNC */
	IO_PCN0.bit.CNTE=1; /* count Enable */
	IO_PCN0.bit.MDSE=0; /* PWM mode */
	IO_PCN0.bit.RTRG=0; /* ReTrigger Disable */
	IO_PCN0.bit.CKS=0; /* CKS=0b00 : CLK=1/1 */
	IO_PCN0.bit.PGMS=0; /* normal phase */
	IO_PCN0.bit.EGS=0; /* NA */
	IO_PCN0.bit.IREN=0; /* Interrupt Disable */
	IO_PCN0.bit.IRQF=0; /* Interrupt Clear */
	IO_PCN0.bit.IRS=1; /* Cycle match or Duty match */
	IO_PCN0.bit.OSEL=1; /* Reverse phase */
	IO_PCSR0=416-1; /* cycle = 48.077KHz */
	IO_PDUT0=42-1; /* duty = 2.1uS */
	
	/* PPG Ch.1 : VSYNC */
	IO_PCN1.bit.CNTE=1; /* count Enable */
	IO_PCN1.bit.MDSE=0; /* PWM mode */
	IO_PCN1.bit.RTRG=0; /* ReTrigger Disable */
	IO_PCN1.bit.CKS=2; /* CKS=0b10 : CLK=1/16 */
	IO_PCN1.bit.PGMS=0; /* normal phase */
	IO_PCN1.bit.EGS=0; /* NA */
	IO_PCN1.bit.IREN=0; /* Interrupt Disable */
	IO_PCN1.bit.IRQF=0; /* Interrupt Clear */
	IO_PCN1.bit.IRS=1; /* Cycle match or Duty match */
	IO_PCN1.bit.OSEL=1; /* Reverse phase */
	
	IO_PCSR1=20956-1; /* cycle = 59.65Hz(806*HSYNC) */
	IO_PDUT1=156-1; /* duty = 6*HSYNC */
	
	IO_PCN0.bit.STGR=1; /* PPG Ch.0(HSYNC) Start */
	IO_PCN1.bit.STGR=1; /* PPG Ch.1(VSYNC) Start */
	
	IO_ELVR.bit.LBLA6=2; /* RiseEdge Detect */
	IO_EIRR.bit.ER6=0; /* Interrupt Request Clear */
	IO_ENIR.bit.EN6=1; /* INT6 Enable : OSDC Interrupt */
	IO_ICR[6].byte=0x1e; /* OSDC(ExtInt Ch.6) INT level set */
}

