View previous topic :: View next topic |
Author |
Message |
skoberlink
Joined: 27 May 2010 Posts: 52
|
|
Posted: Wed Jul 21, 2010 9:20 am |
|
|
So thanks again for helping me get it working. I've been playing with it and came across an issue. It's not a problem just something I'm curious about.
I have a task that I would like defined in another object file. This causes an error. Do task have to be defined in the main file? If not, how can I define them somewhere else?
Like I said not a big issue, just keeps my code neater in my opnion. |
|
|
tester
Joined: 29 Jun 2009 Posts: 40 Location: Russia, SPb
|
|
Posted: Wed Aug 04, 2010 7:41 am |
|
|
skoberlink wrote: | I have a task that I would like defined in another object file. This causes an error. Do task have to be defined in the main file? If not, how can I define them somewhere else? |
Yes, the task should be defined in main():
Code: |
void MyTask (void); // prototype
void main (void)
{
...
OS_Task_Define( MyTask);
OS_Task_Create(0, MyTask);
...
OS_Run();
}
|
P.S. Don't forget, that CCS does not link object files correctly. |
|
|
skoberlink
Joined: 27 May 2010 Posts: 52
|
|
Posted: Mon Aug 09, 2010 9:59 am |
|
|
I'm having another problem that I don't quite understand. At this point i've run several simple test programs without any problems using OSA. I'm using OSA in a program now and the tasks are never entered. I tracked it down to that the OS_State.bEnable variable was never enabled. This seemed to get reset during the call to _OS_SET_STATE(); I'm not sure why this would be. Any suggestions?
Code: | #define OS_Sched() \
{ \
_OS_temp = 0; \
\
IF_NOT_IS_IN_CRITICAL_SECTION() \
{ \
if (_OS_CurTask >= (OST_TASK_POINTER)OS_TaskVars + (OS_TASKS-1)) \
_OS_CurTask = (OST_TASK_POINTER)OS_TaskVars; \
else \
_OS_CurTask++; \
} \
\
_OS_SET_STATE(); \ //This resets the bEnable bit
\
/* Skip empty descriptor */ \
if (!_OS_bTaskEnable || _OS_bTaskPaused) goto _LABEL_SCHED_CONTINUE; \ //bEnable has been reset here so it doesn't enter the task, it just skips to the next loop
\
IF_NOT_OS_CHECK_DELAYS_GOTO_SCHED_CONTINUE; \
\
_OS_JumpToTask(); \
_OS_SaveRetAddr(); \
\
_LABEL_SCHED_CONTINUE:; \
} |
|
|
|
tester
Joined: 29 Jun 2009 Posts: 40 Location: Russia, SPb
|
|
Posted: Tue Aug 10, 2010 9:30 am |
|
|
skoberlink wrote: | I'm having another problem that I don't quite understand. |
Does the bEnable flag become set after OS_Task_Create?
Do you use OS_Task_Stop or OS_Task_Delete services?
Is OS_TASKS set properly? |
|
|
skoberlink
Joined: 27 May 2010 Posts: 52
|
|
Posted: Tue Aug 10, 2010 9:36 am |
|
|
tester wrote: | skoberlink wrote: | I'm having another problem that I don't quite understand. |
Does the bEnable flag become set after OS_Task_Create?
Do you use OS_Task_Stop or OS_Task_Delete services?
Is OS_TASKS set properly? |
The bEnable flag is set in both OS_state and OS_CurTask after the call to OS_Task_Create(). It is reset in OS_state but not in OS_CurTask after the call to OS_SET_STATE.
I do not use OS_Task_Stop or OS_Task_Delete
OS_TASKS is set to 1 currently as I am converting code over one task at a time. There is only 1 task being created and run. |
|
|
tester
Joined: 29 Jun 2009 Posts: 40 Location: Russia, SPb
|
|
Posted: Tue Aug 10, 2010 9:51 am |
|
|
skoberlink wrote: | The bEnable flag is set in both OS_state and OS_CurTask after the call to OS_Task_Create(). It is reset in OS_state but not in OS_CurTask after the call to OS_SET_STATE.
I do not use OS_Task_Stop or OS_Task_Delete
OS_TASKS is set to 1 currently as I am converting code over one task at a time. There is only 1 task being created and run. |
Can you send me your project? (e-mail: osa at pic24.ru) |
|
|
chargedneuron
Joined: 05 May 2007 Posts: 6 Location: Springfield, Oregon, USA
|
|
Posted: Thu Apr 14, 2011 11:34 am |
|
|
I was attempting to give this RTOS a try but I get the following error when I compile their tutorial #1;
Improper use of a function identifier
Code: | *** Error 117 "tutor1.c" Line 178(31,32): Improper use of a function identifier
*** Error 117 "tutor1.c" Line 179(31,32): Improper use of a function identifier |
I am using compiler 4.096.
The command on that line is;
Code: | OS_Task_Create(0, Task_T1); // Tell to OS that Task_T1 and Task_T2 will
OS_Task_Create(1, Task_T2); // be called by scheduler |
the origin of that command is in OSA_Pic18_CCS.h as;
Code: | /************************************************************************/
/* */
/* Create task */
/* */
/************************************************************************/
#define OS_Task_Create(priority, TaskName) \
{ \
_OS_Task_Create(priority, (OST_CODE_POINTER)TaskName); \
}
#define OS_Task_Create_M(priority, TaskName) \
{ \
OS_Task_Reserve(TaskName); \
_OS_Task_Create(priority, (OST_CODE_POINTER)TaskName); \
} |
Any suggestions as to how to correct this? My thanks in advance. _________________ "Trouble? I call it sport!" - Hyde - The League of Extraordinary Gentlemen
|
|
|
chargedneuron
Joined: 05 May 2007 Posts: 6 Location: Springfield, Oregon, USA
|
|
Posted: Thu Mar 22, 2012 1:25 am |
|
|
After working with one of the designers. it turns out that the PIC18 Specific header required a fix. _________________ "Trouble? I call it sport!" - Hyde - The League of Extraordinary Gentlemen
|
|
|
Bill24
Joined: 30 Jun 2012 Posts: 45
|
|
Posted: Fri Sep 07, 2012 7:13 am |
|
|
I am testing OSA version3 using a PIC18F46K80 and CCS compiler version 4.135
The example worked with very little fuss. I had to change to location of OSA.h to get it to run.
Looking through the code, to define a task eg
Code: |
OS_Task_Reserve(Task_Rolling); // Define tasks
|
Some code is called as follows:
Code: |
/******************************************/
/* */
/* Create task by indirect address */
/* */
/******************************************/
#define OS_Task_Reserve(TaskName) \
if (_pcl & 1) TaskName();
|
Could someone please tell me what this does and how it works.
I am intrigued. |
|
|
future
Joined: 14 May 2004 Posts: 330
|
|
Posted: Sun Sep 23, 2012 8:03 am |
|
|
It tells the compiler to not remove the function otherwise it will not get into the final code. |
|
|
|