Implementing Positioning Algorithms Using Accelerometers

Save this PDF as:

Size: px
Start display at page:

Transcription

1 Freescale Semiconductor Application Note Rev 0, 02/2007 Implementing Positioning Algorithms Using Accelerometers by: Kurt Seifert and Oscar Camacho OVERVIEW This document describes and implements a positioning algorithm using the MMA7260QT 3-Axis accelerometer and a 9S08QG8 low cost 8-bit microcontroller unit (MCU). In today s advanced electronic market, there are many multifunctional products continuously adding features and intelligence. Tracking and gaming are just a few of the markets that can benefit from obtaining positioning information. One option for obtaining this information is through the use of inertial sensors. The signal obtained from these sensors does require processing as there is no direct conversion between acceleration and position. In order to obtain position a double integral must be applied to the signal. This document describes an easy algorithm to implement a double integration of the signal obtained from the sensor using a low end 8-bit microcontroller. In order to obtain a double integration a simple integration must be made twice. This allows velocity information to be obtained as well. The algorithm shown in the following pages applies to any sensing axis; therefore, one, two or three dimensional positioning can be determined. When implementing positioning in 3 axes, extra processing is required to null the earth s gravity effect. The implementation below includes an example for a 2-axis system (i.e. mouse). POTENTIAL APPLICATIONS Potential applications for this kind of algorithm are personal navigation, car navigation, back-up GPS, anti-theft devices, map tracking, 3-D gaming, PC mouse, plus many others. The products in these categories can benefit from implementing positioning algorithms. The algorithm described in this document is useful in situations where displacement precision is not extremely critical. Other considerations and implications specific to the application should be considered when adapting this example. With minor modifications and adaptations in the final application this algorithm can achieve higher precision. BACK UP THEORY AND ALGORITHM The best approach in understanding this algorithm is with a review of mathematical integration. The acceleration is the rate of change of the velocity of an object. At the same time, the velocity is the rate of change of the position of that same object. In other words, the velocity is the derivative of the position and the acceleration is the derivative of the velocity, thus: dv a ds = and v dds ( ) = a = dt dt dt 2 The integration is the opposite of the derivative. If the acceleration of an object is known, we can obtain the position data if a double integration is applied (assuming initial conditions are zero): v = ( a ) d t and s= ( v) dt ( a) dt dt One way to understand this formula is to define the integral as the area below the curve, where the integration is the sum of very small areas whose width is almost zero. In other words, the sum of the integration represents the magnitude of a physical variable. Figure 1. Sampled Accelerometer s Signal Where: b n ƒ( x) dx = a lim ƒ( x i ) n x i = 1 b a x = n Freescale Semiconductor, Inc., All rights reserved.

2 With the previous concept about areas below the curve a deduction can be made: Sampling a signal gets us instant values of its magnitude, so small areas can be created between two samples. In order to create a coherent value, sampling time must always be the same. Sampling time represents the base of this area while the sampled value represents its height. In order to eliminate multiplications with fractions (microseconds or milliseconds) involving floating points in the calculation we assume the time is a unit. Now we know each sample represents an area whose base width is equal to 1. The next deduction could then be that the value of the integral is reduced to be the sum of samples. This assumption is correct if the sampling time tends to be zero. In a real situation an error is generated as shown in Figure 1. This error keeps accumulating for the time the process is active. Area error Formula 1 Sample n Sample n 1 Area n = Sample n T 2 Now the error is much lower than in the previous approximation. Yet data must not be too accurate in order to obtain a real world interpretation. Even though acceleration can be positive or negative, samples are always positive (based on the output characteristics of the MMA7260QT); therefore, an offset adjustment must be done. In other words, a reference is needed. This function is defined as the calibration routine. Calibration is performed on the accelerometer when there is a no movement condition. The output or offset obtained is considered the zero point reference. Values lower than the reference represent negative values (deceleration) while greater values represent positive values (acceleration). The accelerometer output varies from 0V to Vdd and it is typically interpreted by an analog to digital comparator (A/D). The zero value is near Vdd/2. The calibration value obtained will be affected by the board s orientation and the static acceleration (earth s gravity) component in each of the axis. If the module is perfectly parallel to the earth s surface, the calibration value should be very close to Vdd/2. The following figure shows the result of the calibration routine: Figure 2. Errors Generated During Integration These errors are formally known as sampling losses. In order to reduce this error we then make a further assumption. The resulting area can be seen as the combination of two smaller areas: Area 2 Area 1 Sampled Signal minus Zero Reference equals Real Sampled Acceleration Figure 4. Acceleration Signal After Calibration From the sampled signal minus the zero reference we obtain true sampled acceleration. A1 represents a positive acceleration. A2 represents a negative acceleration. If we considered this data as sampled data, the signal should be similar to the figure below. Sample n Sample n-1 Figure 3. Errors of Integration Are Reduced with a First Order Approximation (Trapezoidal Method) The first area is the value of the previous sample (a square). The second area is a triangle, formed between the previous sample (sample n-1) and the actual sample (sample n) divided by two. With this approach, we now have a first order approximation (interpolation) of the signal. Threshold Value A1 A2 Figure 5. Acceleration Sampled Signal After Calibration By applying the integration formula, Formula 1, we get a proportional approximation of the velocity. In order to obtain position the integration must be performed again. Applying the same formula and procedure to this obtained velocity data, we now get a proportional approximation of the instantaneous position (see Figure 6). 2 Freescale Semiconductor

3 Acceleration Velocity Position A) Real accelerometer data B) Result of the first Integration velocity C) Result of the second Integration velocity Figure 6. Proportional Approximation of the Instantaneous Position SOFTWARE DESIGN CONSIDERATIONS The following steps and recommendations should be considered when implementing this kind of algorithm in a real world implementation. The signal is not noise free so it must be digitally filtered. The filter used in this algorithm is a moving average; the value to be processed is the result of averaging a certain amount of samples. Even with the previous filtering some data can be erroneous due to the mechanical noise, so another filter must be implemented. Depending on the number of samples filtered, a window of real acceleration can be selected (typically ± 2 sample steps for an average of 16 samples). A no movement state is critical to obtain correct data. A calibration routine is needed at the beginning of the application. This calibration value must be as accurate as possible. The real value of the acceleration is the sample minus the calibration value; it can be either positive or negative. This must never be ignored when declaring variables (signed). A faster sampling frequency implies more accurate results due the fact that error is reduced; yet more memory, timing, and hardware considerations are needed. The time between samples MUST always be the same. Errors can be generated if this time is not equal. A linear approximation between samples (interpolation) is recommended for more accurate results. Freescale Semiconductor 3

