Professional Documents
Culture Documents
CPU: my_cpu
OS: my_os(PRETASKHOOK=TRUE)
APPMODE: my_appmode
COUNTER MyC {
MAXALLOWEDVALUE = 1; // 1 msec
TYPE = SOFTWARE;
MINCYCLE=1;
TICKSPERBASE=1;
ISR MyISR{
STACKSIZE = 128;
IPL = 1;
TASK A
PRIORITY=10;
SCHEDULE=FULL;
AUTOSTRAT=FALSE;
ACTIVATION=1;
STACKSIZE=128;}
OS_MAIN( void ) {
DIOInit();
Init_PIT0();
StartOS(my_appmode); }
ISR(MyISR)
IncrementCounter(MyC);
AchitIntrerupereTimer();
TASK(Task1) {
Os_StopwatchTickType start,finish,correction;
#ifdef OS_TIME_MONITORING
start = Os_GetExecutionTime();
#endif
GetResource(Resource1);
……
ReleaseResource(Resource1);
#ifdef OS_TIME_MONITORING
finish = Os_GetExecutionTime();
#endif
}
LA MOMENTUL 150.
SE AFLA IN STAREA: R
NU STIU, CRED CA A .
HIPERPERIOADA=15;
LA 5,5: T1= S; T2=E; T3=S;
LA 10: T1=S; T2=R; T3=E;
Se executa instr. L2B
CPU: my_cpu
OS: my_os
APPMODE: my_appmode
COUNTER MyC {
MAXALLOWEDVALUE = 1000;
TYPE = SOFTWARE;
MINCYCLE=1;
TICKSPERBASE=1;}
ISR MyISR{
STACKSIZE = 128;
IPL = 1;
ALARM Al_A{
COUNTER =MyC;
ACTION=ACTIVATETASK{TASK=A};
ALARMTIME=0; //faza
CYCLETIME=100;}; //perioada
RESOURCE MyRES{
RESOURCETYPE = STANDARD;
TASK A
PRIORITY=10;
SCHEDULE=FULL;
AUTOSTRAT=FALSE;
ACTIVATION=1;
STACKSIZE=128;
TASK B
{
PRIORITY=5; /
SCHEDULE=FULL;
AUTOSTRAT=FALSE;
ACTIVATION=1;
STACKSIZE=128;
EVENT=EV;
OS_MAIN( void ) {
DIOInit();
Init_PIT0();
StartOS(my_appmode); }
TASK(A)
GetResource(MyRES);
val61= DIOGetButtonState(61);
val62= DIOGetButtonState(62);
val63= DIOGetButtonState(63);
val64= DIOGetButtonState(64);
ReleaseResource(MyRES);
uint8_t i;
#ifdef OS_TIME_MONITORING
#endif
for (i=1:,<1000;i++){
#ifdef OS_TIME_MONITORING
finish = Os_GetExecutionTime();
if(finish>start)
else
#endif
if(uded<1000)
SetEvent(B,EV);
TerminateTask();