[HWnews] Problem s UARTom 16C550 a WinCE

Radek Pulpan hw@elatec.cz
Čtvrtek Březen 18 19:13:29 CET 2004


Narazil jsem na podobny problem pri programovani ARM procesoru. 
Predpokladam, ze v PDA bude nejaky klon. Nakonec jsem to resil tak , ze 
okamzite pri vstupu do prerusovaci rutiny zmenim v nastavovacim registru 
  radice IRQ polaritu urovne preruseni. Pak jsem vedel, ze dalsi 
preruseni je vyvolane spadovou hranou a to uz jsem si to osetril 
softwarove. Zase jsem zmenil polaritu a vedel jsem ze dalsi preruseni 
prijde na nabeznou hranu. Mate sice dvojnasobny pocet preruseni, ale 
jinak to beha v pohode. Takhle se to da resit v pripade ze mate moznost 
konfigurovat radic preruseni, coz by jste mel na CE mit.

Pokud tu moznost nemate, musite si nastavit nejaky FLAG, ktery vam 
rekne, ze jste jeste v predchozi IRQ rutine a toto IRQ vam prislo drive 
nez jste predchzi rutinu ukoncil a tesne pred ukoncenim rutiny schodit 
flag a pending bit.

S pozdravem

Radek Pulpan

Martin wrote:
> Zdravim,
> neocakavam ze moj problem vzbudi podobny zaujem ako tema kapacitoru, ale 
> mozno niekto poradi...
> 
> Robim periferiu k PDA (iPAQ), komunikujucu cez 16C550 zapojenu na 
> CompactFlash konektor. Vsetko chodilo, ale z novou verziou iPAQ-u sa 
> vyskytol problem. Nastastie po navesani  analyzatora sa mi podarilo 
> presne identifikovat pricinu, akurat neviem ako ju odstranit :-)   
> Problem je v tom, ze 16C550 generuje IRQ na uroven (znuluje sa po 
> vycitani reg.identifikacie prerusenia) a  PDA sa tvari ze reaguje na 
> hranu a navyse ze nuluje prerusovaci flag pri odchode z prerusovacej 
> rutiny! Pokial ma vysielany paket o1B viac ako je fronta 16C550, teda 
> 17, 33, 49 atd.  bajtov, dojde k neprijemnej situacii, ktorej 
> zjednoduseny popis vyzera nasledovne:
> 
> - pda zapise 16B do uartu
> - po odvysielani sa vystavi IRQ
> - pda vojde do prerusenia, precita register ident. prerusenia (zhodi 
> IRQ) a zapise 17-ty bajt
> - 16C550 ho presunie do shift registra a kedze viac bajtov vo fronte 
> nema, vystavi znovu IRQ
> - pda vyskoci z prerusenia cim vynuluje prerusovaci flag
> - druha strana korektne prijme paket a odpovie, ale pda nic nechyti, 
> lebo IRQ zostalo vystavene este z konca vysielania
> To ze na jednej verzii to chodilo a inej nie, je dane v inak 
> vychadzajucom  casovani. U nechodiveho sa vyskytuje kriticke IRQ za cca 
> 2us od posledneho pristupu pda k uartu a na chodivom cca 4us. Z toho 
> usudzujem, ze v druhom pripade stihne vyskocit z prerusenia kym saIRQ 
> vystavi.
> 
> Ja robim len HW, ale softweristi mi povedali, ze oni nemaju moznost 
> nastavit aby pda reagovalo tak ako treba - na uroven a nie na hranu. 
> Takze ak maju pravdu, chyba sa zda byt v driveroch. Bolo mi vysvetlene, 
> ze WinCE sa nepredavaju samostatne, ale dodavaju sa spolu s vyrobkom. To 
> by znamenalo reklamovat chybu u HP. Nechce sa mi verit, ze by nikto iny 
> s tym nemal takyto problem.
> 
> Inak obist sa to da napr. zarovnanim vysielanych paketov napr. na parny 
> pocet bajtov, ale zda sa mi to chore...
> 
> 
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> HW-list@mailman.nethouse.cz
> http://nethouse.cz/mailman/listinfo/hw-list
> 
> 
> 




Další informace o konferenci Hw-list