Ako zistit stav signalu TXRDY - XR16M654IV64

Stano stano.hw na gmail.com
Pondělí Květen 2 22:33:28 CEST 2016


Dakujem za inspiraciu. Toto by mohlo fungovat.

Stano

Jan Waclawek  wrote / napísal(a):
> Pisal som nieco o tom, ze to je jednoduche? ;-)
>
> Tx FIFO ma N poloziek a prah na M polozkach (to sa u tohto UARTu da
> nastavit v 4 stupnoch, FCR[5:4]). Ak nastane prerusenie (alebo periodicky
> v hlavnej slucke) treba citat ISR register a na zaklade vrateneho stavu
> treba vykonat akciu, ktoru ten stav vyzaduje, tak, aby sa stav prerusenia
> pre ten stav vynuloval. Take neexistuje, ze stav nie je mozne osetrit,
> kazdy stav je mozne osetrit.
>
> Jeden z tych stavov je, ze Tx FIFO prekrocilo M zhora nadol, alebo je
> prazdny. Toto prerusenie sa automaticky nuluje citanim ISR, takze v
> okamihu rozhodovania je uz zrusene. Rozlisit tie dva stavy sa daju citanim
> LSR, prazdne FIFO indikuje bit 5. Takze postup je nasledovny:
> - zavediete si premennu TxFifoLevel, na zaciatku ju vynulujete
> - pri zapise polozky do Tx FIFO inkrementujete tuto premennu, ak dosiahne
> N, tak je FIFO plne a viac sa nemoze do neho zapisovat
> - pri preruseni citate register ISR, musite ho pochopitelne plne rozparsovat
>   - ak sa jedna o prerusenie typu TXRDY, precitate LSR register
>     - ak je LSR.5=1, FIFO je prazdne, vynulujete TxFifoLevel
>     - ak nie, nastavite TxFifoLevel na M-1
>
> Pri pouziti skutocneho prerusenia pochopitelne treba dbat na atomicitu
> premennej TxFifoLevel.
>
> wek
>
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
>   



Další informace o konferenci Hw-list