При работе с данным чипом возникли вопросы.
1) Какие из регистров контроллера SC16C554BIBM являются общими для всех уартов (то есть не зависят от того какой CS выбран), а какие имеются для каждого уарта (значение регистра зависит от выбора CS)
2) При посылке более 16 байт данных (16 байт - пороговое значение) только первые 16 байт получаем. В следующем эксперименте мы используем только один uart. Инициализируем регистры следующими значениями:
ier=5, isr=c1, lcr=3, mcr=8, lsr=60, msr=0, sr=ff
При получении первого байта процессор прерывается сигналом RXRDY (ISR=0xC4). Потом читаются первые 16 байт пока LSR.0==1. После чего происходит новое прерывание (ISR=0xC1), а затем ещё одно (ISR=0xC6 and LSR=0xF9). В результате больше не происходят прерываний и, как следствие, не можем читать данные. То, что было передано после 16 байт просто теряется.
Почему больше не происходит прерываний? Как правильно инициализировать регистры или обрабатывать прерывание?
DMA не используем.
П.С. Как обычно, времени нет, разработка горит
Сообщение отредактировал Dist - May 13 2008, 06:18