[Armadillo:08639] Re: シリアル受信読出が途中で止まる

Yasuhisa Nakamura email@hidden
2013年 2月 26日 (火) 19:53:35 JST


中村です。

RxFIFOのRXTLに達したら割り込み発生なのか、それとも
超えたら割り込みが発生するのか、の説明がデータシートの
「46.4.5 Receiver」にありました。
引用しておきます。

If the receiver trigger level is set to 2
(RXTL[5:0] = UFCR[5:0] = 2), and 2 chars have
been received into RxFIFO, the receiver ready
interrupt flag (RRDY = USR1[9]) is asserted
and an interrupt is posted if the receiver ready
interrupt enable bit is set (RRDYEN = UCR1[9] = 1).

RXTL=0にしたときどうなるのかはこの説明ではわかりません。

-- 
なかむら

[Armadillo:08631]
> 中村です。
>
> [Armadillo:08630]に追加です。
>
>> 今回問題になっているポートのRXTLを1にします。
>>
>> #define UART1_UFCR_RXTL         16
>
> データシートのRXTLの説明には
>  A maskable interrupt is generated whenever the
>  data level in the RxFIFO reaches the selected
>  threshold.
> と、また、UCR1のRRDYENには
>  The fill level in the RxFIFO at which an interrupt
>  is generated is controlled by the RXTL bits.
> と書いてあるのですが、USR1のRRDYでは
>  Indicates that the RxFIFO data level is above
>  the threshold set by the RXTL bits.
> となってます。
>
> RXTLが"reach"、RRDYENが"fill level"、
> ところが、RRDYでは"above"。
>
> もしかしたらRXTLに0(zero)をセットかもしれません。
> RXTLは0〜32がセットできるので、もし"reach"で
> 0だったら、受信データなしで割り込みかかりっぱなしに
> なっちゃいます。
>
> だけど、もしこれ(RxFIFOに一定バイトたまらないと
> 割り込みがかからない)が原因だったら、モデム相手に
> "AT"とやったときに応答がちゃんと得られるのが
> 謎です。
>
> --
> なかむら




armadillo メーリングリストの案内