[pso] [Tema2][Linux]Problema enunt si implementare
Bogdan Nitu
nitubogdan_cc at yahoo.com
Thu Apr 8 15:29:00 EEST 2010
Salut!
Intrebarea este urmatoare: daca eu sunt la unul dintre capete (sa zicem COM2)
am voie sa activez/dezactivez intreruperi pe portul celalalt (COM1) ?
In implementare pot sa fac asta (ambele porturi sunt pe masina mea), dar in
realitate se mai poate? (porturile COM1 si COM2 fiind pe masini diferite).
In mod normal, in afara de functia init a modulului unde configurez ambele
porturi, in rest trebuie sa privesc la un moment dat numai unul dintre porturi
(cand tratez COM1 nu am voie sa vad bufferul corespunzator lui COM2,
spatiul ramas liber din aceasta .... si alte informatii). Totusi mi se da macar
voie sa activez/dezactivez intreruperile de la celalalt capat?
Am mai post si anterior, intreruperile Transmitter Holding Register Empty Interrupt
fac starvation si le lasa pe celelalte Received Data Available Interrupt doar la
sfarsit sa se execute. (nu apar intretesut)
Singura solutie pe care am gasit-o este ca in handlerul transmitatorului sa nu
mai citesc iir si sa dezactivez intreruperile Transmitter Holding Register Empty iar in handlerul receptorului sa verific mereu Data available (Bit 0 din LSR).
Daca este 0 (nu mai am nimic de primit), reactivez intreruperile de la celalalt
capat (am voie ?) si astfel transmitatorul iar imi va trimite date.
Este ok solutia, am voie? Va rog sa imi raspundeti, ca tot ma chinui la problema asta de ceva vreme.
Si o alta intrebare scurta, bufferul circular ce dimensiune trebuie sa aiba?
Bogdan.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://cursuri.cs.pub.ro/lurker/list/pso.html/attachments/20100408/8bc0213b/attachment.htm>
More information about the pso
mailing list