Stránka 1 z 2

Preruseni RS232 - problem

Napsal: 04 úno 2007, 22:22
od WLAB
Mam zahadny problem s prerusenim od rs232 na PC. V okamziku, kdy v povolovacim registru preruseni (na adrese base+1) povolim preruseni od vysilace (vyprazdneni tx bufferu) prestane se prerusovat od prijimace (od prijeti znaku). Pokud preruseni od vysilace nepovolim, prerusuje se spravne....
Uz jsem se tim nejaky ten rok nezabyval, tak se mi mohlo lecos vykourit z hlavy - nevzpominam si, ze bych s tim mel nekdy problem...
Napada nekoho neco?

Napsal: 04 úno 2007, 22:40
od Crifodo
jaký že to máš operační systém, jaké HW a jak je nakonfigurován port?

Napsal: 04 úno 2007, 22:54
od WLAB
OS W98 v rezimu DOSu, HW je on board seriak na desce Abit .... typ fakt nevim... zkusim zjistit z uvodni obrazovky biosu, seriovy port nastavuju primo z cecka (TC 3.0) pres "outportb" (57600,8,1,N). Port je com1 tj. base 3f8, irq ma zvoleny 4, konflikt na nem neni.

Napsal: 04 úno 2007, 23:07
od Crifodo
napíšeš jaká je taktovací frekvence, nevím jestli nebude problém s rychlostí. Nefunguje to ani při nižších Bd?
Na http://www.hw-group.com/products/hercules/index_cz.html je nějaký prográmek pro diagnostiku, mrkni na to. S kompatibilitou nových náhrad sériových řadičů jsou někdy problémy.
A triviální věc: kabel je OK? :wink:
Ještě vykoumej jestli máš nastaveno softwarové nebo hardwarové řízení toku a jestli to windows nepřepisujou pro BIOS...

Napsal: 04 úno 2007, 23:13
od WLAB
Na HWcko kouknu. S baudama ani kabelem bych problem nevidel - ponevadz -jak jsem psal-, kdyz zakazu prerusovani od TX tak se od RX prerusuje normlane, coz by jinak nedelalo (v priade jinych baudu ano, ale byly by tam nesmysly).

Jakmile proste povolim prerusovani i od TX a nevysilam, tak se vubec neskace do obsluhy IRQcka (kde se pak zjistuje zdroj preruseni)... :? :?

Napsal: 04 úno 2007, 23:25
od WLAB
Problem u handshake si dovedu predstavit napr. v tom, ze by mi to nevysilalo, ale tohle? Onot to i prijima jen to neprerusuje - nebot pri kazdem intku puvodem od TX se v obsluze irq zjisti i priznak intka od RX a zavola se i jeho obsluha (ziska se tedy mala cast dat z prijimace), ale IRQcko se jen na zaklade RX proste nevyvola....

Napsal: 04 úno 2007, 23:29
od Crifodo
sakra s tím vypařením z hlavy máš asi pravdu :) taky už se do toho nějak nemůžu dostat... je to dlouho co jsem si hrál s terminálama.
Co máš vlastně za protějšek na lince?
Zkoušels to i zjiného prostředí než z Céčka? interpretuje se to určitě správně, není to třeba závislé na rychlosti procesoru jako slavný error 200 u Pascalu?

Napsal: 04 úno 2007, 23:34
od Crifodo
V některých Biosech se zakazuje/povoluje probouzení z úsporného režimu modemem, tj. signálem na sériové komunikaci, nepere se to? zkus ten program zkompilovat na disketu a spustit někde na starým PC AT :wink:

Napsal: 04 úno 2007, 23:35
od WLAB
Programek od HW ten port cte dobre. Akorat za nej temer veskerou praci se seriakem (vcetne identifikace irq) delaji widle.

Napsal: 04 úno 2007, 23:38
od Crifodo
WLAB píše:Programek od HW ten port cte dobre. Akorat za nej temer veskerou praci se seriakem (vcetne identifikace irq) delaji widle.

jenže pindows sahají na port nejspíš přes chráněný režim, ale s tím snad programátoři od HW počítali?

Napsal: 04 úno 2007, 23:41
od WLAB
Naproti sedi mustek RS485<->RS232 osazeny ATmegou128 - tam asi problemek nebude. To bude nejaka zapeklitost kolem nastaveni toho portu.

s ATckem bude problem, pac uz nic takoveho nemam... ale myslim, ze jsem se seriakem jeste delal na tomhle poci (a tomu uz je skorem 8 let :o) ) a nejak si nevybavuju, ze by byly problemy. Mozna, ze je problem v necem, co jsem pred tim bral jako samozrejmost :o).

Napsal: 04 úno 2007, 23:48
od Crifodo
každopádně by to chtělo problém izolovat... jiný překladač (nebo rovnou z DOSu), jiný PC, pořádně otestovat... nějak nakopnutý obvod to být nemůže? zkoušels druhý COM2?

komunikaci nejde řídit softwarově znakem? bez nutnosti sledování stavových pinů?

Napsal: 05 úno 2007, 19:49
od Crifodo
wlab: dej si frťana liquoru a pak se mrkni na http://rs232.hw.cz/#registr_modemu :wink:

Napsal: 06 úno 2007, 10:25
od WLAB
Crifodo píše:wlab: dej si frťana liquoru a pak se mrkni na http://rs232.hw.cz/#registr_modemu :wink:


O tom vim 8-) kdysi jsem to taky musel vyzkoumat. Sice nevim, jestli bych si na to hned vzpomel, ale to moje historicke pascalske kopyto, ze ktereho jsem ted vychazel, nastavuje out 2 (i out 1) do log 1. Ale je pravda, ze o tom se skoro nikde nepise.

Uz se mi to vyresilo - bohuzel nejhorsim moznym zpusobem. Po opakovanem ruznem nastavovani registru, vypinani a zapinani poce, hranim s biosem, se to z niceho nic rozbehlo - bohuzel - s tim uplne puvodnim nastavenim vseho - takze nevim kde byla chyba, :?

Napsal: 06 úno 2007, 10:51
od Crifodo
nejspíš se ti v PC pere několik faktorů, které nemáš pod kontrolou protože o nich nevíš. Ona se chyba třeba zase ozve a dá ti příležitost ji dál studovat :wink:
U toho rozpomínání na sériovou komunikaci jsem si taky vzpomněl na odložený problém: mám starou průmyslovou řídicí jednotku z barvicího aparátu, něco jako MCU moderní pračky, ale historický kousek s Motorolou 6802 a krásným 15 místným displejem. Umí to napouštět, vypouštět, ohřívat, chladit, měřit několik teplot a hlídat několik chybových stavů, ale programovalo se to po sériové lince z nadřízeného počítače a já už neznám protokol a dokumentaci samozřejmě nemám! bylo tam několik řídicích slov, parametry, atd., neznám ani formát komunikace. To asi nerozchodím, co?