<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>Sensors中的主题 Re: Spikes on Accelerometer Data</title>
    <link>https://community.nxp.com/t5/Sensors/Spikes-on-Accelerometer-Data/m-p/385740#M1375</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Dear Tomas Vaverka,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;thank you for your reply. I reduced the ODR to 100Hz and set the High Resolution mode. The number of spikes reduced significantly. However, there are still about 2 spikes every 5 minutes. Do you think I should reduce even more the ODR or this time increase the I2C clock, so that this problem will disappear definitely?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Some parts of the source code:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;// ---------- I2C INIT ---------- //&lt;/P&gt;&lt;P&gt;void I2C0Init( void ) &lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPC_SC-&amp;gt;PCONP |= (1 &amp;lt;&amp;lt; 7);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* set PIO0.27 and PIO0.28 to I2C0 SDA and SCL */&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* function to 01 on both SDA and SCL. */&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPC_PINCON-&amp;gt;PINSEL1 &amp;amp;= ~((0x03&amp;lt;&amp;lt;22)|(0x03&amp;lt;&amp;lt;24));&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPC_PINCON-&amp;gt;PINSEL1 |= ((0x01&amp;lt;&amp;lt;22)|(0x01&amp;lt;&amp;lt;24));&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /*--- Clear flags ---*/&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPC_I2C0-&amp;gt;I2CONCLR = I2CONCLR_AAC | I2CONCLR_SIC | I2CONCLR_STAC | I2CONCLR_I2ENC;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /*--- Reset registers ---*/&lt;/P&gt;&lt;P&gt;#if FAST_MODE_PLUS&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPC_PINCON-&amp;gt;I2CPADCFG |= ((0x1&amp;lt;&amp;lt;0)|(0x1&amp;lt;&amp;lt;2));&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPC_I2C0-&amp;gt;I2SCLL&amp;nbsp;&amp;nbsp; = I2SCLL_HS_SCLL;&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPC_I2C0-&amp;gt;I2SCLH&amp;nbsp;&amp;nbsp; = I2SCLH_HS_SCLH;&lt;/P&gt;&lt;P&gt;#else&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPC_PINCON-&amp;gt;I2CPADCFG &amp;amp;= ~((0x1&amp;lt;&amp;lt;0)|(0x1&amp;lt;&amp;lt;2));&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPC_I2C0-&amp;gt;I2SCLL&amp;nbsp;&amp;nbsp; = I2SCLL_SCLL;&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPC_I2C0-&amp;gt;I2SCLH&amp;nbsp;&amp;nbsp; = I2SCLH_SCLH;&lt;/P&gt;&lt;P&gt;#endif&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Install interrupt handler */&lt;/P&gt;&lt;P&gt;&amp;nbsp; NVIC_EnableIRQ(I2C0_IRQn);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPC_I2C0-&amp;gt;I2CONSET = I2CONSET_I2EN;&lt;/P&gt;&lt;P&gt;&amp;nbsp; return;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;// ---------- I2C INIT ---------- //&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;// ---------- WRITE IN REGISTER ---------- //&lt;/P&gt;&lt;P&gt;void ACEL_EscreveRegistrador(uint8_t registrador, uint8_t dado)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; //uint32_t PORT_USED = 0;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; I2CMasterBuffer[0][0] = 0x3A; //write&lt;/P&gt;&lt;P&gt;&amp;nbsp; I2CMasterBuffer[0][1] = registrador;&lt;/P&gt;&lt;P&gt;&amp;nbsp; I2CMasterBuffer[0][2] = dado; //dado a ser escrito no registrador&lt;/P&gt;&lt;P&gt;&amp;nbsp; I2CWriteLength[0] = 3;&lt;/P&gt;&lt;P&gt;&amp;nbsp; I2CReadLength[0] = 0;&lt;/P&gt;&lt;P&gt;&amp;nbsp; I2CEngine(0);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;// ---------- WRITE IN REGISTER ---------- //&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;// ---------- ACCELEROMETER INIT ---------- //&lt;/P&gt;&lt;P&gt;&amp;nbsp; // High Resolution&lt;/P&gt;&lt;P&gt;&amp;nbsp; ACEL_EscreveRegistrador(ACEL_REG_CTRL_REG2, 0b00010010); //0x2B: CTRL_REG2&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; // ODR = 100 Hz, page 35 do datasheet&lt;/P&gt;&lt;P&gt;&amp;nbsp; ACEL_EscreveRegistrador(ACEL_REG_CTRL_REG1, 0b00011000); //0x2A: CTRL_REG1&lt;/P&gt;&lt;P&gt;// ---------- ACCELEROMETER INIT ---------- //&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;// ---------- READING FUNCTION OF THE ACCELEROMETER ---------- //&lt;/P&gt;&lt;P&gt;void ACEL_LeDadosFormatoG(uint16_t *dados)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp; uint16_t counts[6];&lt;/P&gt;&lt;P&gt;&amp;nbsp; uint16_t temp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; // uint8_t i;&lt;/P&gt;&lt;P&gt;&amp;nbsp; uint8_t divisor = 0;&lt;/P&gt;&lt;P&gt;&amp;nbsp; uint8_t range = 0;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; //verifica qual o range (2g, 4g ou 8g) para selecionar o divisor&lt;/P&gt;&lt;P&gt;&amp;nbsp; range = ACEL_LeRegistrador(ACEL_REG_XYZ_DATA_CFG);&lt;/P&gt;&lt;P&gt;&amp;nbsp; switch (range &amp;amp; 0b11)&lt;/P&gt;&lt;P&gt;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; case 0b00: //2g&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; divisor = 8;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; case 0b01: //4g&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; divisor = 7;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; case 0b10: //8g&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; divisor = 6;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; ACEL_LeDadosFormatoCounts(counts);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; //copia os sinais&lt;/P&gt;&lt;P&gt;&amp;nbsp; dados[0] = counts[0];&lt;/P&gt;&lt;P&gt;&amp;nbsp; dados[2] = counts[2];&lt;/P&gt;&lt;P&gt;&amp;nbsp; dados[4] = counts[4];&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; temp = ((counts[1] &amp;amp; 0x1FF) * 1000 + 512) &amp;gt;&amp;gt; divisor;&lt;/P&gt;&lt;P&gt;&amp;nbsp; dados[1] = temp;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; temp = ((counts[3] &amp;amp; 0x1FF) * 1000 + 512) &amp;gt;&amp;gt; divisor;&lt;/P&gt;&lt;P&gt;&amp;nbsp; dados[3] = temp;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; temp = ((counts[5] &amp;amp; 0x1FF) * 1000 + 512) &amp;gt;&amp;gt; divisor;&lt;/P&gt;&lt;P&gt;&amp;nbsp; dados[5] = temp;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;// ---------- READING FUNCTION OF THE ACCELEROMETER ---------- //&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 27 Oct 2014 16:58:34 GMT</pubDate>
    <dc:creator>moisesferber</dc:creator>
    <dc:date>2014-10-27T16:58:34Z</dc:date>
    <item>
      <title>Spikes on Accelerometer Data</title>
      <link>https://community.nxp.com/t5/Sensors/Spikes-on-Accelerometer-Data/m-p/385738#M1373</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;SPAN style="color: #000000; font-family: tahoma, arial, verdana, sans-serif; font-size: 14.3999996185303px;"&gt;Hello! I 'm developing a motion detection application using MMA8453Q and I2C for communication between the microcontroller and the accelerometer. Occasionally, like once every five or ten seconds, there 's a spike in the data. For example, the z-axis acceleration is at around 1.0g and suddenly it drops to almost 0.0g and goes back to 1.0g. All of that happens in 3 samples, at 800Hz.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000; font-family: tahoma, arial, verdana, sans-serif; font-size: 14.3999996185303px;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000; font-family: tahoma, arial, verdana, sans-serif; font-size: 14.3999996185303px;"&gt;Is this a "normal" situation or there's something I'm missing? One of my colleagues thinks it's a problem with the I2C, but I doubt it.&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 03 Feb 2026 22:22:58 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Sensors/Spikes-on-Accelerometer-Data/m-p/385738#M1373</guid>
      <dc:creator>moisesferber</dc:creator>
      <dc:date>2026-02-03T22:22:58Z</dc:date>
    </item>
    <item>
      <title>Re: Spikes on Accelerometer Data</title>
      <link>https://community.nxp.com/t5/Sensors/Spikes-on-Accelerometer-Data/m-p/385739#M1374</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello Moises,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P class="Default"&gt;&lt;SPAN style="font-size: 10.0pt;"&gt;It sounds like a timing issue, the first thing I would recommend to try is using a lower ODR and/or a higher I2C clock speed.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="Default"&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif';"&gt;Do you have a logic analyzer or an oscilloscope to know what is going on on the I2C bus and interrupt pins (if used)? &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif';"&gt;It might also be helpful to see your source code (at least the initialization and data processing routines).&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif';"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif';"&gt;Regards,&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif';"&gt;Tomas&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif';"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif';"&gt;&lt;EM style="font-family: Arial, sans-serif; color: #333333;"&gt;&lt;SPAN style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; color: #3d3d3d;"&gt;&lt;EM style="font-weight: inherit; font-family: inherit;"&gt;PS:&lt;SPAN class="Apple-converted-space" style="font-weight: inherit; font-style: inherit; font-family: inherit;"&gt;&lt;SPAN class="Apple-converted-space"&gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/EM&gt;&lt;/SPAN&gt;&lt;SPAN style="font-weight: inherit; font-style: inherit; font-size: 11px; font-family: inherit; color: #3d3d3d;"&gt;If my answer helps to solve your question, please mark it as "Correct" or “Helpful”. Thank you.&lt;/SPAN&gt;&lt;/EM&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 14 Oct 2014 09:16:49 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Sensors/Spikes-on-Accelerometer-Data/m-p/385739#M1374</guid>
      <dc:creator>TomasVaverka</dc:creator>
      <dc:date>2014-10-14T09:16:49Z</dc:date>
    </item>
    <item>
      <title>Re: Spikes on Accelerometer Data</title>
      <link>https://community.nxp.com/t5/Sensors/Spikes-on-Accelerometer-Data/m-p/385740#M1375</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Dear Tomas Vaverka,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;thank you for your reply. I reduced the ODR to 100Hz and set the High Resolution mode. The number of spikes reduced significantly. However, there are still about 2 spikes every 5 minutes. Do you think I should reduce even more the ODR or this time increase the I2C clock, so that this problem will disappear definitely?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Some parts of the source code:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;// ---------- I2C INIT ---------- //&lt;/P&gt;&lt;P&gt;void I2C0Init( void ) &lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPC_SC-&amp;gt;PCONP |= (1 &amp;lt;&amp;lt; 7);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* set PIO0.27 and PIO0.28 to I2C0 SDA and SCL */&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* function to 01 on both SDA and SCL. */&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPC_PINCON-&amp;gt;PINSEL1 &amp;amp;= ~((0x03&amp;lt;&amp;lt;22)|(0x03&amp;lt;&amp;lt;24));&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPC_PINCON-&amp;gt;PINSEL1 |= ((0x01&amp;lt;&amp;lt;22)|(0x01&amp;lt;&amp;lt;24));&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /*--- Clear flags ---*/&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPC_I2C0-&amp;gt;I2CONCLR = I2CONCLR_AAC | I2CONCLR_SIC | I2CONCLR_STAC | I2CONCLR_I2ENC;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /*--- Reset registers ---*/&lt;/P&gt;&lt;P&gt;#if FAST_MODE_PLUS&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPC_PINCON-&amp;gt;I2CPADCFG |= ((0x1&amp;lt;&amp;lt;0)|(0x1&amp;lt;&amp;lt;2));&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPC_I2C0-&amp;gt;I2SCLL&amp;nbsp;&amp;nbsp; = I2SCLL_HS_SCLL;&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPC_I2C0-&amp;gt;I2SCLH&amp;nbsp;&amp;nbsp; = I2SCLH_HS_SCLH;&lt;/P&gt;&lt;P&gt;#else&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPC_PINCON-&amp;gt;I2CPADCFG &amp;amp;= ~((0x1&amp;lt;&amp;lt;0)|(0x1&amp;lt;&amp;lt;2));&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPC_I2C0-&amp;gt;I2SCLL&amp;nbsp;&amp;nbsp; = I2SCLL_SCLL;&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPC_I2C0-&amp;gt;I2SCLH&amp;nbsp;&amp;nbsp; = I2SCLH_SCLH;&lt;/P&gt;&lt;P&gt;#endif&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Install interrupt handler */&lt;/P&gt;&lt;P&gt;&amp;nbsp; NVIC_EnableIRQ(I2C0_IRQn);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPC_I2C0-&amp;gt;I2CONSET = I2CONSET_I2EN;&lt;/P&gt;&lt;P&gt;&amp;nbsp; return;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;// ---------- I2C INIT ---------- //&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;// ---------- WRITE IN REGISTER ---------- //&lt;/P&gt;&lt;P&gt;void ACEL_EscreveRegistrador(uint8_t registrador, uint8_t dado)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; //uint32_t PORT_USED = 0;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; I2CMasterBuffer[0][0] = 0x3A; //write&lt;/P&gt;&lt;P&gt;&amp;nbsp; I2CMasterBuffer[0][1] = registrador;&lt;/P&gt;&lt;P&gt;&amp;nbsp; I2CMasterBuffer[0][2] = dado; //dado a ser escrito no registrador&lt;/P&gt;&lt;P&gt;&amp;nbsp; I2CWriteLength[0] = 3;&lt;/P&gt;&lt;P&gt;&amp;nbsp; I2CReadLength[0] = 0;&lt;/P&gt;&lt;P&gt;&amp;nbsp; I2CEngine(0);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;// ---------- WRITE IN REGISTER ---------- //&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;// ---------- ACCELEROMETER INIT ---------- //&lt;/P&gt;&lt;P&gt;&amp;nbsp; // High Resolution&lt;/P&gt;&lt;P&gt;&amp;nbsp; ACEL_EscreveRegistrador(ACEL_REG_CTRL_REG2, 0b00010010); //0x2B: CTRL_REG2&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; // ODR = 100 Hz, page 35 do datasheet&lt;/P&gt;&lt;P&gt;&amp;nbsp; ACEL_EscreveRegistrador(ACEL_REG_CTRL_REG1, 0b00011000); //0x2A: CTRL_REG1&lt;/P&gt;&lt;P&gt;// ---------- ACCELEROMETER INIT ---------- //&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;// ---------- READING FUNCTION OF THE ACCELEROMETER ---------- //&lt;/P&gt;&lt;P&gt;void ACEL_LeDadosFormatoG(uint16_t *dados)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp; uint16_t counts[6];&lt;/P&gt;&lt;P&gt;&amp;nbsp; uint16_t temp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; // uint8_t i;&lt;/P&gt;&lt;P&gt;&amp;nbsp; uint8_t divisor = 0;&lt;/P&gt;&lt;P&gt;&amp;nbsp; uint8_t range = 0;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; //verifica qual o range (2g, 4g ou 8g) para selecionar o divisor&lt;/P&gt;&lt;P&gt;&amp;nbsp; range = ACEL_LeRegistrador(ACEL_REG_XYZ_DATA_CFG);&lt;/P&gt;&lt;P&gt;&amp;nbsp; switch (range &amp;amp; 0b11)&lt;/P&gt;&lt;P&gt;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; case 0b00: //2g&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; divisor = 8;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; case 0b01: //4g&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; divisor = 7;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; case 0b10: //8g&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; divisor = 6;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; ACEL_LeDadosFormatoCounts(counts);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; //copia os sinais&lt;/P&gt;&lt;P&gt;&amp;nbsp; dados[0] = counts[0];&lt;/P&gt;&lt;P&gt;&amp;nbsp; dados[2] = counts[2];&lt;/P&gt;&lt;P&gt;&amp;nbsp; dados[4] = counts[4];&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; temp = ((counts[1] &amp;amp; 0x1FF) * 1000 + 512) &amp;gt;&amp;gt; divisor;&lt;/P&gt;&lt;P&gt;&amp;nbsp; dados[1] = temp;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; temp = ((counts[3] &amp;amp; 0x1FF) * 1000 + 512) &amp;gt;&amp;gt; divisor;&lt;/P&gt;&lt;P&gt;&amp;nbsp; dados[3] = temp;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; temp = ((counts[5] &amp;amp; 0x1FF) * 1000 + 512) &amp;gt;&amp;gt; divisor;&lt;/P&gt;&lt;P&gt;&amp;nbsp; dados[5] = temp;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;// ---------- READING FUNCTION OF THE ACCELEROMETER ---------- //&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 27 Oct 2014 16:58:34 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Sensors/Spikes-on-Accelerometer-Data/m-p/385740#M1375</guid>
      <dc:creator>moisesferber</dc:creator>
      <dc:date>2014-10-27T16:58:34Z</dc:date>
    </item>
  </channel>
</rss>

