From: gajan y. <gy...@gm...> - 2014-08-22 13:04:11
|
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 > > |