1 2 Previous Next 28 Replies Latest reply on Jul 19, 2012 1:06 PM by glenn.yeager

    _Sleep()

    glenn.yeager

      Alright, I'm still having a hard time trying to reduce power consumption for my program as nothing seems to work how I expect it. I have dropped trying to put the entire device into sleep and I am first going to just stop certain components when I don't need them running. To do this I am using a timer that hits its terminal count every 8 ms, this feeds a counter which will then trigger an interrupt every 128 ms. I use this trigger as a psuedo sleep mode in that when its triggered it alternates a flag, when this flag is high certain parts of my system are on, when it is low everything is off.

         

      The problem I am having is that none of my components seem to like to be put to sleep and woken up as they no longer work. The 128 ms on time for them should be plenty of time, so i don't think that is the problem. If anyone could give my code a look through and tell me what I'm doing wrong I would greatly appreciate it.

        • 1. Re: _Sleep()
          user_14586677

          Just as a FYI, this reference covers sleep operation, partial and complete,

             

          with recomendations on module prep for sleep -

             

           

             

          http://www.mymcu.ru/content/articles/Cypress/AN66083.pdf

             

           

             

          Another thread -

             

           

             

          http://www.psocdeveloper.com/forums/viewtopic.php?f=42&t=7229

             

           

             

          Regards, Dana.

          • 2. Re: _Sleep()
            glenn.yeager

            I have gone through that application note a few times now, also I am no longer putting the device into sleep, just different components. I have found that apparantly IPGAs and PGAs should NOT be put to sleep, just stopped; so any configuration saving has to be done manually. Once I changed that I now get my amplified pulse. 

            • 3. Re: _Sleep()
              glenn.yeager

              Also, the _Stop() should not be called for IPGAs and PGAs so the best way to reduce their power consumption is to change the power option in its configuration.

              • 4. Re: _Sleep()
                glenn.yeager

                Using the info in Appendix B here: http://www.cypress.com/?docID=37054

                   

                I setup my PSoC 3 dev kit so that I could measure its power consumption.

                   

                I am the following code:

                   

                #include <device.h>

                void main()
                {
                    BoostConv_Start();
                   
                    while(1)
                    {

                    }
                }
                 

                   

                In the top design I just have the Boost Converter block configured to operate down to 2.1 V and supply 5 V using a 400 kHz frequency. I have the IMO set at 3 MHz and the PLL set at 24 MHz I then divide down so that the master and BUS clock are both 3 MHz. There are no connections at any of the pins. I am powering the board with 2 D-Cell batteries in series.

                   

                When I measure the current according to the instructions in Appendix B I see that the board draws 36.5 mA

                   

                This seems way to high for having code drives no load, does no computation or anything of the sort. Can anyone explain to me why I am measuring this much current?

                • 5. Re: _Sleep()
                  user_1377889

                  That is even more than the specified 23mA for a PSoC3 running at 66MHz. Are you darn sure that there is not anything drawing current on your board? Which silicon revision are you using? If it is an ES, it may (will) not conform to the specs.

                     

                  I warn you to try to cut off VCC from the chip, because applying a (small) voltage to the unpowered chip could destroy it.

                     

                   

                     

                  Bob

                  • 6. Re: _Sleep()
                    glenn.yeager

                    I am not 100% sure no. I followed the instructions listed above so I know that the RS-232 isn't getting power, nor is R56. Other than that I do not know what is getting power and what isn't, according to those instructions it should be just the PSoC.

                       

                    My PSoC chip does not have an ES number on it, it only reads:

                       

                    CY8C3866AXI-

                       

                    040 1107

                       

                    A  04 608681

                       

                    According to the knowledge base this means it is a production silicon

                    • 7. Re: _Sleep()
                      user_1377889

                      Assuming you've got a kit-030 i cannot see how the USB-chip cy7c68013 is disconnected from power (maybe I've overlooked something. Are you measuring power with the LCD-module plugged off and no USB-Connection? Sorry, dumb question, but is the green led lit??

                         

                       

                         

                      Bob

                      • 8. Re: _Sleep()
                        user_14586677

                        Assuming you are not using the boost circuit you should see attached,

                           

                        so something else is drawing power.

                           

                         

                           

                        Regards, Dana.

                        • 9. Re: _Sleep()
                          user_14586677

                          I must be blind, I see you are using Boost. That being said the

                             

                          efficiency graphs indicate > 50%, so you are still exceeding the

                             

                          2X that implies to the main power specs.

                             

                           

                             

                          Regards, Dana.

                          • 10. Re: _Sleep()
                            glenn.yeager

                            I am using the boost circuit, however in active it should only draw about 200 uA.

                               

                            "The boost typically draws 200 μA in active mode and 12 μA in
                            standby mode."

                               

                            I have the USB unplugged as I'm powering the device using the boost. The LCD module is unplugged.

                               

                            Jumper J10 has been disconnected and I am measuring current from the far right pin of J10 (5 V) to the center pin (GND)

                               

                            The LED (D5) comes on when I make the above connection with the multimeter.

                               

                            You are correct, I am using Cy8CKIT-030, I do not know how to disconnect the USB chip from power either, could this be causing my excessive current draw?

                            • 11. Re: _Sleep()
                              user_1377889

                              When the green LED goes on, it will draw some mA and all devices, be it an R or an USB-chip may be connected to power as well.

                                 

                              I do not want to tell you something wrong, so I suggest you get the schematics of the board (from the CD) and compare (measure) if all is right. In my schematics there is a zero-ohms resistor R9 supplying power to the USB-chip. The alterations on your kit tend to get complicated, there have been some posts regarding a PSoC3 board, but i don't know whether your needed boost circuitry was implemented there

                                 

                               

                                 

                              Bob

                              • 12. Re: _Sleep()
                                glenn.yeager

                                I too have a 0 ohm resistor R9, however I'm hesitant to remove that as in doing so would prevent me from programming to the device. Is there any way I can figure out what all is being powered and with how much current so that I can deduce how much current the PSoC itself requires?

                                • 13. Re: _Sleep()
                                  user_1377889

                                  Yes,

                                     

                                  a) look into the schematic

                                     

                                  b) file a technical case and state that the LED at least is lighted (or lit?)  and that this fact does not confirm to measuring the current the PSoC draws.

                                     

                                   

                                     

                                  Bob

                                  • 14. Re: _Sleep()
                                    user_78878863

                                    @bob: J10, which used as measurement point, separates the VDDA from the 5V (or 3.3V) net. The USB chip is powered by the 3.3V rail, so it is not included in the measurement.

                                       

                                    @ip7: you say you are using the boost converter. Does this mean that you power your circuit via the Vbat test point? Did you load all the components needed for that (R25, R29, R31)? When I read the schematic right, this powers the VDDD and VDDA rails directly (and not via J10). When you then measure the current on J10, you measure then current flowing from the boost converter to the rest of the circuit, including the LED D5 and the USB circuit (I'n not sure how much curent this draws: when connected as USB FS device it needs 35mA, but you said it is not connected. But OTOH the USB chips is prevented from suspend mode by pulling its wakeup pin high)

                                       

                                    So try powering it via USB or 9V battery, and measure the current on J10. This should give you proper results. (and if it doesn, you found a bug in AN77900 - time for some feedback :)

                                    1 2 Previous Next