All Forums
 General Hardware, ADSmartIO, Digital I/O and A/Ds
 ADSmartIO: Manual and Firmware Releases
 Forum Locked  Topic Locked
 Send Topic to a Friend
 Printer Friendly
Author Topic  


296 Posts

Posted - 25 Mar 2002 :  22:10:28  Show Profile  Email Poster
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)

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.


296 Posts

Posted - 28 Mar 2002 :  19:31:44  Show Profile  Email Poster
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 1Option 2Option 3J2 Pin
PB0Digital IO B0Digital IO B0Digital IO B012
PB1Digital IO B1Digital IO B1Digital IO B114
PB2Digital IO B2Digital IO B2Digital IO B216
PB3Digital IO B3Digital IO B3Digital IO B318

ADS Knowledge Base
Go to Top of Page


1519 Posts

Posted - 28 Mar 2002 :  19:33:58  Show Profile  Email Poster
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
Go to Top of Page


296 Posts

Posted - 28 Mar 2002 :  19:50:11  Show Profile  Email Poster

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:
  1. Configure the digital I/O lines as inputs (write 0's to those bits using SIOInitDDRX())

  2. Write a "1" with SIOWritePortX() to bits that need the pull-up enabled

  3. 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
Go to Top of Page


296 Posts

Posted - 03 Apr 2002 :  12:46:07  Show Profile  Email Poster
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
Go to Top of Page


296 Posts

Posted - 03 Apr 2002 :  12:48:17  Show Profile  Email Poster
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
Go to Top of Page


296 Posts

Posted - 10 Apr 2002 :  11:56:45  Show Profile  Email Poster

Addendum: Bitsy ADSmartIO Ports

The following ADSmartIO ports are available on the Bitsy:


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
Go to Top of Page


296 Posts

Posted - 16 Apr 2002 :  17:43:51  Show Profile  Email Poster

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).
Go to Top of Page


296 Posts

Posted - 16 Apr 2002 :  17:53:31  Show Profile  Email Poster
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);
Go to Top of Page


296 Posts

Posted - 16 Apr 2002 :  18:10:38  Show Profile  Email Poster

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
Go to Top of Page


296 Posts

Posted - 07 May 2002 :  17:52:17  Show Profile  Email Poster
Addendum: Port Initalization

At reset (warm or cold boot), external ADSmartIO lines are configured as inputs. Software pullups are disabled.

ADS Knowledge Base
Go to Top of Page


6 Posts

Posted - 05 Sep 2002 :  12:09:03  Show Profile  Email Poster
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?
Go to Top of Page


1519 Posts

Posted - 04 Oct 2002 :  13:42:24  Show Profile  Email Poster
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.
Go to Top of Page


1519 Posts

Posted - 04 Oct 2002 :  14:58:18  Show Profile  Email Poster

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". (same as 1021 rev C)

Edited 3-Oct-2003 by ctacke: added link for GCPlus AVR
Edited 30-Nov-2006 by akidder: replace links with file names
Go to Top of Page


1519 Posts

Posted - 28 Oct 2002 :  11:10:46  Show Profile  Email Poster

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
Go to Top of Page


1519 Posts

Posted - 22 Nov 2002 :  12:04:41  Show Profile  Email Poster

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. (includes source and sample application)
Go to Top of Page


1519 Posts

Posted - 17 Dec 2002 :  14:59:12  Show Profile  Email Poster
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.
Go to Top of Page


1519 Posts

Posted - 14 Jan 2003 :  18:37:17  Show Profile  Email Poster

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.
Go to Top of Page


877 Posts

Posted - 03 Jul 2003 :  09:47:13  Show Profile  Email Poster

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.
Go to Top of Page


1519 Posts

Posted - 04 Feb 2004 :  13:58:21  Show Profile  Email Poster

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.
Go to Top of Page


1519 Posts

Posted - 14 Jan 2014 :  14:31:07  Show Profile  Email Poster

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.


The debug port provides more details about error codes than what is displayed on the LCD panel.

Go to Top of Page
 Forum Locked  Topic Locked
 Send Topic to a Friend
 Printer Friendly
Jump To:
Eurotech Support Forums © Eurotech Inc. Go To Top Of Page
This page was generated in 0.16 seconds. Snitz Forums 2000