|
дефайны стандартные, однако я работаю поллингом, но не думаю, что это играет рояль.
Удачи.
/*********************************************************************/
unsigned char Ethernet_reset(void)
{
data unsigned int cnt=1000;Ethernet_write(ppSelfCtl,SELF_CTL_RESET);
while(cnt){
if(!(Ethernet_read(ppSelfCtl)&SELF_CTL_RESET))break;
cnt--;}
if(!cnt)return(FALSE);cnt=1000;
while(cnt){
if(Ethernet_read(ppSelfSt)&SELF_ST_INIT_DONE)break;
cnt--;}
if(!cnt)return(FALSE);for(cnt=1000;cnt;cnt--);
return(TRUE);
}
/*********************************************************************/
unsigned char Ethernet_verify()
{
data unsigned int value;value=(Chip_read(Signature)&0xff);
value=((Chip_read(Signature+1)<<8)&0xff00);value=Ethernet_read(ppEISA);
if(value!=0x630E)return(FALSE);
value=Ethernet_read(ppProdID);
return(TRUE);
}
/*********************************************************************/
unsigned char Ethernet_prepare(void)
{
data unsigned int value;
Ethernet_write(ppLineCtl,LINE_CTL_10BASET);
Ethernet_write(ppTestCtl,TEST_CTL_FDX);
Ethernet_write(ppRxCfg,RX_CFG_RX_OK_IE);Ethernet_write(ppRxCtl,(RX_CTL_RX_OK_A|RX_CTL_IND_A|RX_CTL_BCAST_A));
// Ethernet_write(ppRxCtl,(RX_CTL_RX_OK_A|RX_CTL_IND_A|RX_CTL_BCAST_A|RX_CTL_MCAST_A));
Ethernet_write(ppTxCfg,TX_CFG_ALL_IE);
Ethernet_write(ppIndAddr,((my_mac_adress[1]<<8)|my_mac_adress[0]));
Ethernet_write(ppIndAddr+2,((my_mac_adress[3]<<8)|my_mac_adress[2]));
Ethernet_write(ppIndAddr+4,((my_mac_adress[5]<<8)|my_mac_adress[4]));
Ethernet_write(ppIntNum,0x00);value=Ethernet_read(ppBusCtl);
value=value|BUS_CTL_INT_ENBL;
Ethernet_write(ppBusCtl,value);
value=Ethernet_read(ppLineCtl);
value=value|TX_CMD_START_ALL;
Ethernet_write(ppLineCtl,value);return(TRUE);
}
/*********************************************************************/
E-mail: info@telesys.ru