# Vault 7: Projects

This publication series is about specific projects related to the Vault 7 main publication.

### Protego

# PIC24FJ64GA004

- 1
- 2
…
- 159
- 160
- 161
- 162
- 163
…
- 277
- 278

 2010-2013 Microchip Technology Inc. DS39881E-page 161
PIC24FJ64GA004 FAMILY
17.2 Transmitting in 8-Bit Data Mode
1. Set up the UARTx:
a) Write appropriate values for data, parity and
Stop bits.
b) Write appropriate baud rate value to the
UxBRG register.
c) Set up transmit and receive interrupt enable
and priority bits.
2. Enable the UARTx.
3. Set the UTXEN bit (causes a transmit interrupt
2 cycles after being set).
4. Write data byte to lower byte of UxTXREG word.
The value will be immediately transferred to the
Transmit Shift Register (TSR) and the serial bit
stream will start shifting out with the next rising
edge of the baud clock.
5. Alternately, the data byte may be transferred
while UTXEN = 0 and then the user may set
UTXEN. This will cause the serial bit stream to
begin immediately because the baud clock will
start from a cleared state.
6. A transmit interrupt will be generated as per
interrupt control bits, UTXISEL<1:0>.
17.3 Transmitting in 9-Bit Data Mode
1. Set up the UARTx (as described in Section 17.2
“Transmitting in 8-Bit Data Mode”).
2. Enable the UARTx.
3. Set the UTXEN bit (causes a transmit interrupt
2 cycles after being set).
4. Write UxTXREG as a 16-bit value only.
5. A word write to UxTXREG triggers the transfer
of the 9-bit data to the TSR. The serial bit stream
will start shifting out with the first rising edge of
the baud clock.
6. A transmit interrupt will be generated as per the
setting of control bits, UTXISEL<1:0>.
17.4 Break and Sync Transmit
Sequence
The following sequence will send a message frame
header made up of a Break, followed by an auto-baud
Sync byte.
1. Configure the UARTx for the desired mode.
2. Set UTXEN and UTXBRK  sets up the Break
character.
3. Load the UxTXREG with a dummy character to
initiate transmission (value is ignored).
4. Write 55h to UxTXREG  loads the Sync
character into the transmit FIFO.
5. After the Break has been sent, the UTXBRK bit
is reset by hardware. The Sync character now
transmits.
17.5 Receiving in 8-Bit or 9-Bit Data
Mode
1. Set up the UARTx (as described in Section 17.2
“Transmitting in 8-Bit Data Mode”).
2. Enable the UARTx.
3. A receive interrupt will be generated when one
or more data characters have been received as
per interrupt control bits, URXISEL<1:0>.
4. Read the OERR bit to determine if an overrun
error has occurred. The OERR bit must be reset
in software.
5. Read UxRXREG.
The act of reading the UxRXREG character will move
the next character to the top of the receive FIFO,
including a new set of PERR and FERR values.
17.6 Operation of UxCTS and UxRTS
Control Pins
UARTx Clear-to-Send (UxCTS) and Request-to-Send
(Ux
RTS) are the two hardware-controlled pins that are
associated with the UARTx module. These two pins
allow the UARTx to operate in Simplex and Flow
Control mode. They are implemented to control the
transmission and reception between the Data Terminal
Equipment (DTE). The UEN<1:0> bits in the UxMODE
register configure these pins.
17.7 Infrared Support
The UARTx module provides two types of infrared
UART support: one is the IrDA clock output to support
external IrDA encoder and decoder device (legacy
module support), and the other is the full implementa-
tion of the IrDA encoder and decoder. Note that
because the IrDA modes require a 16x baud clock, they
will only work when the BRGH bit (UxMODE<3>) is 0.
17.7.1 EXTERNAL IrDA SUPPORT  IrDA
CLOCK OUTPUT
To support external IrDA encoder and decoder devices,
the BCLKx pin (same as the Ux
RTS pin) can be
configured to generate the 16x baud clock. With
UEN<1:0> = 11, the BCLKx pin will output the 16x
baud clock if the UARTx module is enabled. It can be
used to support the IrDA codec chip.
17.7.2 BUILT-IN IrDA ENCODER AND
DECODER
The UARTx has full implementation of the IrDA
encoder and decoder as part of the UARTx module.
The built-in IrDA encoder and decoder functionality is
enabled using the IREN bit (UxMODE<12>). When
enabled (IREN = 1), the receive pin (UxRX) acts as the
input from the infrared receiver. The transmit pin
(UxTX) acts as the output to the infrared transmitter.

- 1
- 2
…
- 159
- 160
- 161
- 162
- 163
…
- 277
- 278