[an error occurred while processing this directive]
|
>>out TX_CMD_PORT, TX_START_ALL_BYTES ; (304h)<-0C0h
Тут наверно просто описка, но все равно спрошу, почему <-0C0h ? Я пишу 0x00C9.
В остальном вроде все правильно. На всякий случай приведу как сделано у меня.
void cs8900_output()
{
int tries = 0;
u16_t *ptr=0;
// exit if link has failed
PACKETPP = CS_PP_LINESTATUS;
if ((PPDATA & 0x0080U/*LinkOK*/) == 0) return; // no Ethernet link
// transmit command
TXCMD = 0x00C9U;
TXLENGTH = uip_len;
PACKETPP = CS_PP_BUSSTATUS;
// not ready for transmission and still within 100 retries?
while(((PPDATA & 0x0100U/*Rdy4TxNOW*/) == 0) && (tries++ < 100))
{
// throw away the last committed received frame
PACKETPP = CS_PP_RXCFG;
PPDATA = (0x0003U | 0x0040U/*Skip_1*/ | 0x0100U/*RxOKiE*/);
PACKETPP = CS_PP_BUSSTATUS;
}
ptr = (u16_t *)&uip_buf[0];
// ready to transmit?
if((PPDATA & 0x0100U/*Rdy4TxNOW*/) != 0)
{
mempushNF(&RXTXREG, uip_buf, (uip_len+1) / 2);
}
else
{
}
uip_len = 0;
return;
}
E-mail: info@telesys.ru