This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Prefetch Abort (PAbt) after Entering Idle (Help!)

Part: LPC222x

Hi,

I am experiencing a Prefetch Abort after entering Idle mode via setting the IDL bit in PCON.

Where I normally would run this:

StartTimerInterrupts();

while (1)
{
 // Check If Timers Have Set Variables, Do Stuff
 DoWorkloop();
}

I am trying to do this:

StartTimerInterrupts();

while (1)
{
 // Check If Timers Have Set Variables, Do Stuff
 DoWorkloop();

 // Sleep Until Timers Wake Me Up
 PCON |= 0x01;
}

I experience a Prefetch Abort and now am stuck as to how to debug this.

Please see my registers here:

ieee.usask.ca/.../Registers.png
ieee.usask.ca/.../Registers-2.png

Thanks!
-Chris

IDE-Version:
µVision3 V3.31
Copyright (c) Keil Elektronik GmbH / Keil Software, Inc. 1995 - 2006

Tool Version Numbers:
Toolchain Path: BIN30\
C Compiler: ARMCC.Exe
Assembler: ARMASM.Exe
Linker/Locator: ARMLINK.Exe
Librarian: ARMAR.Exe
Hex Converter: FROMELF.Exe
CPU DLL: SARM.DLL V1.51
Dialog DLL: DARMP.DLL V1.11e
Target DLL: BIN\UL2ARM.DLL V1.17
Dialog DLL: TARMP.DLL V1.10

Parents
  •  // Sleep Until Timers Wake Me Up
    
     PCON |= 0x01;
    

    Check what you are actually writing here in this read-modify-write operation.

    Values read from undefined bits in PCON are undefined. The datasheet says that you should not write one to undefined bits which you quite possibly have just done.

    Fix that first and see if it helps.

Reply
  •  // Sleep Until Timers Wake Me Up
    
     PCON |= 0x01;
    

    Check what you are actually writing here in this read-modify-write operation.

    Values read from undefined bits in PCON are undefined. The datasheet says that you should not write one to undefined bits which you quite possibly have just done.

    Fix that first and see if it helps.

Children