Hi Nate,
First of all, here is good reference on programming the parallel port's
extended features (at least ECP):
http://www.fapo.com/files/ecp_reg.pdf
On page 20 is the answer to your question. It turns out the information
I gave you wasn't complete. First you have to set the parallel port mode
to 001 in the extended control register (which is located at base
address + 0x402).
Blaise
Quoted from Nate Jenkins on Wed, May 14, 2003 at 05:15:14PM -0700.
>
> So using ppdev.o with parport.o and parport_pc.o...
>
> If I do the following, here is what I get (in comments):
>
> unsigned char old_val = 0x24;
> unsigned char new_val = 0x00;
> nn = ioctl( fd, PPWCONTROL, &old_val );
> if( !nn ) // nn is zero on success
> {
> nn = ioctl( fd, PPRCONTROL, &new_val );
> if( !nn ) // nn is zero on success
> {
> printf("new_val = 0x%02X\n", new_val); // output is "new_val = 0x04"
> }
> }
>
>
> So I get to the printf output and new_val is 0x04, not 0x24...
>
> Does this tell anyone anything?
>
> Nate
>
>
> ----- Original Message -----
> From: "Blaise Gassend" <blaise@gassend.com>
> To: "Nate Jenkins" <nate@uniwest.com>
> Cc: "Parport" <linux-parport@torque.net>
> Sent: Wednesday, May 14, 2003 11:20 AM
> Subject: Re: [PARPORT] custom cabling
>
>
> > Hi Nate,
> >
> > Pins that can be both inputs and outputs can't be both at the same time.
> >
> > When they are set as inputs, you read the corresponding register and you
> > get the value that is input on the pin. When they are outputs, reads
> > from the register show the value that you set the pin to.
> >
> > The pins that appear in the control register are normally outputs. You
> > have to tell the parallel port that you want them to be outputs before
> > you can read data from them (if they can be inputs).
> >
> > For the data bits, bit 6 of the control register determines whether the
> > pins are inputs or outputs.
> >
> > For the other lines, I have lost the reference that said that the Strobe
> > pin can be either an input or an output. If you refer to
> > http://www.beyondlogic.org/epp/epp.htm and
> > http://www.beyondlogic.org/ecp/ecp.htm its direction can't be changed.
> > If its direction can be changed then there is a bit somewhere that you
> > have to flip to explicitely say that you want Strobe to be an input.
> >
> > Blaise
> >
> > Quoted from Nate Jenkins on Wed, May 14, 2003 at 10:55:47AM -0700.
> > > I appreciate you looking at my code. I am pretty sure I am reading the
> > > respective ports, unless I am really missing something. The first time
> it I
> > > read the control port is in simreadonly.cpp line 41:
> > > ->->->-> else if( NOERRORS == pp.GetPort( atoi(argv[1]) ) )
> > >
> > > This function is defined in ModLapLinkInterface2.cpp line 28. GetPort
> reads
> > > the control port on line 100:
> > > ->->->-> READ_CTRL_REG();
> > >
> > > This macro is defined in the ModLapLinkInterface2.h file starting at
> line
> > > 115 and ending at line 124:
> > > ->->->-> #define READ_CTRL_REG() if( ioctl( m_nPort, PPRCONTROL,
> > > &m_ucByte ) ) \
> > >
> > > However, I am repeatedly reading the control port in simreadonly.cpp
> line 51
> > > in the main loop:
> > > ->->->-> pp.GetC( &ucCTRL );
> > >
> > > The function GetC(...) is defined starting at line 167 in
> > > ModLapLinkInterface2.cpp where it also utilizes the aforementioned
> macro. I
> > > am using the macros so I can use the same code in DOS as well as Linux.
> So
> > > I wouldn't have to change the function definitions since they can call
> which
> > > ever version is defined. Its is not there yet because I would have to
> > > define the DOS equivelents and include respective headers based on which
> one
> > > I wanted to use.
> > >
> > > So am I missing something major here? Or is it any clearer than mud
> now?
> > > :)
> > > How shall I make use of your suggestion to "access the register to
> change
> > > the direction of the bits"?
> > >
> > >
> > > Thanks,
> > > Nate
> > >
> > >
> > >
> > >
> > > ----- Original Message -----
> > > From: "Blaise Gassend" <blaise@gassend.com>
> > > To: "Nate Jenkins" <nate@uniwest.com>
> > > Cc: "Parport" <linux-parport@torque.net>; "Gregg C Levine"
> > > <yodathejediknight@worldnet.att.net>
> > > Sent: Wednesday, May 14, 2003 5:59 AM
> > > Subject: Re: [PARPORT] custom cabling
> > >
> > >
> > > > Hi Nate,
> > > >
> > > > I had a look at your code, and it seems to me that you aren't
> accessing
> > > > the econtrol register at all. I believe that you have to do so to
> change
> > > > the direction of those bits. I've never done this via the ppdev
> > > > interface, so I can't give you any specifics, but I'm pretty sure this
> > > > is your problem.
> > > >
> > > > > I have the status port of PC #2 accepting bit changes from data port
> of
> > > > > PC #1. However, no matter what I do, I cannot change the values of
> the
> > > > > control port of PC #2 from outside of PC #2.
> > > >
> > > > -- To unsubscribe, send mail to: linux-parport-request@torque.net --
> > > > -- with the single word "unsubscribe" in the body of the message. --
> > > >
> > > >
> > >
> >
> > -- To unsubscribe, send mail to: linux-parport-request@torque.net --
> > -- with the single word "unsubscribe" in the body of the message. --
> >
> >
>
-- To unsubscribe, send mail to: linux-parport-request@torque.net --
-- with the single word "unsubscribe" in the body of the message. --
This archive was generated by hypermail 2b29 : Wed May 14 2003 - 20:36:06 EDT