#include "stdio.h"
#include "OB90A64M1.h"
#include "uart.h"
#include "gpio.h"
#include "QEI.h"

void Delay(uint32_t Num)
{
     while(Num--);
}

int main(void)
{
    uint32_t Loop, Result;

    SystemCoreClockUpdate();
    
    // Open UART
    OB_GPIO2->MODE = 0x00;
	 	OB_GPIO2->DATA_b.GPIOXDATA3 = 0x00;
	 	OB_GPIO2->DATA_b.GPIOXDATA8 = 0x00;
  
	  GPIO_SetPinMFType(OB_GPIO2, GPIO_PIN4, GPIO_MF_QEI);
    GPIO_SetPinMFType(OB_GPIO2, GPIO_PIN7, GPIO_MF_QEI);
    UART_Open(OB_UART1, 19200);
    
    //--------------------------------
   

    // Enable QEI
		QEI_SetMaxPos(OB_QEI,  1000); 
		QEI_Open(OB_QEI,  QEI_CON_CAP_4X);
  	QEI_EnableINT(OB_QEI, QEI_INT_POS0);
  	OB_QEI->CMPOS0 = 20;
		//P2.3 connect P2.4
		//P2.7 connect P2.8
		for(Loop = 0x00;Loop<50;Loop++)
		{
		    
			  OB_GPIO2->DATA_b.GPIOXDATA3 = 0x00;   
	     	OB_GPIO2->DATA_b.GPIOXDATA8 = 0x00;			
			  Delay(100);
			  OB_GPIO2->DATA_b.GPIOXDATA3 = 0x01;
	     	OB_GPIO2->DATA_b.GPIOXDATA8 = 0x00;			

			  Delay(100);
			  OB_GPIO2->DATA_b.GPIOXDATA3 = 0x01;
	     	OB_GPIO2->DATA_b.GPIOXDATA8 = 0x01;			

				Delay(100);
			  OB_GPIO2->DATA_b.GPIOXDATA3 = 0x00;
	     	OB_GPIO2->DATA_b.GPIOXDATA8 = 0x01;				
		}
	  Result = QEI_GetPos(OB_QEI);
    printf(" POS Value (Channel 16) = 0x%04X \n\r", Result);
    while(1);
}