4 Calibration Routine: CODE EXPLANATION This calibration routine removes the acceleration offset component in the sensor output due to the earth s gravity (static acceleration). The calibration routine averages samples when the accelerometer is in a no movement condition. The more samples that are taken, the more accurate the calibration results will be. void Calibrate(void) unsigned int count1; count1 = 0; do ADC_GetAllAxis(); sstatex = sstatex + Sample_X; sstatey = sstatey + Sample_Y; count1++; while(count1!=0x0400); // Accumulate Samples // 1024 times sstatex=sstatex>>10; // division between 1024 sstatey=sstatey>>10; Filtering: Low pass filtering of the signal is a very good way to remove noise (both mechanical and electrical) from the accelerometer. Reducing the noise is critical for a positioning application in order to reduce major errors when integrating the signal. A simple way for low pass filtering a sampled signal is to perform a rolling average. Filtering is simply then reduced to obtain the average of a set of samples. It is important to obtain the average of a balanced amount of samples. Taking too many samples to do this process can result in a loss of data, yet taking too few can result in an inaccurate value. do accelerationx[1]=accelerationx[1] + Sample_X; //filtering routine for noise attenuation accelerationy[1]=accelerationy[1] + Sample_Y; //64 samples are averaged. The resulting count2++; // average represents the acceleration of // an instant. while (count2!=0x40); // 64 sums of the acceleration sample accelerationx[1]= accelerationx[1]>>6; // division by 64 accelerationy[1]= accelerationy[1]>>6; Mechanical Filtering Window: When a no movement condition is present, minor errors in acceleration could be interpreted as a constant velocity due to the fact that samples not equal to zero are being summed; the ideal case for a no movement condition is all the samples to be zero. That constant velocity indicates a continuous movement condition and therefore an unstable position. Even with the previous filtering some data can be erroneous, so a window of discrimination between valid data and invalid data for the no movement condition must be implemented. if ((accelerationx[1] <=3)&&(accelerationx[1] >= -3)) //Discrimination window applied to accelerationx[1] = 0; // the X axis acceleration variable 4 Freescale Semiconductor

5 Figure 7. Software Discrimination Window To Reduce Mechanical Noise Effects Positioning: Double integration is the process needed to obtain the position using the acceleration data. The integration step must be performed once to obtain velocity and then repeated to obtain position. As previously shown: Sample n Sample n 1 Area n = Sample n T 2 //first integration velocityx[1] = velocityx[0] + accelerationx[0] + ((accelerationx[1] - accelerationx[0])>>1) //second integration positionx[1] = positionx[0] + velocityx[0] + ((velocityx[1] - velocityx[0])>>1); Data Transfer: This function is used for debugging and display purposes; the 32 bits result is split and conditioned in this function. if (positionx[1]>=0) //This line compares the sign of the X direction data direction= (direction 0x10); // if its positive the most significant byte posx_seg[0]= positionx[1] & 0x000000FF; // is set to 1 else it is set to 8 posx_seg[1]= (positionx[1]>>8) & 0x000000FF; // the data is also managed in the // subsequent lines in order to be sent. posx_seg[2]= (positionx[1]>>16) & 0x000000FF;// The 32 bit variable must be split into posx_seg[3]= (positionx[1]>>24) & 0x000000FF;// 4 different 8 bit variables in order to // be sent via the 8 bit SCI frame else direction=(direction 0x80); positionxbkp=positionx[1]-1; positionxbkp=positionxbkp^0xffffffff; posx_seg[0]= positionxbkp & 0x000000FF; posx_seg[1]= (positionxbkp>>8) & 0x000000FF; posx_seg[2]= (positionxbkp>>16) & 0x000000FF; posx_seg[3]= (positionxbkp>>24) & 0x000000FF; Freescale Semiconductor 5

6 Movement End Check Based on the concept that an integral represents the area below the curve, velocity is the result of the area below the acceleration curve. If we look at the typical movement of an object from point A to point B in a single axis, a typical acceleration would result as shown in the figure below: Acceleration Figure 8. Typical Accelerometer Output Signal As The Result of Dragging an Object in a Single Axis Looking at graph above, there is an initial acceleration or deceleration until a maximum velocity is reached. Then that acceleration flips the opposite way until it reaches zero again. At this point a stable displacement and a new position are reached. In a real world scenario where the area below the positive side of the curve is not the same as the area above the negative side, the integration result would never reach a zero velocity and therefore would be a sloped positioning (never stable). Because of this, it is crucial to force the velocity down to zero. This is achieved by constantly reading the acceleration and comparing it with zero. If this condition exists during a certain number of samples, velocity is simply returned to zero. if (accelerationx[1]==0) countx++; else countx =0; if (countx>=25) velocityx[1]=0; velocityx[0]=0; // we count the number of acceleration samples that equals cero // if this number exceeds 25, we can assume that velocity is cero 6 Freescale Semiconductor

7 Begin ADC Init Average Save X Offset Average Save Y Offset Y Calibrate? Take Sample From ADC N Acceleration = Sample calibration value Velocity = Previous Velocity + Current Acceleration Position = Previous Position + Current Velocity Show position SOURCE CODE #include <hidef.h> #include "derivative.h" #include "adc.h" #include "buzzer.h" #include "SCItx.h" Figure 9. Flow Diagram #pragma DATA_SEG MY_ZEROPAGE unsigned char near Sample_X; unsigned char near Sample_Y; unsigned char near Sample_Z; unsigned char near Sensor_Data[8]; unsigned char near countx,county ; signed int near accelerationx[2], accelerationy[2]; signed long near velocityx[2], velocityy[2]; signed long near positionx[2]; signed long near positiony[2]; signed long near positionz[2]; unsigned char near direction; unsigned long near sstatex,sstatey; #pragma DATA_SEG DEFAULT void init(void); void Calibrate(void); void data_transfer(void); Freescale Semiconductor 7

