Microchip® Advanced Software Framework

 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages

This is the self-test for CPU registers.

Functions

bool classb_register_test (void)
 CPU register self-diagnostic routine for AVR GCC. More...
 

bool classb_register_test ( void  )

CPU register self-diagnostic routine for AVR GCC.

This function tests the CPU registers, preserving those registers specified in the AVR GCC compiler documentation. Note that if there should be a fault in a register that needs preservation, its value would not be restored.

Registers are tested in this order:

  1. Critical registers
    1. Return value register: R24
    2. stack pointer: SPL/SPH
    3. register file: R31 – R30
  2. Non-critical registers
    1. register file: R29 – R25, R23 – R0
    2. extended addressing registers: RAMPD/X/Y/Z, EIND
    3. status register: SREG (except interrupt flag)
Return values
falseNo register fault detected.
trueRegister fault detected.
Note
Interrupts must be disabled during this test.

References ASSEMBLY, CLASSB_ERROR_CRIT, CLASSB_ERROR_HANDLER_REGISTERS, CLASSB_ERROR_NON_CRIT, CLASSB_RegRestore_IO, CLASSB_RegRestore_R, CLASSB_RegSet_IO, CLASSB_RegSet_R_HI, CLASSB_RegSet_R_LO, CLASSB_RegStore_IO, CLASSB_RegStore_R, CLASSB_RegTest_IO, CLASSB_RegTest_R_HI, and CLASSB_RegTest_R_LO.

Referenced by oven_classb_run_tests(), and ovenctl_periodic_classb_tests().