[pso] [Tema2][Linux]Problema reactivare intreruperi pe receiver.
Bogdan Nitu
nitubogdan_cc at yahoo.com
Wed Apr 7 23:16:17 EEST 2010
Salut!
Am urmatoarea problema:
La sfarsitul operatiei de scriere (pentru COM1 este exemplul), reactivez intreruperile:
- COM1 sender -> cu DLAB=0 set BIT 1 din IER -- Enable Transmitter Holding
Register Empty Interrupt
- COM2 receiver -> cu DLAB=0 set BIT 0 din IER -- Enable Received Data Available Interrupt
Sa zicem ca in bufferul senderului sunt 10 caractere.
Problema: Pana mi se goleste bufferul mi se genereaza intreruperea de 10 ori consecutiv, mi se apeleaza handlerul pe COM1 (transmitatorul), si d-abia apoi de 10 ori consecutiv handlerul pentru COM2.
Intreruperea pentru COM2 se genereaza abia dupa ce s-au generat toate cele 10 intreruperi de pe COM1 (au fost in buffer 10 caractere). De ce nu vine intretesut? Am fifo de 14, daca bufferul are mai mult de 14 caractere, trebuie sa ma opresc, ca sa se poata genera intrerupere si pentru receptor.
iir pe com1 sender are bitii 2 si 1: 0 1 (Transmitter holding register
empty)
iir pe com2 receiver are bitii 2 si 1: 1 si 0 (Received Data Available)
In mod normal la sfarsitul lui write ar trebui sa reactivez doar intreruperile
pentru Sender (sunt pe COM1, nu am acces la COM2 care se presupune a fi
pe alta masina).
Apoi intreruperile de tip Received Data Available au prioritate mai mare
decat cele Transmiter holding register empty.
Cand primesc data pe COM2 (eveniment: Received Data
Available) ar trebuie
sa se genereze imediat intrerupere, nu sa se genereze mai intai numai
pentru sender de 10 ori.
se intra in handle: com1
se intra in handle: com1
..... de 10 ori
se intra in handle: com1
se intra in handle: com2 s-a primit caracterul 'a'
se intra in handle: com2 s-a primit caracterul 'b'
se intra in handle: com2 s-a primit caracterul 'c'
se intra in handle: com2 s-a primit caracterul 'd'
... iar de 10 ori
Am tot cautat pe net, iar pe forumurile din 2008, 2007 .... vad ca este alt uart, parca 8250. Nu-i dau de cap, daca ma poate ajuta cineva!
Multumesc frumos!
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://cursuri.cs.pub.ro/lurker/list/pso.html/attachments/20100407/73b12c22/attachment.htm>
More information about the pso
mailing list