8 void concatenate_data(void); void movement_end_check(void); void position(void); void main (void) init(); get_threshold(); do position(); while(1); /******************************************************************************* The purpose of the calibration routine is to obtain the value of the reference threshold. It consists on a 1024 samples average in no-movement condition. ********************************************************************************/ void Calibrate(void) unsigned int count1; count1 = 0; do ADC_GetAllAxis(); sstatex = sstatex + Sample_X; sstatey = sstatey + Sample_Y; count1++; while(count1!=0x0400); // Accumulate Samples // 1024 times sstatex=sstatex>>10; // division between 1024 sstatey=sstatey>>10; /*****************************************************************************************/ /****************************************************************************************** This function obtains magnitude and direction In this particular protocol direction and magnitude are sent in separate variables. Management can be done in many other different ways. *****************************************************************************************/ void data_transfer(void) signed long positionxbkp; signed long positionybkp; unsigned int delay; unsigned char posx_seg[4], posy_seg[4]; if (positionx[1]>=0) //This line compares the sign of the X direction data direction= (direction 0x10); //if its positive the most significant byte posx_seg[0]= positionx[1] & 0x000000FF; // is set to 1 else it is set to 8 posx_seg[1]= (positionx[1]>>8) & 0x000000FF; // the data is also managed in the // subsequent lines in order to posx_seg[2]= (positionx[1]>>16) & 0x000000FF; // be sent. The 32 bit variable must be posx_seg[3]= (positionx[1]>>24) & 0x000000FF; // split into 4 different 8 bit // variables in order to be sent via // the 8 bit SCI frame 8 Freescale Semiconductor

9 else direction=(direction 0x80); positionxbkp=positionx[1]-1; positionxbkp=positionxbkp^0xffffffff; posx_seg[0]= positionxbkp & 0x000000FF; posx_seg[1]= (positionxbkp>>8) & 0x000000FF; posx_seg[2]= (positionxbkp>>16) & 0x000000FF; posx_seg[3]= (positionxbkp>>24) & 0x000000FF; if (positiony[1]>=0) // Same management than in the previous case direction= (direction 0x08); // but with the Y data. posy_seg[0]= positiony[1] & 0x000000FF; posy_seg[1]= (positiony[1]>>8) & 0x000000FF; posy_seg[2]= (positiony[1]>>16) & 0x000000FF; posy_seg[3]= (positiony[1]>>24) & 0x000000FF; else direction= (direction 0x01); positionybkp=positiony[1]-1; positionybkp=positionybkp^0xffffffff; posy_seg[0]= positionybkp & 0x000000FF; posy_seg[1]= (positionybkp>>8) & 0x000000FF; posy_seg[2]= (positionybkp>>16) & 0x000000FF; posy_seg[3]= (positionybkp>>24) & 0x000000FF; delay = 0x0100; Sensor_Data[0] = 0x03; Sensor_Data[1] = direction; Sensor_Data[2] = posx_seg[3]; Sensor_Data[3] = posy_seg[3]; Sensor_Data[4] = 0x01; Sensor_Data[5] = 0x01; Sensor_Data[6] = END_OF_FRAME; while (--delay); SCITxMsg(Sensor_Data); while (SCIC2 & 0x08); // Data transferring function /*****************************************************************************************/ /****************************************************************************************** This function returns data format to its original state. When obtaining the magnitude and direction of the position, an inverse two's complement is made. This function makes the two's complement in order to return the data to it original state. It is important to notice that the sensibility adjustment is greatly impacted here, the amount of "ones" inserted in the mask must be equivalent to the "ones" lost in the shifting made in the previous function upon the sensibility modification. ******************************************************************************************/ void data_reintegration(void) if (direction >=10) Freescale Semiconductor 9

10 positionx[1]= positionx[1] 0xFFFFC000; //amount of shifts // 18 "ones" inserted. Same size as the direction = direction & 0x01; if (direction ==1) positiony[1]= positiony[1] 0xFFFFC000; /****************************************************************************************** This function allows movement end detection. If a certain number of acceleration samples are equal to zero we can assume movement has stopped. Accumulated Error generated in the velocity calculations is eliminated by resetting the velocity variables. This stops position increment and greatly eliminates position error. ******************************************************************************************/ void movement_end_check(void) if (accelerationx[1]==0) countx++; else countx =0; if (countx>=25) velocityx[1]=0; velocityx[0]=0; //we count the number of acceleration samples that equals cero //if this number exceeds 25, we can assume that velocity is cero if (accelerationy[1]==0) county++; else county =0; //we do the same for the Y axis if (county>=25) velocityy[1]=0; velocityy[0]=0; /*****************************************************************************************/ /****************************************************************************************** This function transforms acceleration to a proportional position by integrating the acceleration data twice. It also adjusts sensibility by multiplying the "positionx" and "positiony" variables. This integration algorithm carries error, which is compensated in the "movenemt_end_check" subroutine. Faster sampling frequency implies less error but requires more memory. Keep in mind that the same process is applied to the X and Y axis. *****************************************************************************************/ void position(void) unsigned char count2 ; count2=0; do ADC_GetAllAxis(); accelerationx[1]=accelerationx[1] + Sample_X; //filtering routine for noise attenuation accelerationy[1]=accelerationy[1] + Sample_Y; //64 samples are averaged. The resulting 10 Freescale Semiconductor

11 //average represents the acceleration of //an instant count2++; while (count2!=0x40); // 64 sums of the acceleration sample accelerationx[1]= accelerationx[1]>>6; // division by 64 accelerationy[1]= accelerationy[1]>>6; accelerationx[1] = accelerationx[1] - (int)sstatex; //eliminating zero reference //offset of the acceleration data accelerationy[1] = accelerationy[1] - (int)sstatey; // to obtain positive and negative //acceleration if ((accelerationx[1] <=3)&&(accelerationx[1] >= -3)) //Discrimination window applied accelerationx[1] = 0; // to the X axis acceleration //variable if ((accelerationy[1] <=3)&&(accelerationy[1] >= -3)) accelerationy[1] = 0; //first X integration: velocityx[1]= velocityx[0]+ accelerationx[0]+ ((accelerationx[1] -accelerationx[0])>>1); //second X integration: positionx[1]= positionx[0] + velocityx[0] + ((velocityx[1] - velocityx[0])>>1); //first Y integration: velocityy[1] = velocityy[0] + accelerationy[0] + ((accelerationy[1] -accelerationy[0])>>1); //second Y integration: positiony[1] = positiony[0] + velocityy[0] + ((velocityy[1] - velocityy[0])>>1); accelerationx[0] = accelerationx[1]; //The current acceleration value must be sent //to the previous acceleration accelerationy[0] = accelerationy[1]; //variable in order to introduce the new //acceleration value. velocityx[0] = velocityx[1]; velocityy[0] = velocityy[1]; //Same done for the velocity variable positionx[1] = positionx[1]<<18; //is a sensibility adjustment. positiony[1] = positiony[1]<<18; //particular situation data_transfer(); positionx[1] = positionx[1]>>18; positiony[1] = positiony[1]>>18; //The idea behind this shifting (multiplication) //Some applications require adjustments to a //i.e. mouse application //once the variables are sent them must return to //their original state movement_end_check(); positionx[0] = positionx[1]; positiony[0] = positiony[1]; //actual position data must be sent to the //previous position direction = 0; // data variable to direction variable reset /*****************************************************************************************/ Freescale Semiconductor 11

12 SCHEMATIC CONCLUSIONS This application note provides the basic concepts for implementing a positioning algorithm using accelerometers. This specific algorithm is useful in situations where displacement precision is not extremely critical. Other considerations and implications specific to the application should be considered when implementing this example application. This integration algorithm is suitable for low end embedded applications because of its simplicity and small amount of instructions. It also does not involve any floating point calculations. REFERENCES Refer to the following documents for product information MC9S08QG8 Technical Data Sheet MMA7260Q Technical Data Sheet 12 Freescale Semiconductor

Measuring Tilt with Low-g Accelerometers

Freescale Semiconductor Application Note Rev 0, 05/2005 Measuring Tilt with Low-g s by: Michelle Clifford and Leticia Gomez Sensor Products, Tempe, AZ INTRODUCTION This application note describes how accelerometers

etpu Host Interface by:

Freescale Semiconductor Application Note AN2821 Rev. 2, 08/2007 etpu Host Interface by: David Paterson Ming Li MCD Applications 1 Introduction This application note discusses the enhanced Time Processing

Blood Pressure Monitor Using Flexis QE128 Gabriel Sanchez RTAC Americas

Freescale Semiconductor Application Note Document Number: AN3500 Rev. 0, 08/2007 Blood Pressure Monitor Using Flexis QE128 by: Gabriel Sanchez RTAC Americas 1 Introduction Product designers and developers

Connecting Low-Cost External Electrodes to MED-EKG

Freescale Semiconductor Document Number: AN4223 Application Note Rev. 0, 11/2010 Connecting Low-Cost External Electrodes to MED-EKG by: Carlos Casillas RTAC Americas Guadalajara Mexico 1 Introduction This

IRTC Compensation and 1 Hz Clock Generation

Freescale Semiconductor Document Number: AN4257 Application Note Rev. 0, January 2011 IRTC Compensation and 1 Hz Clock Generation by: Derek Liu Applications Engineering Shanghai 1 Introduction The MC9S08GW64

Local Interconnect Network (LIN) Physical Interface

Freescale Semiconductor Engineering Bulletin EB215 Rev. 1.0, 03/2005 Local Interconnect Network (LIN) Physical Interface Difference Between MC33399 and MC33661 Introduction This engineering bulletin highlights

Handling Freescale Pressure Sensors

Freescale Semiconductor Application Note Rev 3, 11/2006 Handling Freescale Pressure by: William McDonald INTRODUCTION Smaller package outlines and higher board densities require the need for automated

Windows 7: Using USB TAP on a Classic CodeWarrior Installation (MGT V9.2 DSC V8.3)

Freescale Semiconductor Document Number: AN4338 Application Note Rev. 1.0, 12/2011 Windows 7: Using USB TAP on a Classic CodeWarrior Installation (MGT V9.2 DSC V8.3) Technical Information & Commercial

MSC8122 and MSC8126 Power Circuit Design Recommendations and Examples

Freescale Semiconductor Application Note AN2937 Rev. 2, 12/2007 MSC8122 and MSC8126 Power Circuit Design Recommendations and Examples by Moty Groissman and Boaz Kfir This application note discusses recommendations

Software Real Time Clock Implementation on MC9S08LG32

Freescale Semiconductor Document Number: AN4478 Rev. 0, 03/2012 Software Real Time Clock Implementation on MC9S08LG32 by: Nitin Gupta Automotive and Industrial Solutions Group 1 Introduction The MC9S08LG32

Freescale Embedded GUI Converter Utility 2.0 Quick User Guide

Freescale Semiconductor User Guide Document Number: EGUICUG Rev. 1, 08/2010 Freescale Embedded GUI Converter Utility 2.0 Quick User Guide 1 Introduction The Freescale Embedded GUI Converter Utility 2.0

Building a Project using IAR Eclipse Plugin Processor Expert Microcontrollers Driver Suite

Freescale Semiconductor Document Number: AN4819 Application Note Rev. 1, 10/2013 Building a Project using IAR Eclipse Plugin Processor Expert Microcontrollers Driver Suite Processor Expert Microcontrollers

Installation of the MMA955xL CodeWarrior Service Pack Author: Fengyi Li Application Engineer

Freescale Semiconductor Application Note Document Number: AN4128 Rev. 0, 10/2011 Installation of the MMA955xL CodeWarrior Service Pack Author: Fengyi Li Application Engineer 1 Overview The Freescale MMA955xL

Initializing the TSEC Controller

Freescale Semiconductor Application Note Document Number: AN2925 Rev. 0, 11/2005 Initializing the TSEC Controller by Ahsan Kabir Digital Systems Division Freescale Semiconductor, Inc. Austin, TX This application

How to install and run Classic CodeWarrior products on 64-bit Windows 7 PC

Freescale Semiconductor How to install and run Classic CodeWarrior products on 64-bit Windows 7 PC Classic CodeWarrior products were built and delivered prior to the release of Windows 7 host OS, but it

Programming Audio Applications in the i.mx21 MC9328MX21

Freescale Semiconductor Application Note Document Number: AN2628 Rev. 1, 10/2005 Programming Audio Applications in the MC9328MX21 by: Alfred Sin 1 Abstract The MC9328MX21 () processor has two dedicated

Understanding LCD Memory and Bus Bandwidth Requirements ColdFire, LCD, and Crossbar Switch

Freescale Semiconductor Application Note Document Number: AN3606 Rev. 0, 03/2008 Understanding LCD Memory and Bus Bandwidth Requirements ColdFire, LCD, and Crossbar Switch by: Melissa Hunter TSPG Applications

Improving Embedded Software Test Effectiveness in Automotive Applications

Improving Embedded Software Test Effectiveness in Automotive Applications Author, D Brook Document Number: CODETESTTECHWP Rev. 0 11/2005 As the automotive industry introduces more and more safety-critical,

Freescale Semiconductor. Integrated Silicon Pressure Sensor. On-Chip Signal Conditioned, Temperature Compensated and Calibrated MPX4080D.

Freescale Semiconductor Integrated Silicon Pressure Sensor + On-Chip Signal Conditioned, Temperature Compensated and Calibrated The series piezoresistive transducer is a state-of-the-art monolithic silicon

Using the Programmable Interrupt Timer on the MCF5213 ColdFire Microcontroller Alfonso Gonzalez Daniel Torres RTAC Americas

Freescale Semiconductor Application Note Document Number: AN3400 Rev. 1, 09/2007 Using the Programmable Interrupt Timer on the MCF5213 ColdFire Microcontroller by: Alfonso Gonzalez Daniel Torres RTAC Americas

User Interface Design using CGI Programming and Boa Web Server on M5249C3 Board

Freescale Semiconductor Application Note AN3238 Rev. 0, 02/2006 User Interface Design using CGI Programming and Boa Web Server on M5249C3 Board by: H.K. Au MCD Applications 1 Introduction This application

Connecting to an SMTP Server Using the Freescale NanoSSL Client

Freescale Semiconductor Document Number: AN4363 Application Note Rev. 0, 10/2011 Connecting to an SMTP Server Using the Freescale NanoSSL Client by: Paolo Alcantara Microcontroller Solutions Group 1 Introduction

How to Convert 3-Axis Directions and Swap X-Y Axis of Accelerometer Data within Android Driver by: Gang Chen Field Applications Engineer

Freescale Semiconductor Application Note Document Number: AN4317 Rev. 0, 08/2011 How to Convert 3-Axis Directions and Swap X-Y Axis of Accelerometer Data within Android Driver by: Gang Chen Field Applications

Using WinUSB in a Visual Studio Project with Freescale USB device controller

Freescale Semiconductor Document Number: AN4378 Application Note Rev. 0, 10/2011 Using WinUSB in a Visual Studio Project with Freescale USB device controller by: Paolo Alcantara Microcontroller Solutions

A Single-Phase Energy Meter with Capacitive Power Supply and Shunts

Freescale Semiconductor Application Note Document Number: AN4164 Rev. 1, 09/2010 A Single-Phase Energy Meter with Capacitive Power Supply and Shunts by: Neeraj Mangla Microcontroller Solutions Group Noida

PowerQUICC II Pro (MPC83xx) PCI Agent Initialization

Freescale Semiconductor Application Note Document Number: AN3373 Rev. 0, 04/2007 PowerQUICC II Pro (MPC83xx) PCI Agent Initialization by: David Smith Field Application Engineering Raleigh, NC In many designs,

Performance Monitor on PowerQUICC II Pro Processors

Freescale Semiconductor Application Note Document Number: AN3359 Rev. 0, 05/2007 Performance Monitor on PowerQUICC II Pro Processors by Harinder Rai Network Computing Systems Group Freescale Semiconductor,

Flap Motor Control Based On HVAC Platform

Freescale Semiconductor Document Number:AN4616 Application Note Rev. 0, 10/2012 Flap Motor Control Based On HVAC Platform by: Shawn Shi, Albert Chen, Alex Liu 1 Introduction According to the world market

Cyclic Redundant Checker Calculation on Power Architecture Technology and Comparison of Big-Endian Versus Little-Endian

Freescale Semiconductor Document Number:AN4657 Application Note Rev. 0, 01/2013 Cyclic Redundant Checker Calculation on Power Architecture Technology and Comparison of Big-Endian Versus Little-Endian by:

Exploring Embedded C Programming

Laboratory Short Course Exploring Embedded C Programming www.freescale.com/universityprograms Freescale and the Freescale logo are trademarks of Freescale Semiconductor, Inc. All other product or service

Data Movement Between Big-Endian and Little-Endian Devices

Freescale Semiconductor Application Note AN2285 Rev. 2.2, 3/2008 Data Movement Between Big-Endian and Little-Endian Devices by Kyle Aubrey, Field Technical Leader Ashan Kabir, System Engineering Freescale

Flexible Active Shutter Control Interface using the MC1323x

Freescale Semiconductor Document Number: AN4353 Application Note Rev. 0, 9/2011 Flexible Active Shutter Control Interface using the MC1323x by: Dennis Lui Freescale Hong Kong 1 Introduction This application

General Purpose Amplifier and MMIC Biasing

Application Note Rev. 3, 3/2011 General Purpose Amplifier and MMIC Biasing INTRODUCTION s GaAs MMICs and General Purpose Amplifier (GPA) devices are all designed to operate from a single positive voltage

Point-of-Sale (POS) Users Guide Lech José Olmedo Guerrero Jaime Herrerro Gallardo RTAC Americas

Freescale Semiconductor Users Guide Document Number: POSUG Rev. 0, 03/2007 Point-of-Sale (POS) Users Guide by: Lech José Olmedo Guerrero Jaime Herrerro Gallardo RTAC Americas 1 Introduction This quick

Understanding Pressure and Pressure Measurement

Freescale Semiconductor Application Note Rev 1, 05/2005 Understanding Pressure and Pressure Measurement by: David Heeley Sensor Products Division, Phoenix, Arizona INTRODUCTION Fluid systems, pressure

Freescale Semiconductor. Integrated Silicon Pressure Sensor. On-Chip Signal Conditioned, Temperature Compensated and Calibrated MPX5500.

Freescale Semiconductor Integrated Silicon Pressure Sensor + On-Chip Signal Conditioned, Temperature Compensated and Calibrated Series Pressure Rev 7, 09/2009 0 to 500 kpa (0 to 72.5 psi) 0.2 to 4.7 V

MC13783 Buck and Boost Inductor Sizing

Freescale Semiconductor Application Note Document Number: AN3294 Rev. 0.1, 01/2010 MC13783 Buck and Boost Inductor Sizing by: Power Management Application Team 1 Introduction The purpose of this application

Real Time Development of MC Applications using the PC Master Software Visualization Tool. 1. Introduction. 2. Development of Motor Control.

Freescale Semiconductor Application Note AN1948 Rev. 1, 11/2005 Real Time Development of MC Applications using the PC Master Software Visualization Tool The PC Master Software Visualization Tool Simplifies

Selecting L and C Components in the Power Stage of the MC34700 Switching Regulators

Freescale Semiconductor Application Note AN4067 Rev. 1.0, 11/010 Selecting and C Components in the Power Stage of the MC34700 Switching Regulators By: Giuseppe Maimone Field Applications Engineer 1 ntroduction

Circuit Design 2 Circuit Design The oscillator design on i.mx processors is known as the Colpitts Oscillator with Translated ground, illustrated in Fi

Freescale Semiconductor Application Note Document Number: AN2500 Rev. 1, 07/2005 Using the 16 MHz Crystal Oscillator MC9328MX1, MC9328MXL, and MC9328MXS By Connie Cheung and Michael Kjar 1 Abstract The

3-Phase BLDC Motor Control with Hall Sensors Using 56800/E Digital Signal Controllers

Freescale Semiconductor Application Note AN1916 Rev. 2.0, 11/2005 3-Phase BLDC Motor Control with Hall Sensors Using 56800/E Digital Signal Controllers Leonard N. Elevich Contents 1. Application Benefits...1

Hardware Configurations for the i.mx Family USB Modules

Freescale Semiconductor Application Note Document Number: AN4136 Rev. 0, 06/2010 Hardware Configurations for the i.mx Family USB Modules by Multimedia Applications Division Freescale Semiconductor, Inc.

Using the Performance Monitor Unit on the e200z760n3 Power Architecture Core

Freescale Semiconductor Document Number: AN4341 Application Note Rev. 1, 08/2011 Using the Performance Monitor Unit on the e200z760n3 Power Architecture Core by: Inga Harris MSG Application Engineering

MPC8245/MPC8241 Memory Clock Design Guidelines: Part 1

Freescale Semiconductor AN2164 Rev. 4.1, 03/2007 MPC8245/MPC8241 Memory Clock Design Guidelines: Part 1 by Esther C. Alexander RISC Applications, CPD Freescale Semiconductor, Inc. Austin, TX This application

MCF54418 NAND Flash Controller

Freescale Semiconductor Application Note Document Number: AN4348 Rev. 0, 09/2011 MCF54418 NAND Flash Controller by: Liew Tsi Chung Applications Engineer 1 Introduction The ColdFire MCF5441x family is the

PRELIMINARY. High Accuracy Low g Inertial Sensor MMA6700EG MMA6701EG. Freescale Semiconductor Technical Data. MEMS Sensing, State Machine ASIC

Freescale Semiconductor Technical Data High Accuracy Low g Inertial Sensor MEMS Sensing, State Machine ASIC The series is a dual axis, Low g, XYaxis sensor based on Freescale s HARMEMS technology with

Porting etpu Code to the Freescale etpu Build Tools

Freescale Semiconductor Porting etpu Code to the Freescale etpu Build Tools Document ID: ETPUPORTCODE Rev. 0.1, 08/2010 Porting etpu Code to the Freescale etpu Build Tools 1 Overview This guide takes you

Correcting Single-bit Errors with CRC8 in ATM Cell Headers

Freescale Semiconductor Application Note Document Number: AN2918 Rev. 0, 06/2005 Correcting Single-bit Errors with CRC8 in ATM Cell Headers by Bo Lin Computing Platform Division Freescale Semiconductor,

Introducing the e5500 Core The next core evolution in the QorIQ family of communications platforms

Introducing the e5500 Core The next core evolution in the QorIQ family of communications platforms Document Number: 64BTTCHNLGYWP Rev 0 1 Introduction Welcome to the next generation of Power Architecture

USB HID bootloader for the MC9S08JM60

Freescale Semiconductor Document Number: AN4252 Application Note Rev. 0, 4/2011 USB HID bootloader for the MC9S08JM60 by: Derek Lau System and Solution Engineering, Microcontroller Solutions Group Hong

Techniques and Tools for Software Analysis

Techniques and Tools for Software Analysis Freescale Semiconductor Document Number: CODETESTTECHWP Rev. 0 11/2005 Understanding how software development can be optimized through the use of software analysis

MPC8260 Hardware Configuration Sequence initializes the 82xx. Upon deassertion of POR, the 82xx reads the state of ~RSTCONF. If ~RSTCONF is detected a

Freescale Semiconductor Application Note AN2349 Rev. 1, 11/2004 MPC8260 Reset and Configuration Word by Paul Genua, P.E. NCSG Field Applications Freescale Semiconductor, Inc. This application note describes

VGA Output using TV-Out Extension Solution i.mx21

Freescale Semiconductor Application Note Document Number: AN3378 Rev. 0, 11/2006 VGA Output using TV-Out Extension Solution i.mx21 by: Tatiana Orofino 1 Abstract Freescale first thought of a TV-Out Extension

Freescale Semiconductor. Integrated Silicon Pressure Sensor, On-Chip Signal Conditioned, Temperature Compensated and Calibrated MP3V5004G.

Freescale Semiconductor Integrated Silicon Pressure Sensor, On-Chip Signal Conditioned, Temperature Compensated and Calibrated The series piezoresistive transducer is a state-of-the-art monolithic silicon

Generate Makefiles from Command Line Support in Eclipse-Based CodeWarrior Software

Freescale Semiconductor Document Number: AN4272 Application Note Rev. 0, 03/2011 Generate Makefiles from Command Line Support in Eclipse-Based CodeWarrior Software by Devtech Customer Engineering Freescale

