Go Down

Topic: project: simpleThreads only generated with macros and some global variables (Read 1 time) previous topic - next topic

Jomelo

Hey,
I wrote a lib, that can be create simple Threads only with Makros.

The following functions are supported
 
sequence control:
* __simpleThread_START(thread_name):
* __simpleThread_STOP(thread_name):
* __simpleThread_RESET(thread_name):
* __simpleThread_RESTART(thread_name): reset + start
* __simpleThread_IS_RUNNING(thread_name): check if a therad is started
* __simpleThread_SET_DYN_TIME(thread_name, loop time in ms):  set new loop time, is only available when the thread is with
     __simpleThread_dyn initialized
* __simpleThread_GET_DYN_TIME(thread_name): get loop time, is only available when the thread is with __simpleThread_dyn initialized

initialization:
* __simpleThread(thread_name, loop_time): create a new static thread with a name and a default loop time
* __simpleThread_dyn(thread_name, loop_time on start): create a new dynamic thread with a name and a default loop time
* __simpleThread_PTR(thread_name): containes the function pointer
* __simpleThread_LOOP(thread_name): thread loop, same feature as in the arduino software
* __simpleThread_SETUP(thread_name): thread setup, same feature as in the arduino software
* __simpleThread_IN_LOOP(): this macro must be called from the orginal arduino loop function

Futures:
* - the lib contains only macros and one typedef
* - the first thread need about 300 byte flash memory, ever next need about 90 byte flash memory
* - threads can be controlled from other threads
* - a thread must be started befor it runs
* - the thread call is standardized
* - the ram use is as small as possible. Every static thread needs 4 byte and a few bits
* - few bits: for the first 1 - 8 threads 3 bytes are needed for the thread management. For the next 9 - 16 threads 3 new bytes are required
* - the dynamic threads needs 4 additional bytes ram for the unsigned long loop time value
* - the loop time from dynamic threads can be changed in the programm running
* - the loop to call the thread functions needs some bytes on ram, this value is ever the same

What do you think ?

I come from Germany and presented this lib already in the forum. A user said that it might be useful for arduino :: std :: Lib.
PS: Sorry for my "brocken" english, i hope you can read and understand it.

Update 13.05.2013
- add two examples:
--- example: blinking of two leds with different frequences (2 threads)
--- example: thread control with three threads, output over serial monitor

robtillaart

Thanks for sharing,

Can you give a small example sketch e.g. to blink two leds at a different frequency?

and no worries your English is fine!
Rob Tillaart

Nederlandse sectie - http://arduino.cc/forum/index.php/board,77.0.html -
(Please do not PM for private consultancy)

Jomelo

Hey,
i have updated the first thread. There are now two examples in the lib archiv:

- led blinking with two different frequenys on digital pin 12 and 13
- thread control with three threads and an output over serial monitor

Examples under:  File->examples->simpleThread->...  in arduino software

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy