This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Problem with Oscillator Disable on C5509A

I am trying to reduce the power consumption of a C5509A processor by disabling the internal oscillator.  I have followed the procedure in SPRA078d, "Disabling the Internal Oscillator on the VC5503/C5506/C5507/C5509/C5509A DSP", yet when I examine the CLKOUT pin, it still shows oscillation, and the code is still executing.  I know this because it toggles a GPIO pin periodically.


What could I be doing wrong?


Because I've read that the emulator cannot  be connected to idle the processor, the code boots from an I2C EEPROM.


I am not using USB in the application, but it must be set up to idle the internal oscillator.  My crystal is not a multiple of 48 MHz, however; the closest I can come is 49 MHz.  I assume this is adequate for this purpose? 

 

SPRA078d mentions example code which demonstrates the shutdown function.  Does anyone know where I might find it?

 

  • Hi,

    You did not show any code and how I can find out what you did.

    Here is example idle3:

    ;**********************************************************************************

    ;

    ; File Name    : idle3.asm

    ; Project      : C5509a Power Test Program Suite

    ; Author       : C5000 H/W Applications

    ; Version      : 1.0

    ; Date         : 24 Septemer 2001

    ; Update       : Updated for 5509 - December 2002

    ;                : Updated for 5509a- July 2003

    ;

    ; Desc :     

    ;         

    ;         

    ;         

    ;

    ;**********************************************************************************

                .mmregs

     

     

                .include "power_test_macros.asm"           ; macros

                ;.include "5509_init.asm"                  ; initialization

                ;.include "sin.asm"

     

                .include "c5509a_periph_regs.h" 

     

                .def MAIN         

     

                .C54CM_off

                .CPL_off

                .ARMS_off

     

                .text

     

    MAIN:

      ;Enable_DPLL_x17

           nop

           nop

           nop

           nop

           nop

           nop

           nop

           nop

           nop

           nop

     

     

     

           ;ICR       = 0x003F; // EMIF=1, PERIPH=1, and DMA=1 , CLK domain = 1 and CPU =1

           MOV #3Fh, port(#ICR) ; Write 1b to BIT3 in ICR

           IDLE   ;    idle EMIF, PERIPH, DMA, OSC, and CPU

           nop

           nop

           nop

           nop

           nop

           nop   ;    <== by now device is in idle3

     

    loop

           bclr   xf     ; xf will toggle if CPU not idling

           nop

           nop

           bset   xf

           b      loop

    Regards,

    Hyun

  • Hyun,


    Thank you.  This example is perfect, in that it gets right down to the issue in question.  However, it doesn't work on my board.  I built a project where this assembly file is the only code in the system; I set MAIN as the entry point.  I then programmed it into the I2C EEPROM.  It boots, and toggles XF just fine, but does not IDLE.

     I assume that means that some aspect of my hardware configuration is preventing IDLE.  I don't have a battery for the RTC (its on order), could that be part of the problem?  The USB PU, DN, and DP pins are all pulled low.  GPIO0 is pulled low.  My crystal frequency is 7 MHz.


    Regards,

    Bill