From: Atis E. <ati...@gm...> - 2014-08-22 13:49:14
|
"REG(SSI_CR1_SSE) = 0;" is stiil wrong. Other than this line, the code you show looks like the correct way how to the SSI component in slave mode. It obviously does not disable it. 1) Are you sure that just enabling slave mode should decrease the energy consumption? 2) When you measure the consumption after the component is disabled by clearing CR1 and is left disabled - is it lower then? I cannot really comment on design decisions of the authors of spi_disable implementation for cc2538. On Fri, Aug 22, 2014 at 3:04 PM, gajan yogahn <gy...@gm...> wrote: > Hi, > sorry to have forgetting, i've made lots of test. > I've read the TI documentation, but i dont understand why clearing the SSI > "synchronous serial port enable" before activate slave mode. > In more, I thought that Contiki managed automatically activate/desactivate > SPI. Today the spi_disable function in the file spi.c doesnt disable the > SPI. > > I have made a new test with this code, and the consumption is uniform. I > think that i made a mistake. > > > /* ------------------------- desactivate SPI : function test ----------- */ > void spi_dse() > { > //first: Disable SSI peripheral > REG(SSI0_BASE + SSI_CR1) = 0; > > //Configure SSI OPtions > REG(SSI0_BASE + SSI_CR0) = SSI_CR0_SPH | SSI_CR0_SPO | > SSI_CR0_FRF_MOTOROLA | (8 - 1); > > //Enable Slave mode > REG(SSI0_BASE + SSI_CR1) |= SSI_CR1_MS; > > //disable SSI Operation > REG(SSI_CR1_SSE) = 0; > > //Re enable SSI > REG(SSI0_BASE + SSI_CR1) |= SSI_CR1_SSE; > > } > > Regards > Gajan > > > > 2014-08-22 13:40 GMT+02:00 Atis Elsts <ati...@gm...>: > > The code that's not commented out is wrong. >> >> Instead, the first line of your spi_dse() function shows how to clear the >> CR1 control register: >> >> REG(SSI0_BASE + SSI_CR1) = 0; >> >> And the last line of that function shows how to set the SSE bit: >> >> REG(SSI0_BASE + SSI_CR1) |= SSI_CR1_SSE; >> >> To enable slave mode: >> REG(SSI0_BASE + SSI_CR1) |= SSI_CR1_MS; >> >> Also, not sure if 100% required, but it's safer to ensure the component >> is disabled when changing any of these bits. >> >> Read TI cc2538 user's guide for explanation about the contents SSI >> registers: >> http://www.ti.com/lit/pdf/swru319 >> >> >> On Fri, Aug 22, 2014 at 1:02 PM, gajan yogahn <gy...@gm...> wrote: >> >>> Hi, >>> I try to cleared SSI CR1 SSE. But for cleared, you change the value in >>> Register or you use another method. >>> >>> This is my new test code : >>> >>> void spi_dse() >>> { >>> //first: Disable SSI peripheral >>> REG(SSI0_BASE + SSI_CR1) = 0; >>> >>> REG(SSI_CR1_MS) = 1; >>> REG(SSI_CR1_SSE) = 0; >>> >>> //configure SSI options >>> /* Configure the SSI options */ >>> //REG(SSI0_BASE + SSI_CR0) = SSI_CR0_SPH | SSI_CR0_SPO | >>> SSI_CR0_FRF_TI | (8 - 1); >>> >>> //mode slave >>> //REG(SSI_CR1_SOD) = 1; >>> >>> /* Re-enable the SSI */ >>> //REG(SSI0_BASE + SSI_CR1) |= SSI_CR1_SSE; >>> >>> } >>> >>> Consumption energy dont change. >>> >>> thanks for help >>> >>> Best regards >>> Gajan >>> >>> >>> 2014-08-22 11:23 GMT+02:00 Atis Elsts <ati...@gm...>: >>> >>>> Hi, >>>> >>>> you should set SSI_CR1_MS flag to enable slave mode. >>>> >>>> As for energy consumption - does it change when the SPI modeule is >>>> completly disabled (i.e. when SSI_CR1_SSE is cleared)? >>>> >>>> >>>> Also, be aware the code that you place before PROCESS_BEGIN(); will be >>>> executed *every* time when the protothread is scheduled. To execute code >>>> just once, when the process is started, place it after PROCESS_BEGIN(). >>>> >>>> >>>> >>>> On Fri, Aug 22, 2014 at 10:53 AM, gajan yogahn <gy...@gm...> >>>> wrote: >>>> >>>>> I have a problem with SPI configuration. I would like configure SPI in >>>>> slave mode because i want reduce the power consomation. >>>>> >>>>> Therefore, i search in file spi.c différents functions for this. >>>>> >>>>> So i have create a test code in spi.c >>>>> >>>>> void spi_set_mode_slave() >>>>> { >>>>> //first: Disable SSI peripheral >>>>> REG(SSI0_BASE + SSI_CR1) = 0; >>>>> >>>>> >>>>> //configure SSI options >>>>> /* Configure the SSI options */ >>>>> REG(SSI0_BASE + SSI_CR0) = SSI_CR0_SPH | SSI_CR0_SPO | >>>>> SSI_CR0_FRF_TI | (8 - 1); >>>>> >>>>> //mode slave >>>>> REG(SSI_CR1_SOD) = 1; >>>>> >>>>> /* Re-enable the SSI */ >>>>> REG(SSI0_BASE + SSI_CR1) |= SSI_CR1_SSE; >>>>> >>>>> } >>>>> >>>>> and i call this function in my process thread before process begin : >>>>> >>>>> PROCESS_THREAD(cc2538_demo_process, ev, data) >>>>> { >>>>> spi_init(); >>>>> spi_set_mode_slave(); >>>>> leds_on(LEDS_BLUE); >>>>> spi_disable(); >>>>> PROCESS_BEGIN(); >>>>> >>>>> >>>>> PROCESS_END(); >>>>> ....... >>>>> >>>>> >>>>> But i think that this code isn't correct. When i make power >>>>> consomation measurement, i don't see diffrence. >>>>> logically, if the spi is desactivate or disable i should see a >>>>> difference of 300 uA. >>>>> >>>>> Thanks for help >>>>> >>>>> Regards >>>>> Gajan. >>>>> >>>>> >>>>> ------------------------------------------------------------------------------ >>>>> Slashdot TV. >>>>> Video for Nerds. Stuff that matters. >>>>> http://tv.slashdot.org/ >>>>> _______________________________________________ >>>>> Contiki-developers mailing list >>>>> Con...@li... >>>>> https://lists.sourceforge.net/lists/listinfo/contiki-developers >>>>> >>>>> >>>> >>>> >>>> ------------------------------------------------------------------------------ >>>> Slashdot TV. >>>> Video for Nerds. Stuff that matters. >>>> http://tv.slashdot.org/ >>>> _______________________________________________ >>>> Contiki-developers mailing list >>>> Con...@li... >>>> https://lists.sourceforge.net/lists/listinfo/contiki-developers >>>> >>>> >>> >>> >>> ------------------------------------------------------------------------------ >>> Slashdot TV. >>> Video for Nerds. Stuff that matters. >>> http://tv.slashdot.org/ >>> _______________________________________________ >>> Contiki-developers mailing list >>> Con...@li... >>> https://lists.sourceforge.net/lists/listinfo/contiki-developers >>> >>> >> >> >> ------------------------------------------------------------------------------ >> Slashdot TV. >> Video for Nerds. Stuff that matters. >> http://tv.slashdot.org/ >> _______________________________________________ >> Contiki-developers mailing list >> Con...@li... >> https://lists.sourceforge.net/lists/listinfo/contiki-developers >> >> > > > ------------------------------------------------------------------------------ > Slashdot TV. > Video for Nerds. Stuff that matters. > http://tv.slashdot.org/ > _______________________________________________ > Contiki-developers mailing list > Con...@li... > https://lists.sourceforge.net/lists/listinfo/contiki-developers > > |