Reply by Phil Allison March 17, 20212021-03-17
 Dave Hitchins wrote:
-------------------------------------

Hi Dave,=20

WTF makes you think your  is a  *basic*  question about  * electronics *  ?=
?????????????=20

You DID even read the NG name  ??=20
-------------------------------------------------------



> I'm having problems with the SDA part of an IIC implementation in a AMD 2=
2V10C (not from China!). I can Output data, to the SDA output, but I'm not = able to read the SDA input! My CUPL equations, as a whole, compile OK using= WINCUPL and the .JED file programs OK.=20
>=20 > These are the intermediate declarations:=20 > FCD7 =3D !nPFC & A7 & A6 & !A5 & A4 & !A3 & A2 & A1 & A0;=20 > SCLH =3D FCD7 & !BnWR & D6 ;=20 > SCLL =3D FCD7 & !BnWR & !D6 ;=20 > SDAH =3D FCD7 & !BnWR & D7 ;=20 > SDAL =3D FCD7 & !BnWR & !D7 ;=20 >=20 > These are the outputs associated with SDA I/O:=20 > PIN 15 =3D D7 /* Data line 7 */=20 > PIN 18 =3D SDAOE /* SDA output control latch */=20 > PIN 19 =3D SDA /* SDA I/O pin */=20 >=20 > This is the equation for the SDA output control latch and sets the SDA ou=
tput Low when needed. This sections works just fine.=20
> SDAOE =3D SDAH /* Set high - write FCD7 with D7=3DH */=20 > # !SDAH & !SDAL & SDAOE /* Set low - write FCD7 with D7=3D0 */=20 > # !nRST ; /* Set high - on reset */=20 >=20 > This is the SDA output pin. Pulled high, externally, with a 4K7 resistor.=
Works as an output just fine.=20
> SDA.OE =3D !SDAOE ; /* Only on when 'LOW' output required */=20 > SDA =3D SDAOE ; /* Always low when output enabled */=20 >=20 > This is the problem pin.=20 > D7 =3D SDA ; /* SDA input transferred to D7 output on read of FCD7 */=20 > D7.OE =3D FCD7 & BnWR ;=20 >=20 > If I toggle the SDAOE latch I can read its state through D7 e.g. I can re=
ad SDA output, however, if I set the SDAOE latch High, ready for read of th= e SDA INPUT, I can't then read the input - I just read a High value on D7. = It seems that the path from the SDA pin through to the & array isn't there!= =20
>=20 > Anybody have any clues to what's going wrong? Thanks . . . Dave H.
Reply by Dave Hitchins March 17, 20212021-03-17
I'm having problems with the SDA part of an IIC implementation in a AMD 22V=
10C (not from China!). I can Output data, to the SDA output, but I'm not ab=
le to read the SDA input! My CUPL equations, as a whole, compile OK using W=
INCUPL and the .JED file programs OK.

These are the intermediate declarations:
FCD7=C2=A0=C2=A0=3D !nPFC & A7 & A6 & !A5 & A4 & !A3 &  A2 &  A1 &  A0;
SCLH=C2=A0=C2=A0=3D  FCD7 & !BnWR &  D6 ;=20
SCLL   =3D  FCD7 & !BnWR & !D6 ;=20
SDAH  =3D  FCD7 & !BnWR &  D7 ;
SDAL   =3D  FCD7 & !BnWR & !D7 ;=20

These are the outputs associated with SDA I/O:
PIN 15=C2=A0=C2=A0=3D  D7=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0/* Data line 7 */
PIN 18=C2=A0=C2=A0=3D  SDAOE=C2=A0=C2=A0=C2=A0/* SDA output control latch *=
/
PIN 19=C2=A0=C2=A0=3D  SDA=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0/=
* SDA I/O pin */

This is the equation for the SDA output control latch and sets the SDA outp=
ut Low when needed. This sections works just fine.
SDAOE=C2=A0=C2=A0=3D=C2=A0=C2=A0SDAH=C2=A0=C2=A0=C2=A0=C2=A0/* Set high - w=
rite FCD7 with D7=3DH */
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0# !SDAH & !SDAL & SDAOE =C2=A0=C2=A0=C2=A0=C2=A0/* Set low - write=
 FCD7 with D7=3D0 */
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0# !nRST ;=C2=A0=C2=A0=C2=A0=C2=A0/* Set high - on reset */

This is the SDA output pin. Pulled high, externally, with a 4K7 resistor. W=
orks as an output just fine.
SDA.OE=C2=A0=C2=A0=3D !SDAOE ;=C2=A0=C2=A0=C2=A0=C2=A0/* Only on when 'LOW'=
 output required */
SDA      =C2=A0=C2=A0=3D  SDAOE ;=C2=A0=C2=A0=C2=A0=C2=A0/* Always low when=
 output enabled */

This is the problem pin.
D7       =C2=A0=3D  SDA ;=C2=A0=C2=A0=C2=A0=C2=A0/* SDA input transferred t=
o D7 output on read of FCD7 */
D7.OE=C2=A0=C2=A0=3D  FCD7 & BnWR ;

If I toggle the SDAOE latch I can read its state through D7 e.g. I can read=
 SDA output, however, if I set the SDAOE latch High, ready for  read of the=
 SDA INPUT, I can't then read the input - I just read a High value on D7. I=
t seems that the path from the SDA pin through to the & array isn't there!

Anybody have any clues to what's going wrong? Thanks . . . Dave H.