Problem with CS8900A 5v in 8-bit

Hi Group,

We are using CS8900A 5V version and it is interfaced to Philips 89C51RD2 in *8-bit* mode - No Interrupts. CS8900A reads/writes registers, transmits and receives packets continuously (works very fine) for few minutes, say 1-2 minutes and then suddenly stops responding. If I try reading any registers at this *moment* it reads 0x00000000, stops transmitting and receiving. If I remove the 5V supply to the CS8900A and reconnect it, it starts again .. but only for few minutes.

In the initialization of CS8900A both software and hardware reset has been applied.

If anyone has ever experienced the same problem or even hasn't, Please help...

Lawrie.

Reply to
Lawrie Kurian
Loading thread data ...

I experienced the same symptons as you see, with a cs8900A, but it had to do with a (now corrected) bug on a VxWork driver supplied by the manufacturer. The bug prevented the packets to go out when certain conditions where met and forced a dead-lock. Perhaps you are using or re-using that driver...?

-- Ignacio G.T.

Reply to
Ignacio G.T.

Could it be this issue?

"Before issuing a skip command read the RxStatus and RxLength of the current frame."

Best regards, Spehro Pefhany

--
"it's the network..."                          "The Journey is the reward"
speff@interlog.com             Info for manufacturers: http://www.trexon.com
Embedded software/hardware/analog  Info for designers:  http://www.speff.com
Reply to
Spehro Pefhany

Hardware wise, make sure that RD/ and particularly WR/ are not bouncing low a second time.

Reply to
Jim Stewart

-------------------------------------------------------------------------------- Even if I just keep on reading the registers ,say the Product ID, in a continuous while loop, I do get the correct value 0x0E630009 for few minutes then suddenly it shows 0x00000000, even if a *Reset* is applied to the Microcontroller, thus reinitializing CS8900A, it shows the same 0x00000000 value. Only on *PowerUP* reset it starts again properly ....but continuing with the same problem after few minutes.

Where as RD/ and WR/ are concerned .... here is the sequence.....

Write Routine ....

ClrAEN();

SetIOR(); //Disable *IOR by sending high on the pin SetIOW(); //Disable *IOW by sending high on the pin CS_ADDR = (CS_ADDR & 0xF0) | regaddr; //Put the even address of register CS_DATA = regdata; //Put the lower byte of the data ClrIOW(); //Active low on IOW delay(100);

ClrAEN();

SetIOW(); SetIOR(); CS_ADDR = (CS_ADDR & 0xF0) | (regaddr + 1);//Put the odd address of the reg CS_DATA = regdata >> 8; //Put the higher byte of the data ClrIOW(); delay(100); SetIOW();

Read Routine ....

CS_DATA = 0xFF; //Set the data port as input port

SetIOW(); //Disable *IOR by sending high on the pin SetIOR(); //Disable *IOW by sending high on the pin CS_ADDR = (CS_ADDR & 0xF0) | regaddr; //Put Even address of register ClrIOR(); //Active Low on IOR delay(100); wdata = CS_DATA; //Collect lower byte of data

CS_DATA = 0xFF;

SetIOW(); SetIOR(); CS_ADDR = (CS_ADDR & 0xF0) | regaddr + 1; ClrIOR(); delay(100); wdata |= (0xFF00 & (CS_DATA

Reply to
Lawrie Kurian

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.