Sonsivri
 
*
Welcome, Guest. Please login or register.
Did you miss your activation email?
December 03, 2016, 01:21:23 01:21


Login with username, password and session length


Pages: [1]
Print
Author Topic: mixing RTOS with conventional programming  (Read 4285 times)
0 Members and 1 Guest are viewing this topic.
odsk
Junior Member
**
Offline Offline

Posts: 53

Thank You
-Given: 11
-Receive: 12


« on: June 06, 2011, 07:51:08 19:51 »

Hi,
I am trying to use RTOS for my future desing and do have a newbie question to the experts:
Can I mix convetional programing (using interrupts...etc) with RTOS processes?
I am trying to receive data through UART and was hoping to use interrupt driven events to receive the data compared to running a process at determined intervals (RTOS) for fetching the data.

Regards,
ODSK
Logged
pickit2
Moderator
Hero Member
*****
Offline Offline

Posts: 3816

Thank You
-Given: 567
-Receive: 2049


There is no evidence that I muted SoNsIvRi


« Reply #1 on: June 10, 2011, 08:28:28 20:28 »

simple answer is yes.
http://www.scribd.com/doc/46919105/RTOS

RTOS Scheduling Algorithms Polled Loop System w/interrupts
 
Polling system goodfit; however, several time sensitive critical tasks exists
Example: transistor amplifier overheat
employ interrupts


RTOS Scheduling Algorithms Interrupt Driven System
Main program consists of systeminitialization activities
System then placed in continuous loop towait for interrupt driven events
System prioritizes multiple interrupts andhandles highest priority tasks first
Example: Wall-following Robot
 


 

« Last Edit: June 10, 2011, 09:04:48 21:04 by pickit2 » Logged

Note: If you have no posts other than, I want or reporting a dead link Then you can't complain If I remove your post So Stop Leeching
sam_des
Active Member
***
Offline Offline

Posts: 221

Thank You
-Given: 47
-Receive: 111


« Reply #2 on: June 11, 2011, 04:45:00 04:45 »

Hi,

Quote
Can I mix convetional programing (using interrupts...etc) with RTOS processes?
Yes, you can. In fact that's how the systems with OS works. Most of the time your tasks are blocked, waiting for something to happen. Like timer expire, button press or serial rx/tx etc.. And when it happens OS wakes/unblocks the corresponding task which takes the necessary action and returns to blocked state.
That's how you can determine the loading of your processor. Just measure how much time it spends in idle task within OS  Wink

Only requirement in case of interrupts is that you must inform OS about it. OS requires this information for handling interrupt nesting and context switching(in case an interrupt makes higher priority task ready). Since in RTOSs, Application handles the interrupts instead of OS, it's the duty of application to inform OS about it

Quote
I am trying to receive data through UART and was hoping to use interrupt driven events to receive the data compared to running a process at determined intervals (RTOS) for fetching the data.
There is no need to wake the task on each received byte or some predetermined interval. All you have to do is to agree upon the FRAME which will be used to both transmit and receive. After that your interrupt will continue receiving data until complete frame has been received and wake the task only then. That way none of processor time is wasted and task executes only when required.
Note that you require BYTE FIFO queues and many RTOSs does not provide them. Instead they provide message queues which are usually used for intertask comm. You can use them, but that will waste the RAM as message queue element is usually (void*) pointer. In that case you may require to write down your own BYTE queue function using other OS services.

hope that helps
sam_des
Logged

Never be afraid to do something new. Remember Amateurs built the Ark, Professionals built the Titanic !
pak
Junior Member
**
 Muted
Offline Offline

Posts: 61

Thank You
-Given: 5
-Receive: 17


« Reply #3 on: December 08, 2011, 06:57:34 06:57 »

Quote
Can I mix convetional programing (using interrupts...etc) with RTOS processes?
I am trying to receive data through UART and was hoping to use interrupt driven events to receive the data compared to running a process at determined intervals (RTOS) for fetching the data.


Just need to take care of global variables by using two methods,
1) Stop/Restart interrupt and os scheduler
2) message from ISR to Task

Regards,
pak

  Smiley Happy Microcontroller Programming  Smiley
Logged
Pages: [1]
Print
Jump to:  


DISCLAIMER
WE DONT HOST ANY ILLEGAL FILES ON THE SERVER
USE CONTACT US TO REPORT ILLEGAL FILES
ADMINISTRATORS CANNOT BE HELD RESPONSIBLE FOR USERS POSTS AND LINKS

... Copyright 2003-2999 Sonsivri.to ...
Powered by SMF 1.1.18 | SMF © 2006-2009, Simple Machines LLC | HarzeM Dilber MC