Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
AVR / datasheets / AT90USB82_162.pdf
Скачиваний:
45
Добавлен:
20.03.2015
Размер:
2.88 Mб
Скачать

 

 

 

 

 

 

 

 

 

 

 

 

 

If the endpoint uses 2 banks, the second one can be read by the HOST while the current is

 

being written by the CPU. Then, when the CPU clears FIFOCON, the next bank may be already

 

ready (free) and TXINI is set immediately.

Abort

An “abort” stage can be produced by the host in some situations:

 

• In a control transaction: ZLP data OUT received during a IN stage,

 

• In an isochronous IN transaction: ZLP data OUT received on the OUT endpoint during a IN

 

stage on the IN endpoint

 

• ...

 

The KILLBK bit is used to kill the last “written” bank. The best way to manage this abort is to per-

 

form the following operations:

 

Table 18. Abort flow

Endpoint

 

 

Abort

 

 

Clear

 

 

UEIENX.

 

 

TXINE

 

 

NBUSYBK

No

 

=0

 

 

Yes

 

 

Endpoint

 

KILLBK=1

reset

 

 

 

 

Yes

KILLBK=1

 

 

 

 

No

Disable the TXINI interrupt.

Abort is based on the fact that no banks are busy, meaning that nothing has to be sent.

Kill the last written bank.

Wait for the end of the procedure.

 

 

Abort done

Isochronous mode

 

Underflow

An underflow can occur during IN stage if the host attempts to read a bank which is empty. In

 

 

this situation, the UNDERFI interrupt is triggered.

 

 

An underflow can also occur during OUT stage if the host send a packet while the banks are

 

 

already full. Typically, he CPU is not fast enough. The packet is lost.

 

 

It is not possible to have underflow error during OUT stage, in the CPU side, since the CPU

 

 

should read only if the bank is ready to give data (RXOUTI=1 or RWAL=1)

CRC Error

A CRC error can occur during OUT stage if the USB controller detects a bad received packet. In

 

 

this situation, the STALLEDI interrupt is triggered. This does not prevent the RXOUTI interrupt

 

 

from being triggered.

Overflow

In Control, Isochronous, Bulk or Interrupt Endpoint, an overflow can occur during OUT stage, if

 

 

the host attempts to write in a bank that is too small for the packet. In this situation, the OVERFI

 

 

interrupt is triggered (if enabled). The packet is hacknowledged and the RXOUTI interrupt is also

 

 

triggered (if enabled). The bank is filled with the first bytes of the packet.

200

 

 

 

 

7707A–AVR–01/07

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

It is not possible to have overflow error during IN stage, in the CPU side, since the CPU should

 

 

 

 

write only if the bank is ready to access data (TXINI=1 or RWAL=1).

 

Interrupts

The next figure shows all the interrupts sources:

 

 

 

Figure 86. USB Device Controller Interrupt System

 

 

 

 

 

 

 

 

 

 

 

UPRSMI

 

 

 

 

 

 

 

 

 

 

 

 

UDINT.6

UPRSME

 

 

 

 

 

 

 

 

 

 

UDIEN.6

 

 

 

 

EORSMI

 

 

 

 

 

 

 

 

 

 

 

UDINT.5

EORSME

 

 

 

 

 

 

 

 

 

 

UDIEN.5

 

 

 

 

WAKEUPI

 

 

 

 

 

 

 

 

 

 

 

UDINT.4

WAKEUPE

USB Device

 

 

 

 

 

 

 

 

UDIEN.4

Interrupt

EORSTI

UDINT.3

EORSTE

UDIEN.3

SOFI

UDINT.2

SOFE

UDIEN.2

SUSPI

UDINT.0

SUSPE

UDIEN.0

There are 2 kind of interrupts: processing (i.e. their generation are part of the normal processing) and exception (errors).

Processing interrupts are generated when:

Upstream resume

(UPRSMI)

End of resume

(EORSMI)

Wake up

(WAKEUPI)

• End of reset (Speed Initialization)

(EORSTI)

Start of frame

(SOFI, if FNCERR=0)

• Suspend detected after 3 ms of inactivity

(SUSPI)

Exception Interrupts are generated when:

 

• CRC error in frame number of SOF

(SOFI, FNCERR=1)

201

7707A–AVR–01/07

Соседние файлы в папке datasheets