Hackaday.io Hackaday.io
Projects
Recently Updated Most Likes Newest Project Lists
Discover Contests Courses Stack
More
Courses Tutorials Events Hackerspaces Profiles Hackaday.com Tindie Marketplace
Sign up Log in
Close
0%
0%

Non-blocking analogRead()'s for Arduino

The goal of this project is to get non-blocking analogRead()'s added to Arduino core libraries.

Jacob ChristJacob Christ
Following Follow project
Liked Like project

Become a Hackaday.io member

Not a member? You should Sign up.

Already have an account? Log in.

Sign up with Github
Sign up with Twitter
OR
Forgot your password?

Just one more thing

To make the experience fit your profile, pick a username and tell us what interests you.

Pick an awesome username
hackaday.io/
Your profile's URL: hackaday.io/username. Max 25 alphanumeric characters.
Pick a few interests
Projects that share your interests
People that share your interests

We found and based on your interests.

Choose more interests.

OK, I'm done! Skip
Join this project
Similar projects worth following
1.2k views
6 comments
16 followers
16 likes
  • Description
  • Details
  • Files 1
    • View all
  • Components 0
  • Logs 1
    • View all
  • Instructions 0
  • Discussion 6
  • The 2017 Hackaday Prize
View Gallery
1.2k
6
16
16

Team (1)

  • Jacob ChristJacob Christ

Join this project's team
ongoing project
arduino ChipKit 2017HackadayPrize analogread nonblocking

This project is submitted for

  • The 2017 Hackaday Prize
  • Design your concept

This project was created on 03/23/2017 and last updated 6 years ago.

Description

The goal of this project is to get non-blocking analogRead()'s added to Arduino core libraries. I recently made a change to chipKIT-core libraries to add this feature. It had the surprising effect of making existing hardware 2.5 to 5 times faster.

1. The primary challenge this project addresses is the ability to wrangle hardheaded Arduino developers into taking pushes from down stream
2. I'm not sure I can solve this problem of hardheaded developers, not am I sure I want to being one myself, but I'll try.
3. This project makes the world better by breathing new life into old hardware!
4. See picture to the left.
5. These changes have already been published in the chipKIT-core repo, but a Arduino version is needed. https://github.com/chipkit32/chipKIT-core/
6. BSD 3-Clause

Files

chipKIT-core 1.4.0 Non-Blocking Analog Reads.pdf

Original foils I created after implementing in chipKIT-core

Adobe Portable Document Format - 662.13 kB - 03/23/2017 at 20:29

Preview
Download

Project Logs
Collapse

  • Started a Discussion

    Jacob Christ • 03/23/2017 at 20:31 • 1 comment

    Last night I submitted a suggestion to try to impliment this on the Arduino Developers form...

    https://groups.google.com/a/arduino.cc/forum/#!topic/developers/eTFLXvUiVZA

View project log

Enjoy this project?

Share

Discussions

Log In/Sign up to comment

Become a Hackaday.io Member

Create an account to leave a comment. Already have an account? Log In.

Sign up with Github
Sign up with Twitter
OR
K.C. Lee wrote 03/31/2017 at 12:17 • point

If you only need a single channel, just need to turn on the free running mode in the ADC, then you can grab the latest results anytime you want.  Most microcontrollers have something like this.  On chips with DMA, just grab and process whole block of data.  Some might even let you specify the channel sequence.

For a PID loop, you want to take the ADC snapshots from a hardware timer and not a software timing loop.  Jitters in the sampling time affects the D term in a PID controller.  Faster isn't necessarily better.

https://www.chiefdelphi.com/forums/archive/index.php/t-83734.html

  Are you sure? yes | no

Jacob Christ wrote 03/31/2017 at 17:03 • point

I rarely use a D term but good to know. Had never thought about this but a good point.

  Are you sure? yes | no

K.C. Lee wrote 03/31/2017 at 17:18 • point

I use the D term quite a bit.  It gets you a faster settling time while controlling the oscillations/overshoots.  As with finite derivatives, it is unfortunately prone to noise.  :(

  Are you sure? yes | no

Jacob Christ wrote 03/27/2017 at 17:57 • point

Sounds like a blocking mental-block.

  Are you sure? yes | no

Eric Hertz wrote 03/31/2017 at 06:02 • point

:)

  Are you sure? yes | no

Eric Hertz wrote 03/24/2017 at 03:44 • point
ah hah! "Non-Blocking" is the word that was on a mental-block for me

  Are you sure? yes | no

Does this project spark your interest?

Become a member to follow this project and never miss any updates

Going up?

About Us Contact Hackaday.io Give Feedback Terms of Use Privacy Policy Hackaday API

© 2023 Hackaday

By using our website and services, you expressly agree to the placement of our performance, functionality, and advertising cookies. Learn More

Yes, delete it Cancel

Report project as inappropriate

You are about to report the project "Non-blocking analogRead()'s for Arduino", please tell us the reason.

Send message

Your application has been submitted.

Remove Member

Are you sure you want to remove yourself as a member for this project?

Project owner will be notified upon removal.