3.4.1 What Can Cause Glitches on Output Ports?
In most cases, this is caused by using ordinary variables to access port
bits or the entire port itself. These variables should be qualified
volatile
.
The value stored in a variable mapped over a port (hence the actual
value written to the port) directly translates to an electrical signal. It is vital that
the values held by these variables only change when the code intends them to and that
they change from their current state to their new value in a single transition (see
5.3.8.2 Volatile Type Qualifier). The
compiler attempts to write to volatile
variables in one operation.