/*初期化*/ #include "m9402.h" /*#include "io.h"*/ int errno ; void rtc_clr(); void init_gro(); void init() { /* rtc_clr(); */ init_gro(); /* MMI PIT0 */ outportb(PGCR0 ,0x00); /* clear PGCR0 */ outportb(PADDR0,0xff); /* all output */ outportb(PBDDR0,0x10); /* RRRWRRRR */ outportb(PACR0 ,0x80); outportb(PBCR0 ,0x80); outportb(PGCR0 ,0x02); /* mode 0 */ outportb(TCR0,0x00); /* clear TCR0 */ outportl(CPR0,0x00003f);/* TOUT 2kHz */ outportb(TCR0,0x41); /* square wave */ /* PWM PIT1 */ outportb(PGCR1 ,0x00); /* clear PGCR1 */ outportb(PADDR1,0xff); /* all output */ outportb(PBDDR1,0xff); /* all output */ outportb(PACR1 ,0x80); /* submode 1x */ outportb(PBCR1 ,0x80); /* submode 1x */ outportb(PGCR1 ,0x00); /* mode0 & H1,H2,H3,H4 disable*/ outportb(TCR1 ,0x00); outportl(CPR1 ,0x000001); /* Toutの出力は125[kHz] */ outportb(TCR1 ,0x41); /* square wave */ /* SSS & PHOTO PIT2 */ outportb(PGCR2 ,0x00); /* clear PGCR2 */ outportb(PSRR2, 0x1c); outportb(PACR2 ,0x20); outportb(PADDR2,0x03); outportb(PBCR2, 0xA0); outportb(PBDDR2,0x00); outportb(PGCR2 ,0x18); /*mode0 & H3,H4 disable*/ outportb(TCR2 ,0x00); outportl(CPR2 ,SSS_LIMIT); /*under flow 3m*/ outportb(TCR2 ,0xb2); outportb(TIVR2,72+0); /* sss interrupt causes by tout*/ /* RE/TS */ outportb(TSIE,0x00); /* Touch Sensor Interrupt Enable */ outportb(CRST,0x03); /* counter reset */ } void rtc_clr() { int rtc_base; int i; rtc_base=0xfdfe00; outportb(MSR,0x44); for ( i=3 ; rtc_base+ i<0xfdfe40 ; i+=2 ) outportb(rtc_base+i,0x00); outportb(MSR,0x04); for ( i=3 ; rtc_base+ i<0xfdfe0a ; i+=2 ) outportb(rtc_base+i,0x00); } extern unsigned char pwm_mode; extern unsigned int mmi_iivseg; extern struct pos{ int x; int y; int v; int theta; int thetav; int way; }rot_position_i; void init_gro() { int i,j; /* initialize grobal variables */ pwm_mode = 0x00; mmi_iivseg = 0000; rot_position_i.x = 0; rot_position_i.y = 0; rot_position_i.v = 0; rot_position_i.theta = 0; rot_position_i.thetav = 0; rot_position_i.way = 0; }