element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • About Us
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products
    Products
    • Arduino
    • Avnet Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
Arduino
  • Products
  • More
Arduino
Arduino Forum A fast digital IO
  • Blog
  • Forum
  • Documents
  • Quiz
  • Events
  • Polls
  • Files
  • Members
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
Join Arduino to participate - click to join for free!
Actions
  • Share
  • More
  • Cancel
Forum Thread Details
  • Replies 6 replies
  • Subscribers 393 subscribers
  • Views 836 views
  • Users 0 members are here
  • performance
Related

A fast digital IO

Workshopshed
Workshopshed over 10 years ago

I've not had an issue with performance of the I/O but here's a technique for squeezing a little more speed out of the ports without having significant code changes.

 

http://www.codeproject.com/Articles/732646/Fast-digital-I-O-for-Arduino

  • Sign in to reply
  • Cancel

Top Replies

  • Workshopshed
    Workshopshed over 10 years ago in reply to clem57 +1
    I think I get what you mean. Being able to standardise code is important if you are working on lots of different platforms and changing "core" libraries does pass compatibility issues onto your responsibility…
Parents
  • clem57
    clem57 over 10 years ago

    This looks nice until you see things like recent changing from Raspberry Pi to a Pi 2 and the library breaks! Too many folks here would not know what to do, except for some of the hard core type. image I have not checked, but would guess the Arduino has ports mapped differently depending on the chips also.

    Pass,

    Clem

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • Robert Peter Oakes
    Robert Peter Oakes over 10 years ago in reply to clem57

    It does, and the ports also have different functionality (Much of which is not exposed through "Wiring") but in order to protect the user from this there is a rather large and relatively slow abstraction layer allowing the use of commands like DigitalWrite() etc. to still output that logic level to the same pin on the "Arduino Header Connectors"

     

    The reason the MEGA is way slower than the UNO for the exact same program is entirely down to the abstraction layer being more involved for the MEGA. The Mega IO is more complex and requires more checks before outputting your logic level to the port (I tested this a long time ago and this is true even though the MEGA and UNO where both running at 16Mhz)

     

    It is when I reduced the code to use direct IO that the two code applications started to run at the same speed and that was also a significant increase in speed too (Maybe 10* or more)

     

    I will perform some tests over the weekend if I get a chance and publish the results

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
Reply
  • Robert Peter Oakes
    Robert Peter Oakes over 10 years ago in reply to clem57

    It does, and the ports also have different functionality (Much of which is not exposed through "Wiring") but in order to protect the user from this there is a rather large and relatively slow abstraction layer allowing the use of commands like DigitalWrite() etc. to still output that logic level to the same pin on the "Arduino Header Connectors"

     

    The reason the MEGA is way slower than the UNO for the exact same program is entirely down to the abstraction layer being more involved for the MEGA. The Mega IO is more complex and requires more checks before outputting your logic level to the port (I tested this a long time ago and this is true even though the MEGA and UNO where both running at 16Mhz)

     

    It is when I reduced the code to use direct IO that the two code applications started to run at the same speed and that was also a significant increase in speed too (Maybe 10* or more)

     

    I will perform some tests over the weekend if I get a chance and publish the results

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
Children
No Data
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2025 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

ICP 备案号 10220084.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube