Микроконтроллер 8250

| | | | |

0 | 0 | 0 | | | | | | | | | | | | | | | |

- | Нет

Самый |Состояние ли

высокий|нии приема

|

|

|

Второй |Наличие при- |нятых данных |

Третий |Регистр хра- |нения пере- |датчика пуст | | | | |

Четвер-| Состояние

тый |модема

|

|

|

|

|

|

|

| Нет | -

|Переполнение, |Чтение регист-

|ошибка парите-|ра состояния

|та, ошибка |линии

|кадра,прерыва-|

|ние передачи |

| Наличие при- |Чтение реги-

|нятых данных |стра буфера

| |приемника

| Регистр хра- | Чтение ре-

|нения пере- |гистра IIR

|датчика пуст |(как источни-

| |ка прерывания)

| |или запись в

| |регистр хране-

| |ния передат-

| |чика

| Готов к пере-| Чтение реги-

|даче, ус-во |стра состоя-

|сопряжения да-|ния модема

|нных готово, |

|индикатор вы- |

|зова, детектор|

|принимаемого |

|линейного сиг-|

|нала |

РЕГИСТР РАЗРЕШЕНИЯ ПРЕРЫВАНИЯ

Этот 8-ми разрядный регистр разрешает каждому из 4 источников прерывания WD8250 в отдельности формировать выходной сигнал прерывания (INTRPT). Возможно полностью отключить систему прерывания, сбросив биты 0 - 3 регистра разрешения прерывания в состояние лог. 0. Подобно этому устанавливая соответствующие биты этого регистра в состояние лог. 1, могут быть разрешены выбранные прерывания. Отключая систему прерывания, мы отключаем регистр идентификации прерывания и активный (высокий) уровень выходного сигнала INTRPT. Все другие функции ИМС действуют, как обычно, включая установку регистра состояния, регистров состояния линий и модема. Содержимое регистра разрешения прерывания представлено в табл. 2 и описано ниже.

Разряд 0: этот бит разрешает прерывание по наличию принятых данных, если он установлен в состояние лог. 1.

Разряд 1: этот бит разрешает прерывание,когда регистр хранения передатчика пуст, и он установлен в состояние лог. 1.

Разряд 2: этот бит разрешает прерывание по состоянию линии приема, когда он установлен в состояние лог. 1.

Разряд 3: этот бит разрешает прерывание по состоянию модема при установке его в состояние лог. 1.

Разряды 4 - 7: эти 4 бита всегда установлены в состояние лог. 0.

РЕГИСТР УПРАВЛЕНИЯ МОДЕМОМ

Восьмиразрядный регистр управляет интерфейсом с утройством сопряжения, или модемом, или перефирийным устройством, иммитирующим модем. Содержимое регистра управления модемом представлено в табл. 2 и описано ниже.

Разряд 0: этот бит управляет выходом готовности терминала данных (DTR). Когда бит 0 устанавливается в состояние лог. 1, выход DTR принудительно устанавливается в состояние лог. 0. Когда бит 0 сбрасывается в состояние лог. 0, выход DTR устанавливается в состояние лог. 1.

Примечание: выход DTR WD8250 может подаваться на

инвертирующий линейный драйвер (такой как DS1488)

для получения выхода нужной полярности на

подключаемом модеме или устройстве сопряжения. Разряд 1: этот бит управляет выходом запроса передачи (RTS).

Бит 1 действует на выход аналогично биту 0.

Разряд 2: этот бит управляет сигналом "выход 1" (OUT1), который является вспомогательным выходом, определяемым пользователем. Бит 2 действует на выход аналогично биту 0.

Разряд 3: этот бит управляет сигналом "выход 2" (OUT2), который является вспомогательным выходом, определяемым пользователем. Бит 3 действует на выход аналогично биту 0.

Разряд 4: этот бит обеспечивает зацикливание для

диагностического тестирования WD8250. Когда бит 4

устанавливается в состояние лог. 1, происходит следующее:

выход передатчика (SOUT) устанавливается в состояние лог.1

(высокий уровень); вход приемника (SIN) отключается; выход

сдвигового регистра передатчика замыкается на вход здвигового

регистра приемника; 4-ре управляющих входа модема (CTS, DSR,

RLSD, RI) отключаются; 4-ре управляющих выхода модема (DTR, RTS, OUT1, OUT2) внутренне подключаются к 4-м управляющим входам модема. В диагностическом режиме передаваемые данные принимаются немедленно. Это позволяет процессору проверить передающие и принимающие каналы данных WD8250.

В диагностическом режиме работают прерывания приемника и передатчика. Прерывания по состоянию модема выполняются так же, но источником прерывания теперь являются 4 младших бита регистра управления модемом, а не 4-ре входа управления модема. Прерывания управляются регистром разрешения прерываний. Система прерывания WD8250 может быть проверена записью в 6-ть младших битов регистра состояния линии и 4-ре младших бита регистра состояния модема. Установка этих битов в состояние лог. 1 (любого из них) формирует соответствующее прерывание, если оно разрешено. Сброс этих прерываний происходит так же, как и при нормальной работе WD8250. Для возвращения к реальной работе регистры должны быть перепрограммированы для нормальной работы, а затем бит 4 должен быть сброшен в состояние лог. 0.

Разряды 5 - 7: эти биты постоянно установлены в состояние лог. 0.

РЕГИСТР СОСТОЯНИЯ МОДЕМА

Этот 8-ми разрядный регистр обеспечивает чтение текущего состояния управляющих линий от модема (или перефирийного устройства) на ЦПУ. Кроме этой информации о текущем состоянии 4-ре бита регистра состояния модема обеспечивают информацию об изменении этого текущего состояния. Эти биты устанавливаются в состояние лог. 1, когда управляющий вход от модема меняет состояние. Они сбрасываются в состояние лог. 0, когда ЦПУ читает регистр состояния модема. Содержимое регистра состояния модема приведено в табл. 2 и описано ниже.

Разряд 0: этот бит является индикатором изменения сигнала готовности к передаче (DCTS). Бит 0 указывает, что вход CTS в ИМС изменил состояние по отношению к тому, как он в предыдущий раз был считан ЦПУ.

Разряд 1: этот бит - индикатор изменения сигнала готовности терминала данных (DDSR). Бит 1 указывает, что вход DSR в ИМС изменил состояние по отношению к тому, как он в предыдущий раз считывался ЦПУ.

Разряд 2: этот бит - детектор заднего фронта индикатора вызова (TERI). Бит 2 указывает на то, что вход RI в ИМС изменился с ON (лог.1) на OFF (лог.0).

Разряд 3: этот бит - индикатор изменения детектора принятого линейного сигнала канала данных (DRLSD). Бит 3 указывает на изменение состояния входа RLSD в ИМС. Примечание: когда биты 0, 1, 2 или 3 установлены в состояние лог. 1, генерируется прерывание по состоянию модема.

Разряд 4: этот бит - дополнение ко входу "готов для передачи" (CTS).

Разряд 5: этот бит - дополнение входа готовности терминала данных (DSR).

Разряд 6: этот бит - дополнение входа "индикатор вызова" (RI).

Разряд 7: этот бит - дополнение входа "детектор принимаемого линейного сигнала" (RLSD).

Таблица 2

Доступные регистры WD8250

--------------------------------------------------------------

| Адрес регистра 0 DLAB 0 | Адрес регистра 0 DLAB 0


N бита Регистр буфера приемника (только чтение) Регистр хранения передатчика (только запись)

0 Разряд данных 0 * Разряд данных 0 *

1 Разряд 1 " 1

2 Разряд 2 " 2

3 Разряд 3 " 3

4 Разряд 4 " 4

5 Разряд 5 " 5

6 Разряд 6 " 6

7 Разряд 7 " 7

*Разряд 0 является найменьшим значащим разрядом, передаваемым или принимаемым.

--------------------------------------------------------------

| Адрес регистра 1 DLAB 0

----------------------------------------------------- N бита | Регистр разрешения прерывания


0 Разрешает прерывание по получению данных (ERBFI)

1 Разрешает прерывание при пустом буфере передатчика (ETBEI)

2 Прерывание по состоянию линии приема (ELSI)

3 Разрешение прерывания по состоянию модема (ЕDSSI)

4 0

5 0

6 0

7

--------

0 ----------------------------------------------------


Адрес регистра 2

N бита Регистр идентификации прерывания

0 Наличие прерывания

1 Идентификация прерываний разряд 0

2 Идентификация прерываний разряд 1

3 0

4 0

5 0

6 0

7

--------

0 ----------------------------------------------------


Адрес регистра 3

N бита Регистр управления линией

0 Выбор длины символа разряд 0 (WLS0)

1 Выбор длины символа разряд 1 (WLS1)

2 Количество битов останова (STB)

3 Разрешение паритета (PEN)

4 Выбор паритета (EPS)

5 Фиксированный паритет

6 Прерывание передачи

7

--------

Разряд доступа к регистрам делителя (DLAB) ----------------------------------------------------


Адрес регистра 4

N бита Регистр управления модемом

0 Готовность терминала данных (DTR)

1 Запрос на передачу (RTS)

2 Вывод 1 (OUT1)

3 Вывод 2 (OUT2)

4 Зацикливание

5 0

6 0

7

--------

0 ----------------------------------------------------


Адрес регистра 5

N бита Регистр состояния линии

0 Готовность данных (DR)

1 Ошибка переполнения (OR)

2 Ошибка паритета (PE)

3 Ошибка кадрирования (FE)

4 Прерывание приема (ВI)

5 Пуст регистр хранения данных передатчика (THRE)

6 Пуст сдвиговый регистр (TSRE)

7

--------

0 ----------------------------------------------------


Адрес регистра 6

N бита Регистр состояния модема

0 Изменение сигнала "свободен для передачи" (DCTS)

1 Изменение сигнала "готовность передать данные" (DDSR)

2 Отрицательный фронт сигнала "индикатор вызова"(TERI)

3 Изменение детектора линейного сигнала (DSLSD)

4 Свободен для передачи (CTS)

5 Готовность передать данные (DSR)

6 Индикатор вызова (RI)

7

--------

Детектор принимаемого линейного сигнала (RLSO) -----------------------------------------------------

|Адрес регистра | Адрес регистра

| 0 DLAB 1 | 1 DLAB 1

N бита Регистр делителя (LS) | Регистр делителя (MS)

0 Разряд 0
| Разряд 8

1 Разряд 1
| Разряд 9

2 Разряд 2
| Разряд 10

3 Разряд 3
| Разряд 11

4 Разряд 4
| Разряд 12

5 Разряд 5
| Разряд 13

6 Разряд 6
| Разряд 14
-

7

-----

Разряд 7 ---------------- -------

| Разряд

----------

15

--------

----

From news-service Sun May 17 13:24:01 1992

To: subscribers

From: scott@mycro.UUCP (Scott C. Sadow)

Newsgroups: comp.sys.ibm.pc.hardware,comp.sys.ibm.pc.misc,comp.sys.ibm.pc.programmer Subject: [News] UART information: 8250 vs 16450 vs 16550 vs 16550A Message-ID: <1992may15 .094715@mycro.UUCP>

Date: Fri, 15 May 92 13:47:15 GMT

Sender: L-usenet@kiae.su

Status: R

This message describes the differences between the 8250, 16450, 16550, and 16550A UART chips and some programming information for the 16550A. All of this information is from the National Semiconductor manuals. This means there is no guarantee that this is correct for other chips. Any and all information is supplied as-is. Also, if there are any typos or errors, they are probably due to transmission errors. :)

8250: Used in the original PC. For more information on this, refer to any of the many books on serial communtications.

16450: This is essentially an 8250, but the inside of the chip was designed using the latest technology. This chip has a scratch register for programmer use at offset BASE+7.

16550: This is essentially a 16450, but FIFO buffers were added for both transmit and receive. (FIFO means first-in-first-out and is the same as a queue) This was done to lower the overhead of serial communication by decreasing the amount of interrupts needed. However, there were bugs in the chip, so FIFOs should NOT be used. (Characters may be lost in FIFO mode)

16550A: This is a 16550 with working FIFOs.

Chip Detection

It is rather easy to detect what kind of UART is installed:

An 8250 does not have a scratch register

A 16450 does not have a FIFO

A 16550 has bad FIFOs, indicated by bit 7 of IIR

A 16550A has good FIFOs, indicated by bit 7 and bit 6 of IIR

You can use the following algorithm to detect the UART type. BASE is the base address of the serial port. (usually 3F8 for COM1, 2F8 for COM2, etc)

IIR = BASE+2 = interrupt identification register (read only)

FCR = BASE+2 = FIFO control register (write only)

SCR = BASE+7 = scratch register (read and write)

Bits are numbered from 0 to 7, 7 is high bit

Read and save the SCR

Store a test value into SCR (hex 5A is good)

Read SCR and compare to test value

If not equal, there is no scratch register, so the chip is an 8250

Store another test value into SCR (hex A5 is good)

Read SCR and compare to test value

If not equal, there is no scratch register, so the chip is an 8250

Restore the saved value from the SCR

Read and save the IIR (saves current possible FIFO status)

Store 1 into FCR (enables possible FIFOs)

Read IIR

If saved IIR value had bit 7 clear, store 1 into FCR (FIFOs were off)

If IIR had bit 6 set, the chip is a 16550A

If IIR had bit 7 set, the chip is a 16550

Otherwise, the chip is a 16450

How to use the 16550 FIFOs

National semiconductor says not to - you can lose characters. Get a 16550A (see below)

How to use the 16550A FIFOs

Changes to the UART registers compared to an 8250

IIR = BASE+2 = interrupt identification register (read only)

The upper 2 bits (bits 7 and 6) indicate if the FIFOs are enabled. A one in both means the FIFOs are enabled. A one in bit 7 only means you have a 16550, not a 16550A. (see above about chip detection and using 16550 FIFOs)

Bit 3 is used to indicate character time-out. This is set to indicate that there are bytes in the receive FIFO that need to be read. This happens after a short amount of time has elapsed that no characters have been recieved. If Bit 3 is set, Bit 2 is also set (which means receive data available), so for most applications, Bit 3 can be ignored.

On an 8250 and 16450, bits 7, 6, and 3 are always zero. Bits 5 and 4 are reserved. For compatability, after reading the IIR, mask the value with 7.

FCR = BASE+2 = FIFO control register (write only)

Bit 0 - FIFO enable

Bit 1 - receive FIFO reset

Bit 2 - transmit FIFO reset

Bit 3 - DMA mode select

Bit 4 - reserved

Bit 5 - reserved

Bit 6 - receiver trigger (LSB)

Bit 7 - receiver trigger (MSB)

Bit 0 - Set to 1 to enable both receive and transmit FIFOs. This bit must be set when any other bits are set.

Bit 1 - Set to 1 to clear the receiver FIFO. (flush the queue). This bit automatically resets to 0.

Bit 2 - Set to 1 to clear the transmit FIFO. (flush the queue). This bit automatically resets to 0.

Bit 3 - not used on most PC serial boards

Bit 6 & 7 - Receiver interrupt trigger level. Without a FIFO, the UART generates an interrupt every time a character is received. With the FIFO enabled, the UART generates an interrupt after N characters are received.

Bit 7 Bit 6 Trigger Level

0 0 1 byte

0 1 4 bytes

1 0 8 bytes

1 1 14 bytes

Why use the FIFOs, how they work, and how to use them

Normally when transmitting or receving, the UART generates an interrupt for every character sent or received. For 2400 baud, typically this is 240/second. For 115,200 baud, this means 11,520/second. With FIFOs enabled, the number of interrupt is greatly reduced. For transmit interrupts, the UART indicates the transmit holding register is not busy until the 16 byte FIFO is full. A transmit hold register empty interrupt is not generated until the FIFO is empty (last byte is being sent) Thus, the number of transmit interrupts is reduced by a factor of 16. For 115,200 baud, this means only 7,200 interrupts/second. For receive data interrupts, the processing is similar to transmit interrupts. The main difference is that the number of bytes in the FIFO before generating an interrupt can be set. When the trigger level is reached, a recieve data interrupt is generated, but any other data received is put in the FIFO. The receive data interrupt is not cleared until the number of bytes in the FIFO is below the trigger level.

To added 16550A support to existing code, there are 2 requirements.

1) When reading the IIR to determine the interrupt source, only use the lower 3 bits.

2) After the existing UART initialization code, try to enable the FIFOs by writing to the FCR. (A value of C7 hex will enable FIFO mode, clear both FIFOs, and set the receive trigger level at 14 bytes) Next, read the IIR. If Bit 6 of the IIR is not set, the UART is not a 16550A, so write 0 to the FCR to disable FIFO mode.

Upgrading to a 16550A from an existing 8250, 16450, or 16550

This information is not for the hardware-squeemish. Like all other hardware modifications, if you don't know what you are doing, get help and/or have someone do it for you. Desoldering a 40 pin chip (or worse) is not for beginners.

The 16550A is pin-for-pin compatabile with the other chips except pin 24 and pin 29. Pin 24 is an output on the old chips, and pin 29 was not connected. Pin 24 and Pin 29 are now output pins used for DMA mode. Thus, there should be no problem just removing the old chips and inserting the new one. I have done this on about a dozen boards with no problem.

Scott C. Sadow scott@mycro.UUCP ...gatech!nanovx!mycro!scott

------------------------------

From news-service Sat May 23 05:31:58 1992 To: subscribers

From: bweaver@quack.sac.ca.us (Brian Weaver) Newsgroups: comp.sys.ibm.pc.hardware,comp.sys.ibm.pc.misc,comp.sys.ibm.pc.programmer Subject: [News] Re: UART information: 8250 vs

Если Вам нужна помощь с академической работой (курсовая, контрольная, диплом, реферат и т.д.), обратитесь к нашим специалистам. Более 90000 специалистов готовы Вам помочь.
Бесплатные корректировки и доработки. Бесплатная оценка стоимости работы.

Поможем написать работу на аналогичную тему

Получить выполненную работу или консультацию специалиста по вашему учебному проекту
Нужна помощь в написании работы?
Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Пишем статьи РИНЦ, ВАК, Scopus. Помогаем в публикации. Правки вносим бесплатно.

Похожие рефераты: