[pso] [Tema2][Linux] Problema la receptia unui caracter in handler

Andrei Voinescu voinescu.andrei at gmail.com
Wed Apr 21 10:38:29 EEST 2010


2010/4/21 Andrei Voinescu <voinescu.andrei at gmail.com>:
> 2010/4/21 Mihnea Donciu <mihnea.donciu at gmail.com>:
>> On 4/21/2010 12:10 AM, Andrei Voinescu wrote:
>>>
>>> În LCR configurezi trimiterea a câte 8 biți?
>>>
>>
>> Folosesc macrou-ul SET_LINE definit in laborator :
>> SET_LINE(UART16550_BAUD_9600,UART16550_LEN_8,UART16550_STOP_1,
>> UART16550_PAR_NONE,port); //setez parametrii de comunicatie
>>>
>>> Ce se întâmplă când trimiți 0xff la un capăt?
>>>
>>> echo -ne '\xff' | od -x  =>  pentru verificare
>>> echo -ne '\xff'>  /dev/com1
>>>
>>> Andrei
>>>
>>
>> com1: Inregistrat ÿ in buffer, fill = 1
>> com1: IIR c2 LSR 60 MSR bb
>> com1: fill = 1
>> com1: T 255 (60)            // trimit caracterul 255 ascii
>> com1: IIR c2 LSR 60 MSR b0
>> com1: fill = 0
>> com2: IIR cc LSR 61 MSR b0
>> com2: R 31 (61)            // primesc caracterul 31 ascii
> Ok. E destul de clar acum că îți trimite doar ultimii 5 biți. Verifică
*4*
> contextul folosirii macro-ului (la tine în modul).
> Verifică să ai DLAB=0 când citești din registru (deși nu acesta ar fi
> comportamentul).
> outb-ul de test din init este înainte sau după setarea parametrilor
> liniei de comunicație?
>
>
> Andrei
>>>
>>> 2010/4/20 Mihnea Donciu<mihnea.donciu at gmail.com>:
>>>
>>>>
>>>> Salut!
>>>>
>>>> Am o problema cand citesc la receptor in handler caracterul primit pe
>>>> port
>>>>  (ch = inb(data->base)), dupa ce il trimit tot in handler la transmitator
>>>> (outb(ch, data->base)).
>>>> De exemplu, daca trimit catre dispozitiv un sir prin echo -n "mama1234">>
>>>> /dev/com1, pe com2 voi primi asa:
>>>> com2: (IIR = cc) (LSR = 61) (MSR = b0)    // registrele de stare
>>>> com2: R 13 (61)    // 13 in ascii pt m, cand m e 109 in ascii
>>>> com2: R 1 (61)      // 1 in ascii pt a, cand a e 97 in ascii
>>>> com2: R 13 (61)    // la fel pt m
>>>> com2: R 1 (61)      // la fel pt a
>>>> com2: R 17 (61)    // 17 in ascii pt 1, cand 1 in ascii e 49
>>>> com2: R 18 (61)    // 18 in ascii pt 2, cand 2 in ascii e 50
>>>> com2: R 19 (61)    // 19 in ascii pt 3, cand 3 in ascii e 51
>>>> com2: R 20 (61)    // 20 in ascii pt 4, cand 4 in ascii e 52
>>>>
>>>> Deci pentru litere primesc un caracter aflat la un decalaj de 96 de
>>>> unitati,
>>>> iar pentru cifre rezulta un decalaj de 32.
>>>> Ma poate ajuta cineva cu un sfat?
>>>> Multumesc.
>>>>
>>>> Mihnea
>>>> _______________________________________________
>>>> pso mailing list
>>>> pso at cursuri.cs.pub.ro
>>>> http://cursuri.cs.pub.ro/cgi-bin/mailman/listinfo/pso
>>>>
>>>>
>>>
>>> _______________________________________________
>>> pso mailing list
>>> pso at cursuri.cs.pub.ro
>>> http://cursuri.cs.pub.ro/cgi-bin/mailman/listinfo/pso
>>>
>>
>> _______________________________________________
>> pso mailing list
>> pso at cursuri.cs.pub.ro
>> http://cursuri.cs.pub.ro/cgi-bin/mailman/listinfo/pso
>>
>


More information about the pso mailing list