Author |
Topic |
|
KnowledgeBase
296 Posts |
Posted - 25 Mar 2002 : 22:10:28
|
ADSmartIO: Manual and Firmware Releases
The ADSmartIO component of ADS StrongARM products extends the power of the processor with flexible, autonomous I/O control. Download the driver specifications and libraries to begin your development today. - Pronunciation: [ay dee ESS smart eye OH] - Programmer's reference for all products (PDF 91k)
CE Libraries All CE builds include DLLs for using ADSmartIO functions. See the posts below for eVC libraries that link the functions or wrap them in a C++ class for use in your application. We also have sample applications for C# and eVB for examples of how to get started.
The static libraries (.LIB) formerly on this page are out of date and no longer supported by ADS. If you need them for your older system, request them by email by clicking one of the following links: GC, GC+, Bitsy, GMaster.
Linux ADSmartIO Linux and CE use the same function calls to control ADSmartIO functions. For further information about how to use the ADSmartIO features with Linux, see the Linux sample code and Linux ADSmartIO FAQ.
Firmware Releases You can update the ADSmartIO firmware on your system using the firmware from the following links. For WinCE, use the AVRPROG.EXE application as described below. For Linux, see the reprogramming information at topic 472.
Note that for products shipped beginning Fall 2003, a new programming app is needed. (details)
AGX and VGX GC Plus and GCX BitsyX, BitsyXb GMaster (90026) Bitsy (1021D) Bitsy Plus (1010B)
Some OS releases do not support in-system programming of the ADSmartIO. For those you will need the Kanda AVRUSB programmer and a product-specific adapter to connect to the board. Contact ADS if you need an adapter for programming.
Other Links
For a list of all Topic Indices, see the Forum Topic Index
Edited by Knowledgebase 6-Jun-02: Add notes and examples for dynaminc linking. Edited by Knowledgebase 19-Jun-02: Update Bitsy firmware from 10219 to 1021C Edited by akidder 28-Aug-2002: Note that AVRPROG is used for field upgrades. Edited by akidder 22-Nov-2002: Update from 4017J to 4017L and Bitsy 1021C to 1021D; add link to library for automatic dynamic linking; remove links to.lib files Edited by akidder 8-Jan-2002: Add section for Linux. Edited by akidder 3-Apr-2003: Move topic from CE forum to Hardware/ADSmartIO forum. Edited by akidder 7-Jul-2003: Add link to wrapper class post. Edited by ctacke21-Jul-2003: Add link to Bitsy Plus, BitsyX firmware downloads. Edited by akidder 4-Sep-2003: Add link GC Plus 4017N. Edited by akidder 30-Sep-2003: Add link GC Plus 4017J back to page. Edited by ctacke 16-Jan-2004: Add link to AGX 40046. Edited by akidder 10-Feb-2004: Add note and link to change in programming app. Edited by akidder 18-Feb-2004: Change AGX link to new AGX firmware topic. Edited by ctacke 4-May-2004: Modified BitsyX link to version 3. Edited by akidder 8-Oct-2004: Change GC Plus link to new GC Plus firmware topic. Edited by akidder 8-Nov-2004: Change BitsyX link to new BitsyX firmware topic. Edited by akidder 25-Aug-2006: Add link to and description of Kanda AVRUSB programmer. Edited by akidder 8-Feb-2006: Change C# link from topic 492 to topic 2211. Edited by akidder 14-Jan-2014: Add CE programming instructions to topic.
Did you know? You can get automatic email notifications when this, or any Topic is changed or replied to. Simply click the "Subscribe" icon () on the Topic List page (back one from here) on the right side of the Topic to which you would like to subscribe.
You can cancel or manage your subscriptions at any time from the "My Subscriptions" menu item at the upper left of any Forum page. |
|
KnowledgeBase
296 Posts |
Posted - 28 Mar 2002 : 19:31:44
|
Erratum: Port B pin numbering error
Page 11 - SmartIO Configurations table
Port B incorrectly shows five assigned pins, including pin 10. Pin 10 is a UCB1200 I/O.
The Port B portion of the table should read:
| Option 1 | Option 2 | Option 3 | J2 Pin |
PB0 | Digital IO B0 | Digital IO B0 | Digital IO B0 | 12 | PB1 | Digital IO B1 | Digital IO B1 | Digital IO B1 | 14 | PB2 | Digital IO B2 | Digital IO B2 | Digital IO B2 | 16 | PB3 | Digital IO B3 | Digital IO B3 | Digital IO B3 | 18 |
------------------ ADS Knowledge Base |
|
|
akidder
1519 Posts |
Posted - 28 Mar 2002 : 19:33:58
|
Hi Joel: There isn't currently a revision history for the ADSmartIO. We recommend you load your system with the current revision. Future releases will list the changes that were made.
----------------------- Drew Kidder ADS Technology Transfer |
|
|
KnowledgeBase
296 Posts |
Posted - 28 Mar 2002 : 19:50:11
|
#software_pull-ups
Addendum: Software pull-ups
The ADSmartIO controller has a feature not documented in the manual: You can enable pull-up resistors through software.
This allows you, for example, to connect a switch (or open collector output) between the input line and ground without the use of external pull-up resistors. This significantly simplifies hardware design.
To use ADSmartIO pull-ups:- Configure the digital I/O lines as inputs (write 0's to those bits using SIOInitDDRX())
- Write a "1" with SIOWritePortX() to bits that need the pull-up enabled
- Write a "0" to bits that need the pull-up disabled
The pull-up voltage is 3.3V (the ADSmartIO supply voltage). Pull-ups resistors are disabled by default.
------------------ ADS Knowledge Base |
|
|
KnowledgeBase
296 Posts |
Posted - 03 Apr 2002 : 12:46:07
|
Erratum: PB4 not available to users
The ADSmartIO manual mistakenly shows that port B4 is available for use in applications as "Digital IO B4". This is a mistake. It is used by the ADSmartIO controller for internal purposes and should not be used in applications.
------------------ ADS Knowledge Base |
|
|
KnowledgeBase
296 Posts |
Posted - 03 Apr 2002 : 12:48:17
|
Addendum: More Graphics Master ports available
The Graphics Master has all the same ports available as the Graphics Client Plus, plus a few more. Ports that are the same include PA0-7, PB0-3, PC0-7 and PD0-1.
On the Graphics Master, the SA1111 handles the PS2 keyboard. This frees up PD2-6 for use as digital I/Os. They are available on J20.
------------------ ADS Knowledge Base |
|
|
KnowledgeBase
296 Posts |
Posted - 10 Apr 2002 : 11:56:45
|
#Bitsy_ADSmartIO
Addendum: Bitsy ADSmartIO Ports
The following ADSmartIO ports are available on the Bitsy:
PA0 COL0 PA1 COL1 PA2 COL2 PA3 COL3 . PC0 ROW0 PC1 ROW1 PC2 ROW2 PC3 ROW3 PC4 ROW4 . PC6 SMTI02 PC7 SMTI03
On the Bitsy, PD0 and PD1 are used for Vee control and temperature measurement. Though they are available on the Bitsy connectors, the current revision of the Bitsy ADSmartIO protects PD0 and PD1 from being written to.
PC6 and PC7 are not available on Rev 1 connector boards mated to Rev C Bitsy systems.
------------------ ADS Knowledge Base
- Add note about PC6 and PC7, akidder 16apr02 |
|
|
KnowledgeBase
296 Posts |
Posted - 16 Apr 2002 : 17:43:51
|
#using_keypad
Addendum: ADSmartIO Keypad Scanning
The SIOSetKeyPadSize() function description includes information about how to use a keypad. Here are additional details:
- The ROWn signals are configured as inputs with software pull-ups enabled.
- The COLn signals are configured as outputs and set to "1"(high).
- The keypad scanner sets successive column outputs to "0"(low), then looks for a "0" on one of the ROWn inputs.
- The scanner performs debouncing by re-reading the pressed key after a delay.
- The scanner is set up for one key to be pressed at a time. Multiple key presses will give an undefined result.
- The returned key code is (COL + 8*ROW), where ROW and COL are between 0 and 7.
Here's an example of how you would connect to a 3x3 keypad. Note the location of the software pullups.
Edited by akidder 18-Mar-2004: Add equation and scan codes to diagram (change link from 10-00052_ADSmartIO_keypad_bw.bmp). |
|
|
KnowledgeBase
296 Posts |
Posted - 16 Apr 2002 : 17:53:31
|
Erratum: SIOSetKeypadSize() parameters
The manual incorrectly specifies the order of the parameters for the SIOSetKeypadSize() function. The correct prototype for the function is:
BOOL SIOSetKeyPadSize (BYTE cols, BYTE rows); |
|
|
KnowledgeBase
296 Posts |
Posted - 16 Apr 2002 : 18:10:38
|
#SIOSetSSPTimeout
Addendum: SIOSetSSPTimeout()
The SIOSetSSPTimeout() function determines how long an ADSmartIO function will block waiting for a response before returning an error code. Use this function to set how long to wait for a keypad press from SIOReadKeypad().
The prototype for the function is:
BOOL SIOSetSSPTimeout(ULONG Timeout); where Timeout is in milliseconds.
------------------ ADS Knowledge Base |
|
|
KnowledgeBase
296 Posts |
Posted - 07 May 2002 : 17:52:17
|
Addendum: Port Initalization
At reset (warm or cold boot), external ADSmartIO lines are configured as inputs. Software pullups are disabled.
------------------ ADS Knowledge Base |
|
|
JSpano
6 Posts |
Posted - 05 Sep 2002 : 12:09:03
|
Can anyone confirm that the [Windows CE] Keybddr.dll is able to receive fuction calls from various application without a problem. I belive the term is reentrant. In other words, Can I have multiple applications call on a SIOReadPortA() function at the same time without running into problems? |
|
|
akidder
1519 Posts |
Posted - 04 Oct 2002 : 13:42:24
|
Multi-threaded Access to ADSmartIO
Hi Jason. Generally, the ADSmartIO code isn't reentrant. The Graphics Master ADSmartIO firmware and CE drivers have been updated recently to better handle calls from different threads. Drivers for other products may be updated in the future.
For robustness in your application, use a mutex or single-threaded access to manage your ADSmartIO requests. Otherwise calls from one thread might receive the results from another. |
|
|
akidder
1519 Posts |
Posted - 04 Oct 2002 : 14:58:18
|
#active-high_backlight
Active-High Backlight Control
The ADSmartIO uses active-low logic to control the backlight. That is, the ADSmartIO sets the BacklightOnOff signal to zero volts to turn the backlight on.
The following ADSmartIO builds use active-high logic. These builds were made for specific customers and are offered "as-is". Contact ADS Sales if your application requires a build that isn't available on this site.
An alternate use for these builds is if you want the power-up state of your backlight to be "off".
700111-10242_Bitsy_ADSmartIO_reprog.zip (same as 1021 rev C) 700110-40241_GCP_AVR_Reverse-polarity_inverter_same_as_4017J.zip
Edited 3-Oct-2003 by ctacke: added link for GCPlus AVR Edited 30-Nov-2006 by akidder: replace links with file names |
|
|
akidder
1519 Posts |
Posted - 28 Oct 2002 : 11:10:46
|
#performance
How fast are ADSmartIOs?
ADSmartIOs are generally intended for low-speed digital I/O and A/D. Data rates are fundamentally limited by the SPI communications channel between the processor and the ADSmartIO controller.
Here are the results of a recent test(*):SIOWritePortA or C(), 2.5 ms SIOReadPortA or C(), 5.5 ms SIOAnalogConversion(), 14.3 ms If your application requires high-speed digital I/Os, consider using the processor's digital I/Os, which don't have the communications overhead of the ADSmartIO (eg. see this topic). For highest performance, newer ADS products expose the CF bus, which can drive 16-bits of data at MHz speeds.
The maximum rate at which the AVR microcontroller can make an A/D conversion is every 12.5ms(80Hz).
(*) Test methodology: (Win CE app #20-xxxx) Each function was called 100 times consecutively. Average times are shown. Repeatability was high (+/-1%). Thread priority improved performance when other applications were running; values shown are with priority=0(max). Tested on GC Plus CE build 3.39 with ADSmartIO release 4017J.
20-11302 (ZIP) is a similar test that illustrates the conversion speeds of the ADSmartIO and UCB1200 A/Ds. Sample test results included illustrate that ADSmartIO A/Ds take about 14ms while UCB1200 A/Ds convert in about 0.3ms.
Edited by akidder 1-Nov-2002: Add link to test 20-1130. Edited by akidder 20-Feb-2003: Add note about A/D conversion rate. Edited by akidder 4-Apr-2003: Clarify that test was made with CE. Edited by akidder 2-Aug-2003: Correct max frequency of A/D conversions to 80 Hz |
|
|
akidder
1519 Posts |
Posted - 22 Nov 2002 : 12:04:41
|
#ADSmartIO_dynamic_link
Dynamic Linking to the ADSmartIO DLLs (Windows CE)
The following eVC library dynamically links to the ADSmartIO DLL built into your platform. This library makes all ADSmartIO functions available to your application.
When you use the loader function included in this library, your ADSmartIO applications will be portable across all ADS platforms.
ADSmartIO_load.zip (includes source and sample application) |
|
|
akidder
1519 Posts |
Posted - 17 Dec 2002 : 14:59:12
|
Changing Modes ("Options")
ADSmartIO firmware does not currently support dynamically switching between modes ("Options"). You must reset the ADSmartIO controller (usually by power-cycling) before changing to another mode.
The intent of the ADSmartIO design is that an embedded application will select the mode that matches the hardware connected, and that an application will only use one mode in its operation. |
|
|
akidder
1519 Posts |
Posted - 14 Jan 2003 : 18:37:17
|
#SIOSelectOption
Addendum: SIOSelectOption() not used on newer products
Newer ADS products have eliminated the need to use the SIOSelectOption() function, as the "options" somewhat limited the flexibility of the Atmel AVR I/Os. In products like the Bitsy Plus...- You can choose to have any pin be a digital input or output.
- Configure as inputs any Port A lines you wish to use as A/Ds. Be careful not to write a "1" to those bits, or you will enable the software pull-ups, which will affect your A/D signal.
- Ports selected by SIOSetKeypadSize() for use in keypad scanning can't be used for other purposes.
Calling SIOSelectOption() on these products will not have any effect, so older code is still compatible. |
|
|
ctacke
877 Posts |
Posted - 03 Jul 2003 : 09:47:13
|
#ADSmartIO_wrapper_class
Windows CE Wrapper Class
We've created a generic Windows CE wrapper class that can also be used to access the ADSmartIO in your projects. |
|
|
akidder
1519 Posts |
Posted - 04 Feb 2004 : 13:58:21
|
#ATmega
Change in ADSmartIO Microcontroller: New Reprogramming App Required
Based on the recommendations of Atmel and our suppliers, we have changed the processor we use for ADSmartIO functionality on our products. Beginning with production runs in Fall 2003, ADS products transitioned from the Atmel AT90LS4434/8535 AVR parts to the ATmega family.
This change is transparent to applications and users of our products, as the core logic of the microcontroller didn't change. The only difference that users will note is that the in-system programming application no longer works with the new ATmega parts.
For Windows CE applications, see topic 1360 for the updated application. For Linux, see topic topic 472.
|
|
|
akidder
1519 Posts |
Posted - 14 Jan 2014 : 14:31:07
|
#reprogramming_in_WinCE
Windows CE AVRProg.exe Usage Instructions
Here are the programming instructions that were formerly included with each SmartIO release for reprogramming the SmartIO in Windows CE:
____________________
To upgrade the SmartIO firmware, follow these instructions:
1. Place the attached SMARTIO.BIN firmware file in the root folder of your CE device (ie. My Computer folder, at the same level as the Windows folder)
2. (Optional but strongly recommended) Set up the debug port tom onitor information about the status of the reprogramming.
3. Run the AVRPROG application - If you are running the backlight from the your CE device, the display may go dark while the firmware is being reprogrammed. - Programming takes up to 60 seconds
4. When complete, you should see a message displayed on the screen
5. (Optional) Reset the system to confirm the version of the SmartIO code that was actually installed. See text at the top of the document for expected debug port output. Note that the part type may vary between 4434 and 8535.
Troubleshooting:
The debug port provides more details about error codes than what is displayed on the LCD panel.
|
|
|
|
Topic |
|