developing drivers for custom boards

More
27 Apr 2013 22:37 #33289 by jmelson

Thanks to everyones help here, I finally just about have a fully functional driver and card. I am left with 1 tiny but huge issue -

when the computer boots, address strobe goes low, causing my card to think an address is about to be sent, the problem seems to be that the computer is not yet in EPP mode so my card never sees address strobe go back high.

I need some logic to know when it is in EPP mode. I tried to send a byte out after setting EPP mode in the driver, but it seems like my card misses it so that didn't work.

Looking for any suggestions on this.

Why doesn't address strobe go back high? The default state of the port should be
with both strobes (addr and data) in the high condition, as they are negative-true.
Possibly the timeout on the port has occurred and the port is stuck, so clearing the
timeout bit might cause the strobes to be set back to the high (inactive) state.
Also, it is possible for the non-EPP registers to override the EPP state machine
and jam these lines low, you have to make sure the standard port registers
have these set to the right state.

Jon

Please Log in or Create an account to join the conversation.

More
27 Apr 2013 22:56 #33290 by btvpimill
Thanks Andy and Jon, I have code in my driver file to set these lines to idle high, maybe I just need to see if my card will be happy with that. Right now I am looking at it get stuck in the address write routine when the computer boots and not waiting to see if it gets happy once the driver is run.

To me it feels wrong that I can not come up with an idea how to trap that error and move on. Maybe a time out for how long my card waits to get the address strobe back high.

Please Log in or Create an account to join the conversation.

More
28 Apr 2013 21:33 #33333 by btvpimill
seems that if I am just more patient, everything is fine with my EPP comms.

New question, do I need to implement the invert pin function in my driver or is that built into LinuxCNC?

Please Log in or Create an account to join the conversation.

More
28 Apr 2013 21:45 #33335 by andypugh

New question, do I need to implement the invert pin function in my driver or is that built into LinuxCNC?


I think you need to build it into the driver

Please Log in or Create an account to join the conversation.

More
28 Apr 2013 21:57 #33336 by btvpimill
Thanks Andy, off to study the paraport driver some more

Please Log in or Create an account to join the conversation.

More
18 May 2013 03:06 #34278 by btvpimill
Ok I almost have all the wheels re-invented - thanks to all the help from here.

This is where I am, my driver and I/O card work just wonderful when I use the built-in port on the MB. But I want to use the second port on my Rosewill RC-304 card. Yes I know this is a MosChip 9815 chip, but it seems to work kind of. Through much studing of the datasheet for it, I am pretty sure I have gotten it into EPP mode. BUT, it acts like Linux does not see or care if it is ready for new data or if it has new data to give. Heres what I mean-

I send 14 bytes for setup information - when I watch the port, only 7 are actually sent. It seems if I put a delay in before sending the next byte it works. This delay is in my driver. I am attempting to watch the FIFO buffer to see when it is empty, then I send more.

When I read the port, I have a loop that just reads the address port looking for the correct answer from my card. it will do this 200 times, then error out. When I watch the port traffic, it is actually only trying 40 times to get the right answer. So I think to myself - ok same problem, I need to check FIFO again to see if it has data before reading the port. Well that failed (prolly bad code on my part).

I should mention all of this works perfect on the built in port. So I guess I am thinking Linux does not know how to properly talk to this card? Is it correct that my driver needs to do all the "checking" in order to work? If so, am I going about this the right way by checking the FIFO?

BTW, I called Rosewill tech support, they were of NO VALUE for this. basically they said parallel ports are a thing of the past and they have no way to support it with linux in EPP mode.

Please Log in or Create an account to join the conversation.

More
18 May 2013 03:21 #34280 by PCW
The MOSChip PCI parallel port chips have fatal bugs in their
EPP implementation so do not support EPP
(regardless of what the card specs say)
The following user(s) said Thank You: btvpimill

Please Log in or Create an account to join the conversation.

More
18 May 2013 03:25 #34281 by btvpimill
do you have a specific card reccomendation that has an internal (meaning inside the chassis) port connection?

Please Log in or Create an account to join the conversation.

More
18 May 2013 04:10 #34287 by PCW
No, just know that MosChip/NetMOS PCI chips are no-go for EPP
Not sure which current PCI chips work in EPP mode

Please Log in or Create an account to join the conversation.

More
18 May 2013 04:47 #34291 by btvpimill
how about the MESA 5i25? seems like that will fit the bill for me. Looks like there is an internal port that I assume could work as an EPP? Plus the added benefit of an extrernal port that could be used for other goodies?

Please Log in or Create an account to join the conversation.

Moderators: PCWjmelson
Time to create page: 0.131 seconds
Powered by Kunena Forum