Bug in Opencockpit IOCARD
I have located a bug in the IOCARD USB expansion card, and posted it on the Opencockpit forum. However, I have never been really successful on that forum which is not really reactive. So I repost my message here, so maybe the bug may come to the ear of the designer in the end (I don't have his email).
Just trying to help ...
Here is my post :
I have had a problem that inputs are not properly detected at startup. As far as I can analyze, it comes from the code inside the PIC 16C745 on the USB card.
As an example, I have two master cards and the following inputs ON at startup :
here is what SIOC or Controlador see at startup :
NOW, this is info for the card designers :
I analyzed the packets sent by the USB expansion card to the PC at startup to describe the inputs activated :
03 BF DB 20 00 20 20 40
80 00 40 40 20 00 20 40
80 00 12 00 .......
As you can see, all is correct except the 12 00 sequence which corresponds to the 9th inputs of all groups on the 2 cards, and is not correct ! The correct values should be 44 11
The PIC chip incorrectly read the 9th inputs of each group (inputs 08 - 17 - 26 - 35 - 44 - 53 - 62 - 71 - 80 - 89 - 98 - 107 - 116 - 125 - 134 - 143 - ... etc ...)
Controlador correctly displays what is reported by the PIC chip, so there's no problem with him.
Please use this info for debugging the PIC 16C745 program
Post Thanks / Like - 1 Thanks, 0 Likes, 0 Dislikes
500+ This must be a daytime job
Suggest you goto O/C site.home page and hit Contact US.Report a technical problem here.I too have tried the main Forums and generally had no luck.However using this option ive had VERY good and quick response.
Good luck and thanks for reporting.
150+ Forum Groupie
this problem is known to OC people.
Beware that the behavior changes when connecting the third/fourth mastercard to the
usb expansion card.
There was some other post but cant remember if it was on this forum. Someone actually
cut the power to the mastercard via a relay when SIOC started up and then the initial
values are Ok.
Thanks for the tip. I did that, and I'm waiting to see if I get an answer.
I have read the thread you mention before actually researching the nature of the problem. It was not clear then, in this post that the bug came from the USB card microcode. It is not related to connecting the 4th card. You get it when you have more than one card.
The trick with the relay is that you get a wrong report from the USB card at the startup, then you reset all entries on the MC cards, and then the USB will notice the change after the reset of the inputs and report their correct state.
This is a way around the bug, but not solving it.
150+ Forum Groupie
You are right, its a workaround for the case you really need to get it solved for your application.
If not there are many ways to deal with this problem. Until it gets solved by OC people following actions can be taken.
-> define a var at the beginning of SIOC script and set it to one. let the last var in your
script reset this first var (some kind of var keeping the initialising state). suppress any
action from those wrong inputs during init of the script.
-> dont use those 9th inputs for switches but only for momentary buttons. Those are 0 anyway during init
what I meant with the dependency of the third card : when you use 3 mastercards or 4 then the initial state of those 9th inputs upon start would be 1 iso 0.
75+ Posting Member
Originally Posted by oliver_mpt
What utilities did you use to extract USB data ? And where can I find reference on the USB data structures?
It seem that we have a problem with some USB ports shutting down when too many are connected. I want to learn how to debug problems like this.
I use HHD Device Montoring Studio, the lite edition.