Transmit and Receive Interrupts

Three different interrupt causes indicate the stages of the receive and transmit process:

Note:
In order to activate those interrupts, RG_IRQ_MASK has to be configured accordingly, as described in IRQ Mask Configuration.


PHY_EVENT_TRX_END__BUSY_TX

The end of a Frame Transmit Procedure (TX) in Basic Operating Mode is signaled by the interrupt TRX_IRQ_TRX_END. After the interrupt has occured, the radio transceiver changes its state per default to PLL_ON or to one of the [CMD] states, if requested during the state BUSY_TX (see section State Changes).

inline_mscgraph_49
Code example
    /* AT86RF231::BUSY_TX */
    /* TRX_IRQ_TRX_END occurs here */
    /* AT86RF231::PLL_ON && MCU::ISR */
    cause = trx_reg_read(RG_IRQ_STATUS);
    /* MCU::ISR_TXEND */

PHY_EVENT_TRX_END__BUSY_TX_ARET

A transmission in the Extended Operating Mode includes automatic CSMA-CA, one or more frame retransmissions if needed and the processing of a received acknowledgment frame, if it was requested in the frame sent.

The end of a TX_ARET transaction is signaled with the interrupt TRX_IRQ_TRX_END. In order to obtain the outcome of the transaction, the sub register SR_TRAC_STATUS needs to be read and evaluated as described in PHY_DATA_REQUEST_TX_ARET. After the interrupt has occured, the radio transceiver changes its state per default to TX_ARET_ON or to one of the [CMD] states, if requested during state BUSY_TX_ARET (see section State Changes).

inline_mscgraph_50
Code example
    /* AT86RF231::BUSY_TX_ARET */
    /* TRX_IRQ_TRX_END occurs here */
    /* AT86RF231::TX_ARET_ON && MCU::ISR */
    cause = trx_reg_read(RG_IRQ_STATUS);
    tracstat = trx_bit_read(SR_TRAC_STATUS);
    /* MCU::ISR_TXARETEND */

PHY_EVENT_RX_START

The interrupt TRX_IRQ_RX_START signals that the radio transceiver has received a valid SHR and a value of the frame length field larger than 0.

inline_mscgraph_51
Code example
    /* AT86RF231::[RX_ACTIVE] */
    /* TRX_IRQ_RX_START occurs here */
    /* AT86RF231::[RX_BUSY] && MCU::ISR */
    cause = trx_reg_read(RG_IRQ_STATUS);
    /* MCU::ISR_RXSTART */

PHY_EVENT_AMI

A TRX_IRQ_AMI interrupt is issued, if the addressing field of the incoming frame matches the node's address according to the filter rules described in section 7.2.3.5 (Frame Filter) of the AT86RF231 datasheet.

inline_mscgraph_52
Code example
    /* AT86RF231::[RX_BUSY] */
    /* TRX_IRQ_AMI occurs here */
    /* MCU::ISR */
    cause = trx_reg_read(RG_IRQ_STATUS);
    /* MCU::ISR_AMI */

PHY_EVENT_TRX_END__BUSY_RX

The interrupt TRX_IRQ_TRX_END occurs at the end of a Frame Receive Procedure (RX) in Basic Operating Mode. After the interrupt has occured, the radio transceiver changes its state per default to RX_ON or to one of the [CMD] states, if requested during the state BUSY_RX (see section State Changes).

inline_mscgraph_53
Code example
    /* AT86RF231::BUSY_RX */
    /* TRX_IRQ_TRX_END occurs here */
    /* MCU::ISR && AT86RF231::RX_ON */
    cause = trx_reg_read(RG_IRQ_STATUS);
    /* MCU::ISR_RXEND */

PHY_EVENT_TRX_END__BUSY_RX_AACK

The end of a frame reception in Extended Operating Mode (RX_AACK) is only signaled with the interrupt TRX_IRQ_TRX_END, if the received frame matches the settings in the address filter and has a valid FCS. After the interrupt has occured, the radio transceiver changes its state per default to RX_AACK_ON or to one of the [CMD] states, if requested during the state BUSY_RX_AACK (see section State Changes).

The behavior of an RX_AACK transaction for a node in slotted operation is described in PHY_DATA_INDICATION_RX_AACK_SLOTTED.

inline_mscgraph_54
Code example
    /* AT86RF231::BUSY_RX_AACK */
    /* TRX_IRQ_TRX_END occurs here */
    /* MCU::ISR && AT86RF231::RX_AACK_ON */
    cause = trx_reg_read(RG_IRQ_STATUS);
    /* MCU::ISR_RXAACKEND */

Generated on Mon Jan 12 18:32:17 2009 for SWPM AT86RF231 by  doxygen 1.5.2