📄 main.c
字号:
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include "44b.h"
#include "option.h"
#include "44blib.h"
#include "system.h"
#include "DM9000A.h"
#include "9xtend.h"
#include "timesyn.h"
void __irq Timer3Isr(void);
void __irq Eint3Isr(void);
//void __irq Uart1_RxInt(void);
int i;
int arrdbm[100];
char str[10] = {0};
char strdBm[5] = {0};
int dBmval = 0,ptuartrxBuf = 0;
unsigned char uartrxBuf[10],t[6];
unsigned short selfadd = 0x1;
unsigned long ts;
void Main(void)
{
rSYSCFG = CACHECFG;
Port_Init();
Timer_Init();
Int_Init();
pISR_EINT3 = (int)Eint3Isr; //Register the ISR
//pISR_URXD1 = (int)Uart1_RxInt; //Register the ISR
pISR_TIMER3 = (int)Timer3Isr; //Register the ISR
Uart_Init(0,9600); //Uart0<-->9xtend;Uart1<-->PC
Uart_Select(1);
Delay(0); //calibrate Delay()
Uart_Printf("\nS3C44B0X Test rSYSCFG=0x%x MCLK=%d\n",rSYSCFG,MCLK);
redLedBlk();
//Initialize 9xtend,word in streaming mode, MY=2;
Init_9xtend();
//Send T1 syn packet
Uart_Select(0);
PackT1(selfadd,0x2);
Uart_Sendbuf(synpktBuf,lenSYNPKT);
Uart_Select(1);
Uart_Sendbuf(synpktBuf,lenSYNPKT);
//Wait for syn ack packet
Uart_Select(0);
ptpktBuf = 0;
while(Uart_Getch() != 0x0F) ;
T4 = us;
synackpktBuf[ptpktBuf++] = 0x0F;
while(1)
{
synackpktBuf[ptpktBuf++] = Uart_Getch();
if(ptpktBuf==lenSYNPKT)
{
Uart_Select(1);
Uart_Sendbuf(synackpktBuf,lenSYNPKT);
ptpktBuf=0;
break;
}
}
//Get T2 T3
memcpy(&synackpacket,synackpktBuf,lenSYNPKT);
T2 = synackpacket.Time1;
T3 = synackpacket.Time2;
Uart_Select(1);
Uart_Printf("\nT1 is %d %x\nT2 is %d %x\nT3 is %d %x\nT4 is %d %x\n",T1,T1,T2,T2,T3,T3,T4,T4);
//Calculate delta and delay
delta = ((T2-T1) - (T4-T3))/2;
delay = ((T2-T1) + (T4-T3))/2;
//Calibrate node 1 clock
us += delta;
//Output the indicator
Uart_Select(1);
rPDATG &= ~(0x40);
while(1)
{
if((ts=us)%1000000 == 0)
{
Uart_Printf("%d,%d,%d\n",ts,ts%1000000,ts/1000000);
rPDATG |= 0x40;
Delayus(200);
rPDATG &= ~(0x40);
Delayus(200);
}
}
}
void __irq Eint3Isr(void)
{
rI_ISPC=BIT_EINT3;
grnLedBlk();
}
void __irq Uart1_RxInt(void)
{
rI_ISPC=BIT_URXD1;
uartrxBuf[ptuartrxBuf++]=RdURXH1();
redLedBlk();
if(ptuartrxBuf==10)
{
Uart_Sendbuf(uartrxBuf,10);
ptuartrxBuf=0;
}
}
void __irq Timer3Isr(void)
{
rI_ISPC=BIT_TIMER3;
//redLedBlk();
us++;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -