[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 メーリングリストの案内