Eagle FAQ
From Manuals
(→Will an example program compiled for the Eagle 50 run on an Eagle 50E and Eagle 100?) |
(→Will an example program compiled for the Eagle 50 run on an Eagle 50E and Eagle 100?) |
||
| Line 32: | Line 32: | ||
==Will an example program compiled for the Eagle 50 run on an Eagle 50E and Eagle 100?== | ==Will an example program compiled for the Eagle 50 run on an Eagle 50E and Eagle 100?== | ||
| - | Yes, it will as long as it uses peripherals that are in common. The common peripherals between the Eagle 50, 50E and 100 board are COM1 (UART0), COM2 (UART1), ADC, micro SD Card interface, and optional SPI DAC. The common peripherals for the I/O plus option on the Eagle 50 and 50E are the RS485 port, I2C Real-Time Clock, LCD, and Keypad. The memory map for these | + | Yes, it will as long as it uses peripherals that are in common. The common peripherals between the Eagle 50, 50E and 100 board are COM1 (UART0), COM2 (UART1), ADC, micro SD Card interface, and optional SPI DAC. The common peripherals for the I/O plus option on the Eagle 50 and 50E are the RS485 port, I2C Real-Time Clock, LCD, and Keypad. The memory map for these peripherals are identical between the Eagle 50, 50E, and 100. |
{{:Cortex_M3_FAQ_Software}} | {{:Cortex_M3_FAQ_Software}} | ||
Revision as of 14:31, 13 March 2012
Frequently Asked Questions - Hardware
How much current is required by the Eagle controllers?
On typical operating conditions, the current requirements are as follows. Note that I/O devices may increase total current requirements so the complete system should be considered when sizing power requirements.
- Eagle 50: +5V@115mA
- Eagle 50E: +5V@225mA
- Eagle 100: +5V@250mA
Are digital inputs compatible with 5V logic?
Yes. On the LM3S microcontroller the high-level input voltage (VIH) has a minimum of 2.0V and a maximum of 5.0V. The low-level input voltage (VIL) has a minimum of -0.3V and a maximum of 1.3V.
What are the maximum data rates for on-board ADCs and DACs?
The Micromint Eagle can sample the ADC at 500 kHz. The DAC can be updated at a maximum of 150 kHz for 1 channel. The data transfer is 16-bits at 25 MHz which is a total of 640 nS per data transfer but the DAC has a settling time of 6 µS so the total time needed is 6.64 µS. All 4 channels of the DAC can be updated at a maximum of 116 kHz. This is accomplished by sending the data for all 4 channels and updating all of the outputs on the last data transfer.
What LCD displays can be used with the Eagle controllers?
The examples include a driver for a standard character LCD with an HD44780 controller. We have tested an AZ Displays LCD p/n AMC2004D-FL-GBS-D and a Lumex LCD p/n LCM-S02004DSF. Both LCDs are 4 lines by 20 characters. Other LCD displays can be used with driver or interface changes.
Can 9V or 12V supplies be used with the Eagle?
If the LCD is not being used the Eagle can be powered with a maximum of 16 VDC.
Frequently Asked Questions - Software
What is the difference between standalone and application mode?
Application mode assumes a bootloader is used at 0x0000 so the application is relocated to 0x2000. Standalone mode assumes no bootloader is used so the application is relocated to 0x0000. To use standalone mode (no bootloader), link with standalone.ld (gcc) or standalone.icf (IAR) and load the binary at 0x0000. To use application mode, link with application.ld (gcc) or application.icf (IAR) and load the binary at 0x2000. The bootloader must be at 0x0000 if you use application mode.
The bootloader allows firmware updates from the Ethernet port (Eagle 50E) or serial port (Eagle 50). If you will be doing firmware updates via the USB device port or a JTAG, a bootloader is not required. If you will be doing debugging, it is easier to debug applications in standalone mode without a bootloader. Debugging with a bootloader present requires loading it before the application, which makes the setup more complex. Most applications do not use a bootloader but the default Eagle setup uses one so customers without a USB debug port or a JTAG have a way of updating their firmware.
If I use the ASSERT() macro to in my code, will it produce a fault when it fails?
No. ASSERT() normally does not produce a fault. ASSERT() is a commonly used macro in C programming to check parameter values when debugging code. To enable the ASSERT() logic, you need to define the DEBUG constant when compiling. Otherwise, it is an empty macro which is the desired behavior at runtime after the application is debugged.
Covering all possible values or sequences with ASSERT() is not its intent and is not really practical. In StellarisWare when ASSERT() fails, the __error__() function is called. You need to implement this function in your code to perform your desired action, such as displaying an error message on the desired output port.
Will an example program compiled for the Eagle 50 run on an Eagle 50E and Eagle 100?
Yes, it will as long as it uses peripherals that are in common. The common peripherals between the Eagle 50, 50E and 100 board are COM1 (UART0), COM2 (UART1), ADC, micro SD Card interface, and optional SPI DAC. The common peripherals for the I/O plus option on the Eagle 50 and 50E are the RS485 port, I2C Real-Time Clock, LCD, and Keypad. The memory map for these peripherals are identical between the Eagle 50, 50E, and 100.
Can I develop and debug code for my Micromint ARM Cortex-M3 controller using a Linux PC? a Mac OS X workstation?
Yes. CodeBlocks, Eclipse, OpenOCD and GNU cross compilers for ARM are available for Windows, Linux and Mac OS X. EWARM is only available for Microsoft Windows.
What filesystem types, volume size and filename formats are supported on microSD cards?
The code examples use the FatFS 0.04b library which supports FAT12, FAT16 and FAT32 filesystems. We have tested 4GB microSD cards but the library supports larger volumes. The filename format is 8.3. Long file names are implemented in FatFS 0.07 or above.
How can I detect if the application is compiled with IAR or GCC?
You can use compiler predefined macros as in the example below.
#if defined(__IAR_SYSTEMS_ICC__) /* Code to use with IAR compiler */ #elif defined(__GNUC__) /* Code to use with GCC compiler */ #else #warning Compiler is not supported #endif
For more details on predefined macros, consult the C preprocessor manuals.
Why are some source code statements skipped and some variables unavailable when debugging?
When you enable code optimization, the object code does not necessarily follow the same sequence as the source code. Optimizing compilers like IAR or GCC use loop unrolling, loop collapsing, branch elimination and other techniques that rearrange code to increase execution speed and/or reduce code size. These changes could also eliminate the need for some variables. A common practice during development is to disable compiler optimizations when debugging. The desired optimizations should normally be enabled after most of the debugging is done and the code is stable. For a more consistent debugging environment, any libraries used by the project should be compiled with the same options and compiler version as the application.
