Seite 1 von 1

USB stört Timer-Interrupt

Verfasst: Do 20. Sep 2012, 10:39
von TomCat
Hallo,

ich hab den Timerinterrupt auf eine eigene Interrupt-Service-Routine verbogen und die Ansprungrate auf 1000 mal/Sekunde verstellt. Solange im Rom-Bios USB disabled ist, wird die Interruptservice-Routine sehr exakt mit nur geringem Jitter (kleiner 3 Mikrosekunden) angesprungen. Sobald aber im Rom-Bios USB enabled ist, messe ich einen Jitter von ueber 1500 Mikrosekunden !!

Frage:
1. Wie kann das sein, wenn gar kein Gerät an einem USB-Port hängt ?
2. kann ich den USB-Port auch software-seitig soweit disablen oder verbiegen, oder was auch immer, dass er nicht mehr stört?

THX
TomCat

Re: USB stört Timer-Interrupt

Verfasst: Fr 21. Sep 2012, 09:19
von Brueggi
Da fällt mir spontan ein: Verbieg doch den USB-Vektor einfach mal auf ein "IRET". Und wenn Du fertig bist, stell den Vektor wieder zurück. USB wirst Du dann eh nicht verwenden in deinem Programm, oder?

Kann es ggf. sein, dass der USB-Port "stört", weil er durch Polling ständig abgefragt wird?

Re: USB stört Timer-Interrupt

Verfasst: Fr 21. Sep 2012, 11:33
von ChrisR3tro
Schonmal auf 'nem anderen PC probiert?

Re: USB stört Timer-Interrupt

Verfasst: Fr 21. Sep 2012, 18:33
von TomCat
Hallo

danke für die Antworten, habs auf 3 total verschiedenen Rechner ausprobiert. immer das gleiche Ergebnis. ja das mit dem Verbiegen des USB-Interrupts ist mir auch schon in den Sinn gekommen. Ich weiß nur nicht, auf welchem IRQ der liegt. Sind ja nur 16 Leitungen.

Weiß jemand wo der USB-IRQ liegt?


Achja, Programm läuft im real mode mit Dos 6.22

Re: USB stört Timer-Interrupt

Verfasst: Fr 21. Sep 2012, 19:25
von TomCat
Also neue Erkenntnis. Es liegt am USB-Legacy Support, den man im BIOS einstellen kann, also nicht am USB an sich.

Nur gibt es eine Möglichkeit diesen USB-Legacy Support auch per software auszuschalten, bzw. irgendwie "unschädlich" zu machen und nicht nur per Bios - Einstellung? Was mich auch generell interessieren würde. Warum stört der Legacy-Support eigentlich?

Re: USB stört Timer-Interrupt

Verfasst: Sa 22. Sep 2012, 13:27
von Brueggi
Ich hab ein wenig "herumgelesen" und bisher nur herausgefunden, dass der USB-Controller den INT $0A belegt. Ob das allerdings immer so ist, k. A. Da gibt es bestimmt im BIOS-Segment $0040 oder in der Echtzeituhr/NVRAM ein paar Bits, die das regeln. Nur a) ob die wirklich immer an der gleichen Stelle sind und b) wo die sind, konnte ich leider nicht herausfinden.

Re: USB stört Timer-Interrupt

Verfasst: So 23. Sep 2012, 07:12
von DOSferatu
Ein kleiner Einwurf meinerseits:
Soweit ich weiß, kann man beim PC die IRQs priorisieren, d.h. wenn mehrere IRQ-Signale anliegen, welcher zuerst ausgeführt wird.
Will sagen: Wenn man den Ticker-IRQ (0) auf die höchste Priorität stellt, könnte es das Problem beheben.
Aber: IRQ-Prioritäten setzen/ändern habe ich schon ewig nicht gemacht. Irgendwo in meiner Unit für den seriellen Port hab ich da was drin, da müßte ich mal forschen. (Wenn meine Units "fertig" sind und funktionieren, fummle ich da meistens nicht mehr dran herum [außer, wenn mal etwas zu erweitern ist] - weil ich mich dann ja wieder anderen Dingen zuwende.)

Re: USB stört Timer-Interrupt

Verfasst: Mo 24. Sep 2012, 18:17
von TomCat
Hallo,

ich zhab schon alles versucht, auch alle 16 Interrupts verboten, also disabled und nur den Timer zugelassen. Hilft alles nichts. Sobald der USB-Legacy-Support an ist, hab ich den riesen Jitter :-((

Re: USB stört Timer-Interrupt

Verfasst: Di 25. Sep 2012, 11:44
von ChrisR3tro
Das ist ja interessant. Ich habe früher immer bemerkt, dass z.B. im Spiel Tyrian die (MIDI-)Musik sehr unregelmäßig schnell spielt, wenn ich eine Mouse am USB-Port betreibe und über USB-Legacy-Support sie als PS/2-Mouse emuliere. Könnte das dasselbe Problem sein?

Ich stelle mir das dann so vor, dass der USB-Interrupt zu oft feuert und die CPU zu oft anhält, sodass es zu diesem Jitter kommt.

Gruß
locutus

Re: USB stört Timer-Interrupt

Verfasst: Di 25. Sep 2012, 13:18
von CptKlotz
Passierte bei mir aber auch, wenn die Maus über PS/2 angeschlossen war und ließ sich mit einem anderen Maustreiber beheben.

Re: USB stört Timer-Interrupt

Verfasst: Di 2. Okt 2012, 10:05
von TomCat
Hi, naja ich hab mir ne Software gebat, die das alles total exakt messen kann. Also es ist nur ein Jitter von ca. 2 millisekunden der bei eingeschaltetem Legacy-Support auftritt. Also die "Mausprobleme" haben sicher ne andere Ursache. An den interrupts 1-16 liegts nicht. habe alle entweder ausgeschaltet oder auf ne eigene Service-Routine verbogen die kaum Durchlaufzeit benötigt. Mich würde wirklich interessieren wie dieser Jitter zustande kommt. :-(

Sind so die letzten Ecken von DOS die es noch auszukundschaften gilt...