Low-Power CMOS Ionization Smoke Detector IC with Interconnect

Freescale Semiconductor Technical Data Low-Power CMOS Ionization Smoke Detector IC with Interconnect The, when used with an ionization chamber and a small number of external components, will detect smoke.

Mapping Memory Resources on HCS12 Microcontrollers

Freescale Semiconductor Application Note AN2881 Rev. 0, 1/2005 Mapping Memory Resources on HCS12 Microcontrollers by: Luis Reynoso Covarrubias RTAC Americas Mexico 2004 Introduction This document is intended

Using eflexpwm Module for ADC Synchronization in MC56F82xx and MC56F84xx Family of Digital Signal Controllers

Freescale Semiconductor Document Number:AN4675 Application Note Rev. 0, 01/2013 Using eflexpwm Module for ADC Synchronization in MC56F82xx and MC56F84xx Family of Digital Signal Controllers by: Pavel Grasblum

Using the CodeWarrior Diff Tool

Freescale Semiconductor Application Note Document Number: AN4421 Using the CodeWarrior Diff Tool 1. Introduction CodeWarrior for Microcontrollers v10.x leverages the features of the Eclipse framework and

PMSM Electrical Parameters Measurement

Freescale Semiconductor Document Number:AN4680 Application Note Rev. 0, 02/2013 PMSM Electrical Parameters Measurement by: Viktor Bobek 1 Introduction The vector control, also known as the field-oriented

Using Program Memory As Data Memory. 1. Introduction. 2. 56800 Program Memory and Data. Contents. Memory. Freescale Semiconductor Application Note

Freescale Semiconductor Application Note AN1952 Rev. 0, 9/2005 Using Program Memory As Data Memory William Jiang 1. Introduction Microcontrollers with Harvard architecture have separate program and data

Software Marketing, Embedded Real-Time Solutions

Software Marketing, Embedded Real-Time Solutions Author, Katie Smith Document Number: BARRIERSWP Rev. 0 11/2005 The current economic climate is adding to the increasing pressure being experienced in new

Efficient Low-Level Software Development for the i.mx Platform

Freescale Semiconductor Application Note Document Number: AN3884 Rev. 0, 07/2009 Efficient Low-Level Software Development for the i.mx Platform by Multimedia Applications Division Freescale Semiconductor,

Touch-Controlled Lamp

Freescale Semiconductor Application Note Document Number: AN386 Rev. 0, 03/009 Touch-Controlled Lamp Application Description by: Stanislav Arendárik, Freescale Application Engineer, Roznov, Czech Republic

MPXAZ6115A MPXHZ6115A SERIES. Freescale Semiconductor Technical Data. MPXAZ6115A Rev 4, 01/2007

Freescale Semiconductor Technical Data Media Resistant and High Temperature Accuracy Integrated Silicon Pressure Sensor for Measuring Absolute Pressure, On-Chip Signal Conditioned, Temperature Compensated

i.mx233 CPU and HCLK Power Saving Features

Freescale Semiconductor Application Note Document Number: AN4050 Rev. 0, 01/2010 i.mx233 CPU and HCLK Power Saving Features by Multimedia Applications Division Freescale Semiconductor, Inc. Austin, TX

Freescale Semiconductor, I

nc. SEMICONDUCTOR APPLICATION NOTE ARCHIVED BY FREESCALE SEMICONDUCTOR, INC. 00 Order this document by AN8/D by: Eric Jacobsen and Jeff Baum Systems Engineering Group Sensor Products Division Motorola

SEMICONDUCTOR TECHNICAL DATA

SEMICONDUCTOR TECHNICAL DATA Order this document by MPX5050/D The MPX5050 series piezoresistive transducer is a state of the art monolithic silicon pressure sensor designed for a wide range of applications,

Using XGATE to Implement LIN Communication on HCS12X Daniel Malik 8/16-Bit Products Division East Kilbride, Scotland

Freescale Semiconductor Application Note Document Number: AN2732 Rev. 0, 05/2004 Using XGATE to Implement LIN Communication on HCS12X By Daniel Malik 8/16-Bit Products Division East Kilbride, Scotland

Detecting a CPM Overload on the PowerQUICC II

Freescale Semiconductor Application Note Document Number: AN2547 Rev. 1, 11/2006 Detecting a CPM Overload on the PowerQUICC II by Qiru Zou NCSD Applications Freescale Semiconductor, Inc. Austin, TX This

Configuring the FlexTimer for Position and Speed Measurement with an Encoder

Freescale Semiconductor Application Note Document Number: AN4381 Rev. 0, 12/2011 Configuring the FlexTimer for Position and Speed Measurement with an Encoder by: Matus Plachy System Application Engineer,

Noise Considerations for Integrated Pressure Sensors

Freescale Semiconductor Application Note Rev 2, 05/2005 Noise Considerations for Integrated Pressure by: Ador Reodique, Sensor and Systems Applications Engineering and Warren Schultz, Field Engineering

1 Introduction. Freescale Semiconductor Application Note. Document Number: AN3031 Rev. 1, 04/2010

Freescale Semiconductor Application Note Document Number: AN3031 Rev. 1, 04/2010 Temperature Sensor for the HCS08 Microcontroller Family by: Donnie Garcia MCD Applications, Austin, Texas Rafael Peralez

NOT RECOMMENDED FOR NEW DESIGN

Technical Data RF Power Field Effect Transistor N- Channel Enhancement- Mode Lateral MOSFET Designed for broadband commercial and industrial applications with frequencies up to 00 MHz. The high gain and

User Guide. Introduction. HCS12PLLCALUG/D Rev. 0, 12/2002. HCS12 PLL Component Calculator

User Guide HCS12PLLCALUG/D Rev. 0, 12/2002 HCS12 PLL Component Calculator by Stuart Robb Applications Engineering Motorola, East Kilbride Introduction The MC9S12D amily o MCUs includes a Phase-Locked Loop

Ref Parameters Symbol Conditions Min Typ Max Units. Standby 3.5 10 μa. 3 Range 50 115 kpa. 4 Resolution 0.15 kpa. 5 Accuracy -20ºC to 85ºC ±1 kpa

