#include <stdio.h>
#include "platform.h"
#include "xil_printf.h"
#include "xparameters.h"
#include "xtmrctr.h"


XTmrCtr_Config *tmr_config;
XTmrCtr tmr;

void tmr_init(){

	int status;

	tmr_config = XTmrCtr_LookupConfig(XPAR_AXI_TIMER_0_DEVICE_ID);
	XTmrCtr_CfgInitialize(&tmr, tmr_config, tmr_config->BaseAddress);
	status = XTmrCtr_SelfTest(&tmr,0);

	if(status == XST_SUCCESS)
		xil_printf("TMR init Successful\n");
	else
		xil_printf("TMR init Failed\n");

}
int main()
{
	u32 option = 0;
	u32 count =0;

    init_platform();
    tmr_init();
    option = XTmrCtr_GetOptions(&tmr, 0);
    option = option | XTC_DOWN_COUNT_OPTION;
    XTmrCtr_SetOptions(&tmr, 0, option);




    u32 countValue = 50000000*5;  ////1 / PL_CLOCK Freq
    XTmrCtr_SetResetValue(&tmr,0,countValue);
    XTmrCtr_Stop(&tmr, 0);
    XTmrCtr_Start(&tmr,0);

    u32 start = XTmrCtr_GetValue(&tmr, 0);
    xil_printf("Timer Run\n");
    u32 end = XTmrCtr_GetValue(&tmr, 0);

    xil_printf("Number of Clock Ticks :  %0d\n",start - end);
    xil_printf("Time Elapsed in nSec :  %0d\n", (start - end)*20);
    printf("Time Elapsed in uSec :  %0f\n", (start - end)*0.02);


    cleanup_platform();
    return 0;
}