<?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>topic Re: MMA8451Q Interrupt based reading of accelerometer using  FRDM-KL25Z in Kinetis Microcontrollers</title>
    <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/MMA8451Q-Interrupt-based-reading-of-accelerometer-using-FRDM/m-p/1434404#M62765</link>
    <description>&lt;P&gt;NVM! The problem was that I didn't route the interrupt back to port A 14 so it didn't throw up any output now its working fine. thanks for your contribution.&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Sat, 26 Mar 2022 10:08:36 GMT</pubDate>
    <dc:creator>Raghahanuma</dc:creator>
    <dc:date>2022-03-26T10:08:36Z</dc:date>
    <item>
      <title>MMA8451Q Interrupt based reading of accelerometer using  FRDM-KL25Z</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/MMA8451Q-Interrupt-based-reading-of-accelerometer-using-FRDM/m-p/1432778#M62725</link>
      <description>&lt;DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;I'm getting a fault at these lines, I don't know what is wrong with it. have I coded the interrupt part wrong ? &lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;NVIC_EnableIRQ(PORTA_IRQn);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;NVIC_SetPendingIRQ(PORTA_IRQn);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;Below is my complete code,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;#include &amp;lt;stdio.h&amp;gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;#include "board.h"&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;#include "peripherals.h"&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;#include "pin_mux.h"&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;#include "clock_config.h"&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;#include "MKL25Z4.h"&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;#include "fsl_debug_console.h"&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;#include "pin_mux.h"&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;#include "fsl_gpio.h"&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;#include "fsl_port.h"&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;/* TODO: insert other include files here. */&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;/* TODO: insert other definitions and declarations here. */&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;#define MMA8451_SA 0x1D&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;/* MMA8451 Registers */&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;#define MMA8451_REG_WHOAMI 0x0D&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;/*&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;* &lt;/SPAN&gt;&lt;SPAN&gt;&lt;A href="https://community.nxp.com/user/brief" target="_blank" rel="noopener"&gt;u/brief&lt;/A&gt;&lt;/SPAN&gt;&lt;SPAN&gt; Application entry point.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;*/&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;int main(void) {&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;/* Enable clock for PORTE */&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;SIM-&amp;gt;SCGC5 = (1 &amp;lt;&amp;lt; SIM_SCGC5_PORTE_SHIFT);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;/* Enable clock for I2C0 */&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;SIM-&amp;gt;SCGC4 = (1 &amp;lt;&amp;lt; SIM_SCGC4_I2C0_SHIFT);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;BOARD_I2C_ReleaseBus();&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;/* PORTE24 pin as I2C0_SCL */&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;PORTE-&amp;gt;PCR[24] = (5 &amp;lt;&amp;lt; PORT_PCR_MUX_SHIFT) | (1 &amp;lt;&amp;lt; PORT_PCR_PS_SHIFT) | (1&amp;lt;&amp;lt;PORT_PCR_PE_SHIFT) | (1&amp;lt;&amp;lt;PORT_PCR_SRE_SHIFT);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;/* PORTE25 pin as I2C0_SDA */&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;PORTE-&amp;gt;PCR[25] = (5 &amp;lt;&amp;lt; PORT_PCR_MUX_SHIFT) | (1 &amp;lt;&amp;lt; PORT_PCR_PS_SHIFT) | (1&amp;lt;&amp;lt;PORT_PCR_PE_SHIFT) | (1&amp;lt;&amp;lt;PORT_PCR_SRE_SHIFT);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;/* clear interrupt flag and set pins of port A as gpio*/&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;PORTA-&amp;gt;PCR[14]= (0 | PORT_PCR_ISF_MASK) | (1 &amp;lt;&amp;lt; PORT_PCR_MUX_SHIFT) | PORT_PCR_IRQC(0xA);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;//NVIC_REG-&amp;gt;iser[0] = (1 &amp;lt;&amp;lt; 16);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;// NVIC_REG-&amp;gt;icpr[0] = (1 &amp;lt;&amp;lt; 16);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;NVIC_EnableIRQ(PORTA_IRQn);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;NVIC_SetPendingIRQ(PORTA_IRQn);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;/* I2C0 Frequency Divider */&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;I2C0-&amp;gt;F = 0x0F;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;/* I2C0 Enable, Master Mode */&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;I2C0-&amp;gt;C1 = (1 &amp;lt;&amp;lt; I2C_C1_IICEN_SHIFT) | (1 &amp;lt;&amp;lt; I2C_C1_IICIE_SHIFT);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;I2C0-&amp;gt;S |= (1 &amp;lt;&amp;lt; I2C_S_IICIF_SHIFT);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;/* I2C0 Check for Bus Busy */&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;while(I2C0-&amp;gt;S &amp;amp; (1 &amp;lt;&amp;lt; I2C_S_BUSY_SHIFT));&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;data = i2c_read(MMA8451_SA, MMA8451_REG_WHOAMI);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;while(I2C0-&amp;gt;S &amp;amp; (1 &amp;lt;&amp;lt; I2C_S_BUSY_SHIFT));&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;data = i2c_read(MMA8451_SA, MMA8451_REG_WHOAMI);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;data = i2c_read(MMA8451_SA, MMA8451_REG_WHOAMI);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;i2c_write(MMA8451_SA, 0x2A, 0x01);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;data = i2c_read(MMA8451_SA, 0x2A);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;i2c_write(MMA8451_SA, CTRL_REG4, 0x01); // Enable DRDY interrupt&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;i2c_write(MMA8451_SA, CTRL_REG5, 0x01); // DRDY interrupt routed to INT1&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;while(1) {&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;//if(dataready){&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;//dataready=0;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;/* X Offset LSB */&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;return 0;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;void PORTA_IRQHandler()&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;//PORTA-&amp;gt;PCR[14]=(0&amp;lt;&amp;lt; PORT_PCR_ISF_SHIFT); // Clear the interrupt flag&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;//dataready = 1;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;/* X Offset LSB */&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;data = i2c_read(MMA8451_SA, 0x02);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;xoff = data;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;/* X Offset MSB */&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;data = i2c_read(MMA8451_SA, 0x03);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;xoff |= (data &amp;lt;&amp;lt; 8);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;/* Y Offset LSB */&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;data = i2c_read(MMA8451_SA, 0x04);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;yoff = data;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;/* Y Offset MSB */&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;data = i2c_read(MMA8451_SA, 0x05);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;yoff |= (data &amp;lt;&amp;lt; 8);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;/* Z Offset LSB */&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;data = i2c_read(MMA8451_SA, 0x06);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;zoff = data;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;/* Z Offset MSB */&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;data = i2c_read(MMA8451_SA, 0x07);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;zoff |= (data &amp;lt;&amp;lt; 8);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;printf("XOFF: 0x%04x YOFF: 0x%04x ZOFF: 0x%04x\n", xoff, yoff, zoff);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;PORT_ClearPinsInterruptFlags(PORTA, (1 &amp;lt;&amp;lt; 12));&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;</description>
      <pubDate>Wed, 23 Mar 2022 17:56:35 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/MMA8451Q-Interrupt-based-reading-of-accelerometer-using-FRDM/m-p/1432778#M62725</guid>
      <dc:creator>Raghahanuma</dc:creator>
      <dc:date>2022-03-23T17:56:35Z</dc:date>
    </item>
    <item>
      <title>Re: MMA8451Q Interrupt based reading of accelerometer using  FRDM-KL25Z</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/MMA8451Q-Interrupt-based-reading-of-accelerometer-using-FRDM/m-p/1433230#M62731</link>
      <description>&lt;P&gt;Hi&amp;nbsp;Raghahanuma,&lt;/P&gt;
