[pso] [Tema 2] [Win] - Setari initiale + instalare intrerupere

Andrei Ciuca andrei.ciuca at gmail.com
Fri Apr 4 17:38:51 EEST 2008


Salut,

Am si eu o problema legata de tema 2 pe windows - nu reusesc sa mi se
apeleze intreruperea ... acum nu stiu daca nu am instalat-o corect sau daca
nu scrium cum trebuie.

Initializarea pentru cele 2 porturi o fac in felul urmator :

1) scriu in FIFO Control Register 0x07 = 00000111
    adica trigger la 1 byte ,  DMA mode select disabled , resetare buffere ,
bufferre FIFO activate
    nu stiu daca e vreo problema cu faptul ca pun pe 0 si bitii 4 si 5, care
sunt rezervati (dar nu am cum sa aflu valoarea lor anterioara,
    registrul fiind read-only)

2) setez bitul DLAB , scriind in Line Control Register 0x80

3) setez rata de transfer prin setarea divizorului la valoarea 3
     - scriu in low valoarea 0x03 si in high valoarea 0x00

4) scriu in Line Control Register la valoarea 0x0B = 00001011
    DLAB=0 , break disable , paritate impara , 1 bit de stop , lungime
cuvant de 8 biti

5)  kVector = HalGetInterruptVector(Internal, 0, IRQ , 0, &kIrql,
&kAffinity);
     un IRQ este 3 pentru 0x2F8 si 4 pentru 0x3F8

6)  PKINTERRUPT intrObject;
     BOOLEAN intrFunc(IN PKINTERRUPT  Interrupt, IN PVOID  ServiceContext)

    IoConnectInterrupt( &intrObject, intrFunc, date, NULL , kVector , kIrql,
kIrql, Latched sau LevelSensitive ,TRUE, kAffinity, FALSE );

   am incercat si cu Latched si cu LevelSensitive
   functia nu intoarce eroare

7) scriu in Interrupt Enable Register 0x03
    inseamna ca se genereaza intreruperi pentru cazurile in care avem date
de citit sau putem sa scriem date

dupa , am incercat sa apelez din DriverEntry

WRITE_PORT_UCHAR((PUCHAR)0x3F8,(UCHAR)'a');
sau
WRITE_PORT_UCHAR((PUCHAR)0x2F8,(UCHAR)'a');
 ... nu stiu daca e corect sa fac asta ... oricum nu se intampla nimic

am incercat sa dau din cygwin
echo "test" >  \\.\pipe\pipe_seriala
nu se intampla nimic

mai precizez ca am incercat sa inregistrez intreruperea doar pentru COM1 sau
doar pentru COM2
si am incercat sa inregistrez si pentru amandoua aceeasi functie

din device manager am activa initial COM1 si COM2 ... dar am citit ca
trebuie sa fie dezactivate si le-am dezactivat la loc . Sper ca nu au fost
si alte consecinte datorate activarii lor.

Ce fac gresit ? :D
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://cursuri.cs.pub.ro/pipermail/pso/attachments/20080404/018f952f/attachment.htm 


More information about the pso mailing list