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_57
Code example
    /* AT86RF212::BUSY_TX */
    /* TRX_IRQ_TRX_END occurs here */
    /* AT86RF212::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 always 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_58
Code example
    /* AT86RF212::BUSY_TX_ARET */
    /* TRX_IRQ_TRX_END occurs here */
    /* AT86RF212::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 the frame length value in the PHR field is larger than 0.

inline_mscgraph_59
Code example
    /* AT86RF212::[RX_ACTIVE] */
    /* TRX_IRQ_RX_START occurs here */
    /* AT86RF212::[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 6.2 (Frame Filter) of the AT86RF212 datasheet.

inline_mscgraph_60
Code example
    /* AT86RF212::[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_61
Code example
    /* AT86RF212::BUSY_RX */
    /* TRX_IRQ_TRX_END occurs here */
    /* MCU::ISR && AT86RF212::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_62
Code example
    /* AT86RF212::BUSY_RX_AACK */
    /* TRX_IRQ_TRX_END occurs here */
    /* MCU::ISR && AT86RF212::RX_AACK_ON */
    cause = trx_reg_read(RG_IRQ_STATUS);
    /* MCU::ISR_RXAACKEND */

Generated on Mon Aug 17 13:35:00 2009 for SWPM AT86RF212 by  doxygen 1.5.6