IP2022 Data Sheet www.ubicom.com 25 3.8.1 Brown-Out Detector The on-chip brown-out detection circuitry resets the CPU
when   AVdd  dips   below   the   brown-out   voltage   level
programmed in  the  BOR2:0 bits  of the FUSE1  register.
Bits in the FUSE1 register are flash memory cells which
cannot     be     changed     dynamically     during     program
execution.
The device is held in reset as long as AVdd stays below
the  brown-out  voltage.  The  CPU  will  come  out  of  reset
when  AVdd  rises  100mV  above  the  brown-out  voltage.
The   brown-out   level   can   be   programmed   using   the
BOR2:0 bits in the FUSE register, as shown in Table 3-6.
3.8.2 Reset and Interrupt Vectors After reset, the PC is loaded with 0xFFF0, which is near
the top of the program memory space. Typical activities
for the reset initialization code include:
Setting up the FCFG register with appropriate values
for flash timing compensation.
Issuing a speed instruction to initialize the CPU core
clock speed.
Checking for the cause of reset (brown-out voltage,
watchdog timer overflow, or other cause). In some ap-
plications, a “warm” reset allows some data initializa-
tion procedures to be skipped.
Copying  speed-critical  sections  of  code  from  flash
memory to program RAM.
Setting  up  data  memory  structures  (stacks,  tables,
etc.).
Initializing peripherals for operation (timers, etc.). Initializing the dynamic interrupt vector and enabling
interrupts.
Because the default interrupt vector location is 0, which is
in program RAM, interrupts should not be enabled until
the ISR is loaded in shadow RAM or the dynamic interrupt
vector  is  loaded  with  the  address  of  an  ISR  in  flash
memory. There is a single dynamic interrupt vector shared
by all interrupts. The interrupt vector can be changed by
loading  the  INTVECH  and  INTVECL  registers,  or  by
issuing a reti instruction with an option specifying that
the interrupt vector should be updated with the current PC
value.
3.8.3 Register States Following Reset The effect of different reset sources on a register depends
on  the  register  and  the  type  of  reset  operation.  Some
registers are initialized to specific  values, some  are left
unchanged, and some are undefined.
A  register  that  starts  with  an  unknown  value  should  be
initialized by the software to a known value if it is going to
be used (no need to initialize unused data memory). Do
not simply test the initial state and rely on it starting in that
state   consistently.   See   Table   7-1   for   more   detailed
information.
Table 3-6  Brown-Out Voltage Levels BOR2:0 Voltage ± 0.1V 000 2.30V 001 2.25V 010 2.20V 011 2.15V 100 2.10V 101 2.05V 110 2.00V 111 Disabled