Freescale Semiconductor Miniature I 2 C Digital Barometer The is an absolute pressure sensor with digital output for low cost applications. A miniature 5 x 3 x 1.2 mm LGA package ideally suits it for portable

MLPPP in the Evolving Radio Access Network

Freescale Semiconductor White Paper Document Number: MLPPPWP Rev. 0, 09/2010 MLPPP in the Evolving Radio Access Network by Networking and Multimedia Group Freescale Semiconductor, Inc. East Kilbride, Scotland

NOT RECOMMENDED FOR NEW DESIGN

Technical Data RF Power Field Effect Transistor N-Channel Enhancement-Mode Lateral MOSFET Designed for broadband commercial and industrial applications with frequencies up to 00 MHz. The high gain and

Enhanced Serial Interface Mapping

Freescale Semiconductor Application Note Document Number: AN3536 Rev. 1, 11/2007 Enhanced Serial Interface Mapping 16 E1/T1 QUICC Engine Solution for TDM Connectivity by Netcomm Applications Networking

Liquid Level Control Using a Pressure Sensor

Freescale Semiconductor Application Note Rev 4, 05/2005 Liquid Level Control Using a Pressure Sensor by: J.C. Hamelain Toulouse Pressure Sensor Laboratory INTRODUCTION Discrete Products provide a complete

Design Microwave Oven Using S08PT Family

Freescale Semiconductor Document Number:AN4596 Application Note Rev. 0, 10/2012 Design Microwave Oven Using S08PT Family by: Dennis Lui and T.C. Lun 1 Introduction Safety design consideration is one of

An RF Data Link Using Tango3 and Romeo2 RF Modules

Freescale Semiconductor Application Note AN2783 Rev. 0, 8/2004 An RF Data Link Using Tango3 and Romeo2 RF Modules by: John Logan 8/16-bit Division East Kilbride Introduction This document describes the

Motion and Freefall Detection Using the MMA8451, 2, 3Q

Freescale Semiconductor Application Note Document Number: Rev 1, 10/2011 Motion and Freefall Detection Using the MMA8451, 2, 3Q by: Kimberly Tuck Applications Engineer 1.0 Introduction The MMA8451, 2,

Genesi Pegasos II Setup

Freescale Semiconductor Application Note AN2666 Rev. 0, 07/2004 Genesi Pegasos II Setup by Maurie Ommerman CPD Applications Freescale Semiconductor, Inc. Austin, TX This application note is the first in

Using the High Input Voltage Charger for Single Cell Li-Ion Batteries (KIT34671EPEVBE)

Freescale Semiconductor User s Guide Document Number: KT3467UG Rev..0, 3/008 Using the High Input Voltage Charger for Single Cell Li-Ion Batteries (KIT3467EPEVBE) Purpose This User Guide helps the Lithium-Ion

Using the HC08 SCI Module

Freescale Semiconductor Application Note AN3035 Rev. 0, 09/2005 Using the HC08 SCI Module By Jorge Zambada Tinoco Oscar Luna González RTAC Americas Mexico 2005 Overview This document is intended to serve

Using the Kinetis Security and Flash Protection Features

Freescale Semiconductor Document Number:AN4507 Application Note Rev. 1, 6/2012 Using the Kinetis Security and Flash Protection Features by: Melissa Hunter Automotive and Industrial Solutions Group 1 Introduction

Active Cell Balancing in Battery Packs Stanislav Arendarik Rožnov pod Radhoštem, Czech Republic

Freescale Semiconductor Application Note Document Number: AN4428 Rev. 0, 1/2012 Active Cell Balancing in Battery Packs by: Stanislav Arendarik Rožnov pod Radhoštem, Czech Republic 1 Introduction Batteries

Theory 1 Theory Current flash devices use a common method for preventing unintentional programming. A specific sequence of write cycles must precede e

Freescale Semiconductor Application Note AN2980 1/2006 Troubleshooting the CodeWarrior Flash Programmer By Ron Collins It is possible that the CodeWarrior flash programmer does not recognize the flash

Freescale Semiconductor. Integrated Silicon Pressure Sensor

Freescale Semiconductor Rev 7, 1/2009 Integrated Silicon Sensor + Manifold Absolute Sensor On-Chip Signal Conditioned, Temperature Compensated and Calibrated The series Manifold Absolute (MAP) sensor for

ORDERING INFORMATION # of Ports Pressure Type Device Name

Freescale Semiconductor 10 kpa On-Chip Temperature + Compensated and Calibrated Silicon Pressure The series silicon piezoresistive pressure sensors provide a very accurate and linear voltage output directly

MPXAZ6115A MPXHZ6115A SERIES. Freescale Semiconductor Technical Data. MPXAZ6115A Rev 3, 06/2005

Freescale Semiconductor Technical Data Media Resistant and High Temperature Accuracy Integrated Silicon Pressure Sensor for Measuring Absolute Pressure, On-Chip Signal Conditioned, Temperature Compensated

VLE 16-bit and 32-bit Instruction Length Decode Algorithm

Freescale Semiconductor Document Number: AN4648 Application Note Rev. 1, 3/2013 VLE 16-bit and 32-bit Instruction Length Decode Algorithm by: Pavel Bohacik 1 Introduction The Qorivva MPC56xx 32-bit microcontroller

EVERSPIN s New 2mm Exposed Pad DFN Package Meets Both SOIC-8 and DFN8 PCB Layouts

EVERSPIN s New 2mm Exposed Pad DFN Package Meets Both SOIC-8 and DFN8 PCB Layouts This Application Note is to inform Everspin customers that a new, DFN8 package with a 2mm bottom exposed pad has been added

Freescale Variable Key Security Protocol Transmitter User s Guide by: Ioseph Martínez and Christian Michel Applications Engineering - RTAC Americas

Freescale Semiconductor User s Guide VKSPTXUG Rev. 0, 06/2008 Freescale Variable Key Security Protocol Transmitter User s Guide by: Ioseph Martínez and Christian Michel Applications Engineering - RTAC

Emulated EEPROM Implementation in Dual Flash Architecture on MC9S08LG32 With Demo Description

Freescale Semiconductor Application Note Document Number: AN3822 Rev. 0, 2/2009 Emulated EEPROM Implementation in Dual Flash Architecture on MC9S08LG32 With Demo Description by: Saurabh Jhamb Reference