30.5.12 I/O Lines Programming Example

The programming example shown in the following table is used to obtain the following configuration:

  • 4-bit output port on I/O lines 0 to 3 (should be written in a single write operation), open-drain, with pullup resistor
  • Four output signals on I/O lines 4 to 7 (to drive LEDs for example), driven high and low, no pullup resistor, no pulldown resistor
  • Four input signals on I/O lines 8 to 11 (to read push-button states for example), with pullup resistors, glitch filters and input change interrupts
  • Four input signals on I/O line 12 to 15 to read an external device status (polled, thus no input change interrupt), no pullup resistor, no glitch filter
  • I/O lines 16 to 19 assigned to peripheral A functions with pullup resistor
  • I/O lines 20 to 23 assigned to peripheral B functions with pulldown resistor
  • I/O lines 24 to 27 assigned to peripheral C with input change interrupt, no pullup resistor and no pulldown resistor
  • I/O lines 28 to 31 assigned to peripheral D, no pullup resistor and no pulldown resistor
    Table 30-2. Programming Example
    Register Value to be Written
    PIO_PER 0x0000_FFFF
    PIO_PDR 0xFFFF_0000
    PIO_OER 0x0000_00FF
    PIO_ODR 0xFFFF_FF00
    PIO_IFER 0x0000_0F00
    PIO_IFDR 0xFFFF_F0FF
    PIO_SODR 0x0000_0000
    PIO_CODR 0x0FFF_FFFF
    PIO_IER 0x0F00_0F00
    PIO_IDR 0xF0FF_F0FF
    PIO_MDER 0x0000_000F
    PIO_MDDR 0xFFFF_FFF0
    PIO_PUDR 0xFFF0_00F0
    PIO_PUER 0x000F_FF0F
    PIO_PPDDR 0xFF0F_FFFF
    PIO_PPDER 0x00F0_0000
    PIO_ABCDSR1 0xF0F0_0000
    PIO_ABCDSR2 0xFF00_0000
    PIO_OWER 0x0000_000F
    PIO_OWDR 0x0FFF_FFF0