[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