&lt;P&gt;This fault is not caused by&amp;nbsp;&lt;SPAN&gt;NVIC_EnableIRQ(PORTA_IRQn);, &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;This is because the clock gate for PORTA is not enabled, but you accessed PORTA-&amp;gt;PCR[14].&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Please enable the clock gate of PORTA.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;Best Regards,&lt;BR /&gt;Robin&lt;BR /&gt;-------------------------------------------------------------------------------&lt;BR /&gt;Note:&lt;BR /&gt;- If this post answers your question, please click the "Mark Correct" button. Thank you!&lt;/P&gt;
&lt;P&gt;- We are following threads for 7 weeks after the last post, later replies are ignored&lt;BR /&gt;Please open a new thread and refer to the closed one, if you have a related question at a later point in time.&lt;BR /&gt;-------------------------------------------------------------------------------&lt;/P&gt;</description>
      <pubDate>Thu, 24 Mar 2022 06:58:32 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/MMA8451Q-Interrupt-based-reading-of-accelerometer-using-FRDM/m-p/1433230#M62731</guid>
      <dc:creator>Robin_Shen</dc:creator>
      <dc:date>2022-03-24T06:58:32Z</dc:date>
    </item>
    <item>
      <title>Re: MMA8451Q Interrupt based reading of accelerometer using  FRDM-KL25Z</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/MMA8451Q-Interrupt-based-reading-of-accelerometer-using-FRDM/m-p/1433450#M62735</link>
      <description>&lt;P&gt;&lt;SPAN&gt;NVIC_SetPendingIRQ(PORTA_IRQn);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&lt;BR /&gt;After the clock issue is addressed,&lt;BR /&gt;why is that being used?&lt;BR /&gt;&lt;BR /&gt;That will force the PORTA IRQ to fire and I2C is not yet configured.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;The Accel itself will generate an IRQ when it is ready, after everything is correctly configured.&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 24 Mar 2022 12:13:00 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/MMA8451Q-Interrupt-based-reading-of-accelerometer-using-FRDM/m-p/1433450#M62735</guid>
      <dc:creator>bobpaddock</dc:creator>
      <dc:date>2022-03-24T12:13:00Z</dc:date>
    </item>
    <item>
      <title>Re: MMA8451Q Interrupt based reading of accelerometer using  FRDM-KL25Z</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/MMA8451Q-Interrupt-based-reading-of-accelerometer-using-FRDM/m-p/1433881#M62749</link>
      <description>&lt;P&gt;Thanks well that solved the fault but still not getting the output. will work on it and update&lt;/P&gt;</description>
      <pubDate>Fri, 25 Mar 2022 06:18:40 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/MMA8451Q-Interrupt-based-reading-of-accelerometer-using-FRDM/m-p/1433881#M62749</guid>
      <dc:creator>Raghahanuma</dc:creator>
      <dc:date>2022-03-25T06:18:40Z</dc:date>
    </item>
    <item>
      <title>Re: MMA8451Q Interrupt based reading of accelerometer using  FRDM-KL25Z</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/MMA8451Q-Interrupt-based-reading-of-accelerometer-using-FRDM/m-p/1433891#M62750</link>
      <description>&lt;P&gt;Tried everything still not getting the output!&lt;/P&gt;</description>
      <pubDate>Fri, 25 Mar 2022 06:27:17 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/MMA8451Q-Interrupt-based-reading-of-accelerometer-using-FRDM/m-p/1433891#M62750</guid>
      <dc:creator>Raghahanuma</dc:creator>
      <dc:date>2022-03-25T06:27:17Z</dc:date>
    </item>
    <item>
      <title>Re: MMA8451Q Interrupt based reading of accelerometer using  FRDM-KL25Z</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/MMA8451Q-Interrupt-based-reading-of-accelerometer-using-FRDM/m-p/1433909#M62751</link>
      <description>&lt;P&gt;No output from INT1 or I2C?&lt;/P&gt;</description>
      <pubDate>Fri, 25 Mar 2022 06:48:14 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/MMA8451Q-Interrupt-based-reading-of-accelerometer-using-FRDM/m-p/1433909#M62751</guid>
      <dc:creator>Robin_Shen</dc:creator>
      <dc:date>2022-03-25T06:48:14Z</dc:date>
    </item>
    <item>
      <title>Re: MMA8451Q Interrupt based reading of accelerometer using  FRDM-KL25Z</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/MMA8451Q-Interrupt-based-reading-of-accelerometer-using-FRDM/m-p/1434063#M62756</link>
      <description>&lt;DIV class=""&gt;
&lt;DIV class=""&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;Hi Raghahanuma,&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class=""&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV class=""&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;Be aware that control registers settings are updated only if the sensor is in standby mode.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class=""&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;So I suggest you change your sequence as per below:&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class=""&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV class=""&gt;&lt;SPAN&gt;i2c_write(MMA8451_SA, 0x2A, 0x00); // Put sensor in Standby mode (this will be already the case after POR or Reset)&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;DIV class=""&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV class=""&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV class=""&gt;
&lt;DIV class=""&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV class=""&gt;&lt;SPAN&gt;i2c_write(MMA8451_SA, CTRL_REG4, 0x01); // Enable DRDY interrupt&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;DIV class=""&gt;
&lt;DIV class=""&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;DIV class=""&gt;
&lt;DIV class=""&gt;&lt;SPAN&gt;i2c_write(MMA8451_SA, CTRL_REG5, 0x01); // DRDY interrupt routed to INT1&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class=""&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV class=""&gt;
&lt;DIV class=""&gt;
&lt;DIV class=""&gt;&lt;SPAN&gt;i2c_write(MMA8451_SA, 0x2A, 0x01);&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;DIV class=""&gt;
&lt;DIV class=""&gt;
&lt;DIV class=""&gt;
&lt;DIV class=""&gt;&lt;SPAN&gt;data = i2c_read(MMA8451_SA, 0x2A); // optional verification&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;DIV class=""&gt;
&lt;DIV class=""&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;DIV class=""&gt;Hope this will help.&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;</description>
      <pubDate>Fri, 25 Mar 2022 09:29:32 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/MMA8451Q-Interrupt-based-reading-of-accelerometer-using-FRDM/m-p/1434063#M62756</guid>
      <dc:creator>JackITB</dc:creator>
      <dc:date>2022-03-25T09:29:32Z</dc:date>
    </item>
    <item>
      <title>Re: MMA8451Q Interrupt based reading of accelerometer using  FRDM-KL25Z</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/MMA8451Q-Interrupt-based-reading-of-accelerometer-using-FRDM/m-p/1434404#M62765</link>
      <description>&lt;P&gt;NVM! The problem was that I didn't route the interrupt back to port A 14 so it didn't throw up any output now its working fine. thanks for your contribution.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sat, 26 Mar 2022 10:08:36 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/MMA8451Q-Interrupt-based-reading-of-accelerometer-using-FRDM/m-p/1434404#M62765</guid>
      <dc:creator>Raghahanuma</dc:creator>
      <dc:date>2022-03-26T10:08:36Z</dc:date>
    </item>
  </channel>
</rss>

