Zdravím všechny čtoucí.... - mám problém s PC v čistém DOSu:
Při komunikaci nových PC (pouze s nabootováním do čistého DOSu) se svými zařízeními ovládanými přímými přístupy na port v (archaismus, co?) se mi začly vyskytovat přenosové chyby.
Při hledání chyb jsem si Vytvořil jsem si v TurboPascalu jednoduchoučký prográmek, který využívá přímý přístup na porty a pouze neustále "hýbe" s jedním z výstupů sériového (nebo i paralelního) portu z úrovně L na H atd.
(na osciloskopu je tedy vidět pravoúhlý signál, střída 1:1, perioda cca 5 mikrosekund)
Pokud je přerušení povoleno, jsou samozřejmě podle očekávání vidět v tomto pravoúhlém signálu prodlevy (tedy chvilková "zmrazení" v úrovni L resp.H) různých délek v různých odstupech (prodleva např. 200 mikrosekund) - tedy jsou vidět přerušení např. od interního časovače...
Domníval jsem se, že pokud zařadím do prográmku TurboPascalu instrukci globálního zákazu všech maskovatelných přerušení CLI příkazem inline($0FA), pak v signálu žádné prodlevy neuvidím, ale ouha - není tomu tak:
Objevují se nežádoucí prodlevy v délce cca 600 mikrosekund v odstupech 1 nebo 2 sekundy (nepravidelně).
Toto bylo odzkoušeno na celkem čtyřech počítačích různého stáří s výsledkem:
1) nejnovější PC ( Celeron 2,8 GHz, Win Vista) a notebook (Pentium 1,6 GHz, WinXP Pro)
a) při nabootování pouze do čistého MSDOSu (nebo i FreeDOSu) - signál vykazuje nežádoucí prodlevy v délce 600 mikrosekund
b) při běžících Win Vista nebo XP nelze zkoušet - Visty ani XP samozřejmě přímý přístup na porty už neumožňují
2) starší PC (Pentium II MMX, Win 98 ) a starší notebook (Pentium, Win 98 )
a) při nabootování pouze do čistého MSDOSu (nebo i FreeDOSu) signál opět vykazuje nežádoucí prodlevy (i když mírně kratší oproti prvním PC - cca 400 mikrosekund)
b) při běžících Win 98 (ty ještě přímý přístup na porty umožňují) a tedy při spuštění prográmku v okně DOS ale "světe div se" - signál je perfektní, bez jakýchkoliv prodlev !!
Vypadá to tedy, že procesor je přerušován i přes zákaz všech maskovatelných přerušení, tedy zřejmě vstupem NMI ?
Kde může být zakopaný pes (koprocesor, řízení spotřeby) ??
V případě 2b) je vidno, že Win98 umí "umravnit" signál tak, že je perfektní, velmi, velmi bych potřeboval totéž tedy i v DOSu.
Nemá někdo nějaký nápad co to může způsobovat??
MiM