University Programs Knowledge Base

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

University Programs Knowledge Base

Discussions

Sort by:
What is a microcontroller (MCU)? A microcontroller includes a microprocessor (CPU) as well as a number of other components like RAM, flash and EEPROM to store your programs and constants. While a microprocessor requires external devices to control things like input/output, or timers to implement periodic tasks, and digital to analog converters, a microcontroller is all inclusive. Contrast this all-in-one approach with a typical personal computer which contains an INTEL or AMD CPU, as well as separate chips for RAM, a separate video card, a dedicated hard drive, silicon chips or PCI circuit boards to enable the processor to access USB, serial and video card signals Microcontroller pins are general purpose, whereas CPU pins are specific. This means that each pin is tied to a multiplexer which you must set to choose the particular use for the pin. For example, in a microcontroller, one pin pin might be re-purposed for the following tasks 1. The output of a timer 2. Send a signal to a motor 3. Receive an input from a sensor or analog device
View full article
This tutorial will introduce you to I 2 C and provide a framework that you can use to start communicating with various devices that use I 2 C. This tutorial is meant for the Kinetis K40 and will probably not work on any other Kinetis chip. DISCLAIMER: This has not been fully tested and may not work for you and for all devices. The header file provided does not handle errors and should not be used for critical projects. 2C signaling I2C header file Example of I2C communication using Freescale MMA8452Q 3-axis accelerometer Introduction to I 2 C signaling I 2 C is a simple two wire communication system used to connect various devices together, such as Sensory devices and microprocessors using 8 bit packets. I 2 C requires two wires: the first is called SDA and is used for transferring data, the second is called SCL and it is the clock used to drive the data to and from devices. I 2 C uses an open drain design which requires a pull up resistor to logic voltage (1.8,3.3,5) on both SDA and SCL for proper operation. I 2 C is a master-slave system where the master drives the clock and initiates communication. The I 2 C protocol has 5 parts. The Start signal which is defined as pulling the SDA line low followed by pulling SCL low. The slave device address including the Read/Write bit The register address that you will be writing to/ reading from the data The acknowledgement signal which is sent from the receiving device after 8 bits of data has been transferred successfully. the Stop signal, which is defined by SDA going high before SCL goes high. 1. The start signal is sent from the Master to intiate communication on the bus. The start and stop signals are the only time that SDA can change out of sync with SCL. Once the start signal is sent no other device can talk on the bus until the stop signal is sent. If for whatever reason another device tries to talk on the bus then there will be an error and the K40 can detect this. 2. The slave device is a 7 bit (sometimes 10bit but this will not be covered in this tutorial) address provided by the device and is specific to the device. The type of data operation (read/write) is determined by the 8 th bit. A 1 will represent a write and a 0 a read operation. 3. The register addresses are provided by the device's specifications. 4. The data you will send to a device if you are writing or the data that you receive from the device when reading. This will always be 8 bits. 5. After 8 bits of data has been transferred successfully the receiving device will pull the SDA line low to signify that it received the data. If the transmitting device does not detect an acknowledgement then there will be an error. The K40 will be able to detect this. 6. The stop signal is sent from the Master to terminate communication on the bus. Some devices require this signal to operate properly but it is required if there will be more than one master on the bus (which will not be covered in this tutorial) I2C header file This header file only has functions for reading and writing one byte at a time. Most devices support reading and writing more than one byte at a time without sending the Stop signal. Typically the device will keep incrementing the register's address to the next one during read/writes when there is no stop signal present. See your device's user manual for more information. /* * i2c.h * * Created on: Apr 5, 2012 * Author: Ian Kellogg  * Credits: Freescale for K40-I2C example */  #ifndef I2C_H_  #define I2C_H_  #include "derivative.h"  #define i2c_EnableAck() I2C1_C1 &= ~I2C_C1_TXAK_MASK #define i2c_DisableAck() I2C1_C1 |= I2C_C1_TXAK_MASK  #define i2c_RepeatedStart() I2C1_C1 |= I2C_C1_RSTA_MASK  #define i2c_Start() I2C1_C1 |= I2C_C1_TX_MASK;\    I2C1_C1 |= I2C_C1_MST_MASK  #define i2c_Stop() I2C1_C1 &= ~I2C_C1_MST_MASK;\    I2C1_C1 &= ~I2C_C1_TX_MASK  #define i2c_EnterRxMode() I2C1_C1 &= ~I2C_C1_TX_MASK;\    I2C1_C1 |= I2C_C1_TXAK_MASK  #define i2c_write_byte(data) I2C1_D = data  #define i2c_read_byte() I2C1_D  #define MWSR 0x00 /* Master write */  #define MRSW 0x01 /* Master read */  /* * Name: init_I2C * Requires: nothing * Returns: nothing * Description: Initalizes I2C and Port E for I2C1 as well as sets the I2C bus clock */  void init_I2C()  {    SIM_SCGC4 |= SIM_SCGC4_I2C1_MASK; //Turn on clock to I2C1 module    SIM_SCGC5 |= SIM_SCGC5_PORTE_MASK; // turn on Port E which is used for I2C1    /* Configure GPIO for I2C1 function */    PORTE_PCR1 = PORT_PCR_MUX(6) | PORT_PCR_DSE_MASK;    PORTE_PCR0 = PORT_PCR_MUX(6) | PORT_PCR_DSE_MASK;    I2C1_F = 0xEF; /* set MULT and ICR This is roughly 10khz See manual for different settings*/    I2C1_C1 |= I2C_C1_IICEN_MASK; /* enable interrupt for timing signals*/  }  /* * Name: i2c_Wait * Requires: nothing * Returns: boolean, 1 if acknowledgement was received and 0 elsewise  * Description: waits until 8 bits of data has been transmitted or recieved */  short i2c_Wait() {    while((I2C1_S & I2C_S_IICIF_MASK)==0) {    }     // Clear the interrupt flag    I2C1_S |= I2C_S_IICIF_MASK;  }  /* * Name: I2C_WriteRegister * Requires: Device Address, Device Register address, Data for register * Returns: nothing * Description: Writes the data to the device's register */  void I2C_WriteRegister (unsigned char u8Address, unsigned char u8Register, unsigned char u8Data) {    /* shift ID in right position */    u8Address = (u8Address << 1)| MWSR;    /* send start signal */    i2c_Start();    /* send ID with W/R bit */    i2c_write_byte(u8Address);    i2c_Wait();    // write the register address    i2c_write_byte(u8Register);    i2c_Wait();    // write the data to the register    i2c_write_byte(u8Data);    i2c_Wait();    i2c_Stop();  }  /* * Name: I2C_ReadRegister_uc * Requires: Device Address, Device Register address * Returns: unsigned char 8 bit data received from device * Description: Reads 8 bits of data from device register and returns it */  unsigned char I2C_ReadRegister_uc (unsigned char u8Address, unsigned char u8Register ){    unsigned char u8Data;    unsigned char u8AddressW, u8AddressR;    /* shift ID in right possition */    u8AddressW = (u8Address << 1) | MWSR; // Write Address    u8AddressR = (u8Address << 1) | MRSW; // Read Address    /* send start signal */    i2c_Start();    /* send ID with Write bit */    i2c_write_byte(u8AddressW);    i2c_Wait();    // send Register address    i2c_write_byte(u8Register);    i2c_Wait();    // send repeated start to switch to read mode    i2c_RepeatedStart();    // re send device address with read bit    i2c_write_byte(u8AddressR);    i2c_Wait();    // set K40 in read mode    i2c_EnterRxMode();    u8Data = i2c_read_byte();    // send stop signal so we only read 8 bits    i2c_Stop();    return u8Data;  }  /* * Name: I2C_ReadRegister * Requires: Device Address, Device Register address, Pointer for returned data * Returns: nothing * Description: Reads device register and puts it in pointer's variable */  void I2C_ReadRegister (unsigned char u8Address, unsigned char u8Register, unsigned char *u8Data ){    /* shift ID in right possition */    u8Address = (u8Address << 1) | MWSR; // write address    u8Address = (u8Address << 1) | MRSW; // read address    /* send start signal */    i2c_Start();    /* send ID with W bit */    i2c_write_byte(u8Address);    i2c_Wait();    // send device register    i2c_write_byte(u8Register);    i2c_Wait();    // repeated start for read mode    i2c_RepeatedStart();    // resend device address for reading    i2c_write_byte(u8Address);    i2c_Wait();    // put K40 in read mode    i2c_EnterRxMode();    // clear data register for reading    *u8Data = i2c_read_byte();    i2c_Wait();    // send stop signal so we only read 8 bits    i2c_Stop();    }  #endif  Example of I2C communication using Freescale MMA8452Q 3-axis accelerometer This example is very simplistic and will do nothing more than read the WHO AM I register to make sure that I 2 C is working correctly. To see more check out the Freescale MMA8452Q Example /* Main. C */ #include <stdio.h> #include "derivative.h" /* include peripheral declarations */ #include "i2c.h" int main(void) {      // checking the WHO AM I register is a great way to test if communication is working      // The MMA8452Q has a selectable address which is either 0X1D or 0X1C depending on the SA0 pin      // For the MMA8452Q The WHO AM I register should always return 0X2A      if (I2C_ReadRegister_uc (0x1D,0x0D) != 0x2A {           printf ("Device was not found\n");      } else {           printf ("Device was found! \n");      } }
View full article
Summary: This page contains the technical information for the FRDM-JAM shield.    This includes the Schematics, Bill of Materials (BOM),  Gerber Files and raw design files. See the attachments section.   There are 2 versions long this page.  Rev Gamma and Rev Delta. Rev Gamma:      This was the version for designed around the K20D50 FRDM board.   At the time of the design,  the FRDM-K64F did not exsist Rev Delta This version added IO connections to be able to use the FRDM-K64F.    The FRDM-K64F uses a different I2S pinout so a jumper had to be added as well as the QSPI RAM devices in Gamma had to be remove Other Special Notes about Rev Delta Rev Delta was design such that a FRDM-K64 could be used.      There is not yet firmware available but the hardware now allows connection to the K64F I2S interface. Rev Delta requires that J16 must be cut on the FRDM-K20D50 PCB.  There is a trace connecting the pads of J16 on the bottom side of the FRDM-K20D50.      This cut allows the audio transmit frame sync to work properly.   The signal INT2_ACCEL on the FRDM-K20D50 was interfering with the signal on the FRDM-JAM Rev Delta Introduced an I/O mapping bug.  IO Epsilon connects to PTC9 of the K20D50.     This also maps to the I2S RXD if using with the K64F and is also routed to PTC5 of the K20D50.     Do not use IO epsilon in your code unless you make the proper PCB modifications. Example software, video tutorials tutorials, cool demos, etc are location on the page for MonkeyJam project located here. MBED Support coming *very soon* Notes: You can order PCBs through OSHPark or your favorite board house.   There is a special .zip file with files ready to go for OSHPark (using their preferred naming convention). There is a complete design package which has the raw design files (Altium Designer Format) as well as gerbers,  a Bill of materials,  assembly plots etc.  Look in the "BUILD_PACKAGE" folder for the stuff needed to make the board. A PDF Schematic is also provided for easy reference. If you are interested in a low cost pre-fabbed board or a fully assembled version,  please leave a comment.  A kickstarter project may follow to get a bunch built!
View full article
This is the Academic Training that took place for Professors at Guadalajara.  Freescale Engineers provided this training that was detailed enough for the new Freescale technology users. Find below the slides, the presentation videos (in Spanish) and the lab tutorials with the CodeWarrior projects compressed in the attached file. Module Slides Training Videos in Spanish Lab Tutorial 2014 Training Slides DownloadAll Open SDA OPENSDA Flash a binary file OpenSDA Code Warrior 10.4 CodeWarrior10.4 CodeWarrior 10.4 CW Installation My first KL25 project CodeWarrior 10.x ARM Cortex M0+ ARM CortexM0+ ARM Cortex M0+ Cortex M0+ General Purpose Input Output Module GPIO GPIO GPIO GPIO Multipurpose Clock Generator Module MCG MCG MCG MCG Video Low Power Timer Module LPTMR LPTMR LPTMR LPTMR Timer PWM Module TPM Overflow   OutputCompare  PWM TPM Nested Vectored Interrupt Controller Module NVIC NVIC NVIC NVIC Universal Asynchronous Receiver/Transmitter Module UART UART UART UART Inter-Integrated Circuit Module I2C I2C I2C Analog to Digital Converter Module ADC ADC No Video ADC SampleCode If you have any question on suggestion, please comment below. Also available in the Faculty Portal
View full article
Video Highlights of 2012 Competition Photographs from the Freescale Cup Japan 2012 competition.
View full article
Lab exercise supporting the i.MX53QSB for Master Student level student prepared by massimoviolante from the Politecnico of Torino. Complete course file(s) restricted to verified faculty only.  Available for download in the Faculty-Portal
View full article
Freescale cup 2011 India....trials ... line follower
View full article
How to setup GPIO on the Kinetis. Includes discussion on enabled clocks to peripherals and setting up the pin control registers.
View full article
El presente proyecto busca solucionar de una manera práctica y divertida actividades de terapia que pueden ser parte de la vida de cada persona con necesidades especiales, especialmente infantes. Por medio de este proyecto se pretende desarrollar la memoria y el orden lógico. Utilizando un sensor óptico para la lectura de pequeños Cubos de colores, el carro donde será transportado el sensor óptico emitirá una nota musical, misma que dependerá del color del cubo. El equipo de trabajo está conformado por cuatro   estudiantes del Tecnologíco de Monterrey de primer semestre de la carrera de mecatronica.
View full article
This tutorial will discuss Timer Peripheral Modules, DC Motors, motor controllers, and configuration of your chip to output a PWM or Pulse Width Modulated Signal. The first section of this this tutorial provides the basics of DC (Direct Current) motors. The electronic circuits created to control these motors and schematics for PCBs, tips to reduce noise over important signals are also contained within this tutorial. Usage A dc-motor is an electrical device that converts energy into rotational movement. The motor moves a gear in one direction if current flows through the terminals (clockwise or counterclockwise), and in the opposite direction if current flows backwards through the same terminals. If there is a force opposing the motor, then the terminals are short circuited and the current through the terminals can go as high as 14 A or more. The voltage or current that must be delivered to the motor to work is too much for a microcontroller output port so an intermediary device must be used, such as the mc33932evb motor control board. Pulse Width Modulation (PWM) For a refresher in Pulse Width Modulation. Once you feel comfortable that you understand the concepts behind a duty cycle signal, you may move to the next step of understanding H bridge circuits. Circuit Amplification A microcontroller is typically not designed to directly drive DC motors.  Keep in mind MCU's are low-power devices and motors usually draw a lot of power.  So what is one to do?  Amplification!  There are lots of ways to do this and each has it's trade-offs.  Below are the most popular... Discrete Components A few MOSFETSs should do the trick.  This is a great learning exercise, you can probably get more oomph out of your circuit but it takes time to build and troubleshoot. If you search the web for motor driver board, you should find plenty of resources, designs, etc. Half-Bridge (aka H-bridge) These are integrated circuits with the aforementioned discrete components already configured for you.  Because these are integrated (into a very small footprint) these tend to be  power limited due to thermal issues.  Generally speaking, the better a device is at dissipating heat the more power it can handle. Get a basic view of H bridge circuit. Click here which describes H bridge circuits. DC Motor Describes how a DC motor works: here Microcontroller Reference Manual: Timer Information You will find high level information about Timer usage in several different areas of a reference manual. See the reference-manual article for more specific information on how best to navigate through to the areas which are relevant. Relevant Timer Chapters: Introduction: Human-machine interfaces - lists the memory map and register definitions for the GPIO System Modules: System Integration Modules (SIM) - provides system control and chip configuration registers Chip Configuration: Human-Machine interfaces (HMI). Signal Multiplexing: Port control and interrupts Human-Machine Interfaces: General purpose input/output Hardware Motor cup-car-motor: In testing the motor, we found that it drew between 0.35A and 0.5A with no load on the wheels and peaked at a little over 14A at stall. With this Data and 150% value for the H-Bridge or Motor Controller we need one with a current rating of 20A at least. The Motor has a Resistance between 0.9 and 1.0 ohm.  For motor control you can use the Freescale H-Bridge such as MC33931or MC33932, however these controllers peak at ~5 amps, so you will not be able to maximize speed Power & Current Requirements Additional Theory Training Resources Freescale Motor Control Tutorial Freescale Lecture 1: Introduction and Motor Basics Freescale Lecture 2: Pulse Width Modulaiton Freescale Lecture 3: Control Design Freesacle Lecture 4: Speed and Position Freescale Lecture 5: MPC5607B Overview
View full article
As a maker and a professional engineer I always try to keep up with new tools to tinker with.  Being a Freescaler I get especially jazzed about ones using our chips.  But, with so many fish in the sea it's hard to get the word out about all the options out there.  So for your viewing pleasure below is a list of up and coming "development boards" for both Makers and Professionals.  All of these boards use Freescale silicon, but the actual board/product is not made by Freescale.  Add comments below with anything I should be made aware of and any reviews or comments of the ones I mentioned. In the microcontrollers corner... Teensy 3.1 -Weighing in at 2.95 grams, don't be fooled by this one's size; it really packs a punch.  But the board is just the beginning, you can program the board using Arduino Sketch, and Paul has cooked up some cool new audio and video libraries that take advantage of the extra horsepower in the Kinetis K20 chip. WunderBar -This one wins the award for creative naming and packaging.  Basically, you have a main board and several sensor boards.  You snap off the sensor boards (like breaking off a piece of chocolate) and attach them to your desired application.  Out of the box, basic board level stuff is taken care of so you can spend more time working on your tablet/smartphone application. Enter the hybrid cross-overs These two boards have both MCU and MPU's onboard for the best of both worlds.  Generally speaking the MPU handles more multimedia rich tasks, while the MCU handles real-time operations such as controlling motors, monitoring sensors and other various functions. UDOO - After coming off a very successful Kickstarter campaign the UDOO board is gaining some serious traction. You can pick from a dual or quad core Freescale i.MX6 processor with the Atmel SAM32 (aka the Arduino chip) and let the fun begin.  UDoo has a thriving community and really caters well to the "Maker" community. Freedog -  Combines a Atheros AR9331 and Kinetis KL25Z  The Atheros processor supports Linino, a Linux distribution based on OpenWRT. The board has built-in Ethernet and WiFi support, which is a huge plus! The future of personal computing Things are really heating up in the microprocessor corner with lots of new i.MX enabled development boards.  These boards may not go toe-to-toe with your laptop or desktop PC, but the size to performance ratio is just incredible.  For grins I have listed the boards below from largest to smallest. Riot Board- Another SBC (Single Board Computer) solution featuring a single core i.MX 6 application processor.  This board is capable of many things but the focus is for Android development.  I had Netflix and Pandora running on my home TV in less than 30 minutes.  Cool if used for nothing more than a media center! Wand Board - You can pick between single, dual and quad core flavors.  Under the hood this platform is a SOM (System On Module) allowing you to pop this super small plug into your creation and accessorize!  The dual and quad core flavor comes with built in WiFi  and Bluetooth provides a lot of connectivity options. [NEW: Added 7/2/2014] Hummingboard - Several people contributed this in the comments section and I was notified this is now available for purchase.  On paper it looks pretty sweet, same price as the Rasberry Pi but with a much more powerful from a processor performance and peripheral perspective.  I am going to try to get my hands on one and will update you! CuBox - I would put this in more of the finished products camp and not really a development tool, but it is still VERY cool.  A 2 inch cube mini-computer.  Nicely polished packaging and Android O/S, it makes my desktop PC look like a relic. Warp Board - Aimed squarely at wearables, this thing is so small and oh by the way it runs Android and is cranking away at 1 GHz.  It's slated for a end of summer release, but you can start getting updates now from their website!
View full article
32-bit Kinetis MCUs represent the most scalable portfolio of ARM® Cortex™-M4 MCUs in the industry. Enabled by innovative 90nm Thin Film Storage (TFS) flash technology with unique FlexMemory (configurable embedded EEPROM), Kinetis features the latest low-power innovations and high performance, high precision mixed-signal capability. For the Freescale Cup Challenge, we have provided several tutorials, example code and projects based on the twr-k40x256-kit. This board is part of the Freescale tower-system, a modular, reusable development platform that allows engineers to quickly prototype new designs. The K40 chip is a 144 pin package with 512KB of Flash, 245Kb of Program Flash, 4KB of EEProm, and 64KB of SRAM. Important Documents: Reference Manual Besides the Reference manual and the Datasheet, the most useful document for learning to program the K40 chip is the Kinetis Peripheral Module Quick Reference Data sheet Errata External Links Freescale's Kinetis K40 Product Page
View full article
Embedded processors are highly optimized products.  When you just want a good general use processor, sifting through the many options to find the best one can be daunting.  Below are some excellent general-purpose use platforms that I recommend for academia.  Are there other options, you bet.  These are the best in class, most popular and great for learning. FRDM-KL25Z TWR-K60D100M Wand Board Teensy 3.0 Cost: $12.95 $99 ($169 for -KIT) $79/$99/$129 $19 Chip: Cortex-M0+ Cortex-M4 Cortex-A9 (Single/Dual/Quad core) Cortex-M4 On-Board Features: Minimal Good Good Very Minimal Expansion Capability Excellent Good Average Good Notable Features Arduino Shield Compatibility Program with mbed.org I/O options Android Jellybean, HDMI Plug into breadboard Program with Arduino IDE The Freedom Board (FRDM-KL25Z) This is a great starter board!  It's cheap($12.95), yet powerful and can be used in a wide variety of applications.  All FRDM- boards are pinned out in the Arduino shield standard so you have lots of expansion options.  The FRDM-KL25Z can be programmed with the normal 'industrial strength' IDE you can also use mbed.org which sets it apart from many other products in this list for ease-of-use. Teensy (Teensy3) Made by PJRC.  For those that want to put a high performance 32-bit MCU on a breadboard.  Also, per the PJRC website you you are able to use the Arduino IDE.  The hardware is about as bare-bones as it gets, but the nice small footprint and breadboard ability gives you lots of flexibility to add your own custom I/O. The Tower System (TWR-K60D100M-KIT) The Tower System is another platform with a multitude of options.  With the Tower System you get access to much more I/O and is designed with higher performance applications in mind.  The particular variant I most often recommend is the TWR-K60D100M simply because it has so many features all packed in.  USB, Ethernet, Crypto engine, CAN, SPI, I2C and the list goes on.  Couple that with plenty of processing muscle with a Cortex-M4 CPU running at 100Mhz. Wand Board.org (Wand Board) The Cortex-M series is primarily intended for embedded control applications.  Whereas the Cortex-A series is built for graphical and multimedia applications.  Wandboard.org has been getting a lot of attention in the community as a Rasberry PI, Beagle Bone alternative(comparison chart).  Another similar product, still in development, is UDOO so stay tuned for that one.
View full article
A great exercise when first starting with a new microcontroller is to get LEDs to turn-on, flash, or dim. Depending upon the configuration of your circuit, a LED (light-emitting diode) is accessed by toggling a GPIO or 'General Purpose Input Output pin either high or low. GPIO pins can be configured either as an input (read) or output (write). A high signal is often referred to as "Asserted" or a logic "1" and a low signal designated as Negated or logic "0". The input and output voltage range for GPIO pins is typically limited to the supply voltage of the evaluation board. Usage To optimize functionality in small packages, physical microcontroller pins have several functions available via signal multiplexing. Internally, a pin will have several wires connected to it via a multiplexer (wiki) or MUX. A multiplexer selects between several inputs and sends the selected signal to its output pin. The Signal Multiplexing chapter of your reference manual illustrates which device signals are multiplexed on which external pin. The Port Control block controls which signal is present on the external pin. The configuration registers within a microcontroller require proper configuration to select the GPIO as an input or output. The same GPIO pins utilized to blink a LED can be wired to read a signal coming from an external device such as the input from a hall effect sensor. Freescale Cup participants will configure GPIO pins as outputs to control the line-scan-camera via timed pulses and clock type signals. Read/Write In write mode, the GPIO pin can be set, cleared, or toggled via software initiated register settings. To determine which pin on the microcontroller is connected to a LED and how to access it from software, refer to the schematic of the microcontroller board. This pin will have numeric or alfanumeric value as well as an descriptive designation such as PTC7. Microcontroller Reference Manual: GPIO Information You will find high level information about GPIO usage in several different areas of a reference manual. See thereference-manual article for more general information. Relevant Chapters: Introduction: Human-machine interfaces - lists the memory map and register definitions for the GPIO System Modules: System Integration Modules (SIM) - provides system control and chip configuration registers Chip Configuration: Human-Machine interfaces (HMI). Signal Multiplexing: Port control and interrupts Human-Machine Interfaces: General purpose input/output Hardware As stated before, internal registers control whether a pin is high or low. Determining the polarity or orientation of your LED is important because this will let you know whether to set the associated pin in the HIGH or LOW state. The evaluation boards from Freescale all provide LED circuits like the one shown below. LED Circuit The circuit in figure (1) demonstrates a simple way to to power a LED. The circuit consists of connecting in a LED, resistor (which limits the current) and voltage source in series. LED's are semiconductors which convert current to light. When they are forward biased (turned on), electron and holes will recombine with no change in momentum, emitting a photon or light wave. Choosing the resistor is simple if you know the operating current requirements for your LED which are determined by reading the LED datasheet or specification document. R = (Vs - VL)/ IL Where V s is the power supply voltage, and V L is the Voltage Drop across the LED, and I L is the desired current through the LED.
View full article
Sifting through technical documentation is part of an engineers job.  Sometimes these documents can be hundreds or thousands of pages long, so knowing where to makes life much easier.  This article is going to try to help you navigate smarter... Freescale has the following structure for technical documents: Reference Manuals (Usually end with "RM") - These are typically the thick manuals.  You will find sections detailing operation, registers, and electrical characteristics. Data Sheet (Usually ends with "DS") - These are quick summaries of the specifications of the device.  Includes electrical characteristics such as operating voltages, input and output minimum and maximum ranges.  In addition to environmental characteristics such as temperature ranges and graphs of performance vs. certain conditions. Schematic (_SCH) - This is typically referred in terms of board designs.  A schematic is useful in finding out how and where an external thing (LED, button, Display) is connected to the microcontroller.  Fact Sheet (_FS) - This is generally overview type information.  Useful when you are trying to determine which microcontroller you want to use.  Errata - Sometimes there are bugs in the chip.  When these are discovered the company issues an errata.  Sometimes the item get's fixed in the next revision of the chip, sometimes you just work around the problem.  If you think it should be working and it's not check the erratas! Tips and Tricks Use the search or find function all the time. Shortcut key '''(Ctrl-F).''' Use two monitors. Have the document open in one, search or browse to what you need to find and simply copy and paste the configuration information into your IDE. Search tips:  Use the pin name.  (I.e. PTC, PORTA, or FTM) Save trees only print out what you need. Commonly Used Acronyms: PDB - Programmable Delay Block FTM - Flex Timer Module ADC - Analog to Digital Converter DAC - Digital to Analog Converter MCG - Multipurpose Clock Generator SPI - Serial Programming Interface CnV - Channel n Value CNTIN - Counter Initial Value SIM - System Integration Module SIM_SCGCn - System Integration Module, System Clock Gating Control Register CMP - Comparator Module SIM - Provides system control and chip configuration registers. You will use this to turn on the clocks to particular peripherals. The SIM_SCGC
View full article
GEORG is the Rescue Robot from the Freescale Robotics Lab of the Georg-Simon Ohm University of Applied Sciences of Nuremberg (Germany). During last week's, the student team led by Prof. Stefan May have attended the Worldwide RoboCup finals in Eindhoven (The Netherlands) and scored #12. Quite a good result for GEORG as it is it's first entry into the world finals. The Robotics team has been working since last year porting ROS (Robotic Operating System) to the Freescale i.MX platform to save space and power vs. an onboard PC. They are also working in developing distributed ROS computing systems using Freedom boards as modules. See GEORG's progress on the Robotics page of the university
View full article
The attached final rules are valid for the 2014 Freescale Innovation Competition rules
View full article