cyberluke wrote on 2022-08-22, 12:11:
So it seems that all three computers from 200 Mhz to 900 Mhz (66 Mhz FSB and 133 Mhz FSB) have problem with very short timing interval. They behave the same in DOS and Windows.
there is nothing problematic in short 'timing interval' for computers or gameports
cyberluke wrote on 2022-08-22, 12:11:
Currently I did adjust the factory trimmers VR1 and VR2. The range is only half, the ideal center is a little bit off. But it works in Windows calibration and it works in DOS games that have calibration including calibrating center - like Descent - it works there flawlessly. The smaller range includes responsivity. The only use case where this would not work would be games like Simpsons (or perhaps Raptor), which calibrate only top left and bottom right corner. The center would be off there and there are no trimmers outside to fix it. But for that, you would probably connect it to 486DX2-66MHz and readjusted the trimmers inside to original position, so it would not happen (yes a lot of manual work - don't buy this joystick if you have OCD haha).
so as I guessed you moved center so far joystick is no longer able to report position that was giving you trouble
>The range is only half
does this mean you reach max reading when moving joystick half way? thats not really optimal
cyberluke wrote on 2022-08-22, 12:16:
The last oscilloscope position when bug occurs look like this yellow line. The spike is cut.
For this to happen hmmm joystick would have to deliberately stop charging the cap because it thinks its done. The only explanation coming to me right now is joystick manufactured so late (past 2000) all the soundcards had very small capacitors (for example 2nf instead of 10nf) and joystick internal timer cuts off charging circuit without monitoring voltage - why would anyone do this when one comparator makes design bulletproof is a mystery? Another less likely option might be not enough power from the gameport?
Edit: one possibility would be potentiometer inside the joystick being broken, so the chip doing the conversion loses signal from the stick and gives up sending its own emulated signal. That would make sense if only one axis generated error, yet you say 'top/left positions', extremely unlikely for both potentiometers to be broken in same way.
So joystick is unable/unwilling to charge cap all the way to threshold voltage (~3.3v), software measuring loop times out and decides something went wrong, like user unplugging joystick.
cyberluke wrote on 2022-08-22, 12:16:
Looking at the square wave signals, especially Trigger signal, I would think that at this fast rate, joystick might not be fast enough to read the Trigger change and then the latching with open collector won’t happen. Or the trigger signal will come twice during one latch and it gets interrupted.
All of that happens inside 555 timer which has Schmitt trigger fast enough up to couple MHz, several orders of magnitude above what gameport could muster.
Trigger signal is linked with mechanism discharging capacitor, you would see triangle wave if it was being triggered second time before concluding measurement.
rising edge turning into flat voltage not reaching 3.3V threshold means joystick gave up sending more voltage.
cyberluke wrote on 2022-08-22, 12:19:
So when I adjusted VR1 and VR2, I am basically not fully charging the capacitor and I won’t reach the threshold, where the issue happens. You get half range, but it works.
As an experiment you can replace measurement capacitors on one of your gameport cards for smaller ones, 1-2nF. Im guessing this will make this joystick work normally.
PS: Never Ever measure resistance and capacitance on a powered circuit! 😀