PLL Interrupts

The radio transceiver provides the two interrupts TRX_IRQ_PLL_LOCK and TRX_IRQ_PLL_UNLOCK which indicate locking and unlocking events of the PLL, respectively. The behaviour of these interrupts is described in detail in the section section 9.7.5 (PLL Interrupt Handling) of the AT86RF231 datasheet and in section PLL Handling. Because the interrupts depend on each other, it is recommended to enable both of them in order to get notified about the most recent PLL event, that happened.

Note:
A consecutive TRX_IRQ_PLL_LOCK interrupt clears a preceding TRX_IRQ_PLL_UNLOCK interrupt and vice versa.
Use Cases:


PHY_EVENT_PLL_LOCK

If the TRX_IRQ_PLL_LOCK interrupt occurs in one of the [PLL_ACTIVE] states, the PLL has locked and a transmission or reception of frames is possible.

inline_mscgraph_47
Code example
    /* AT86RF231::[PLL_ACTIVE] */
    /* TRX_IRQ_PLL_LOCK occurs here */
    /* MCU::ISR */
    cause = trx_reg_read(RG_IRQ_STATUS);
    /* MCU::ISR_PLL_LOCK */

PHY_EVENT_PLL_UNLOCK

The TRX_IRQ_PLL_UNLOCK interrupt indicates that the PLL has unlocked and is not able to generate the desired frequency. Unless followed by an TRX_IRQ_PLL_LOCK interrupt within tLockCrit, this is a critical error (see PHY_UNLOCK_PLL). In this case, the radio transceiver is neither able to receive nor to transmit.

A consecutive TRX_IRQ_PLL_LOCK interrupt clears a preceding TRX_IRQ_PLL_UNLOCK interrupt.

inline_mscgraph_48
Code example
    /* AT86RF231::[PLL_ACTIVE] */
    /* TRX_IRQ_PLL_UNLOCK occurs here */
    /* MCU::ISR */
    cause = trx_reg_read(RG_IRQ_STATUS);
    /* MCU::ISR_PLL_UNLOCK */

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