AutosarOS
App.c
Go to the documentation of this file.
1
14
#include "
assert.h
"
15
16
#include "
OS_API.h
"
17
18
#include <avr/io.h>
19
#include <util/delay.h>
20
21
#if defined (OS_CONFIG_SIM) && OS_CONFIG_SIM == true
22
#define DELAY_MS(ms)
23
#else
24
#define DELAY_MS(ms) _delay_ms(ms)
25
#endif
/* defined (OS_CONFIG_SIM) && OS_CONFIG_SIM == true */
26
27
TASK
(Idle)
28
{
29
while
(1);
30
}
31
32
TASK
(Task1)
33
{
34
EventMaskType
mask = 0;
35
StatusType
stat =
GetEvent
(Task2, &mask);
36
assert
(stat ==
E_OK
&& mask == 0);
37
38
stat =
SetEvent
(Task1, 0b1);
39
assert
(stat ==
E_OK
);
40
41
stat =
GetEvent
(Task1, &mask);
42
assert
(stat ==
E_OK
&& mask == 0b1);
43
44
stat =
WaitEvent
(0b1);
45
assert
(stat ==
E_OK
);
46
47
stat =
ClearEvent
(0b1);
48
assert
(stat ==
E_OK
);
49
50
stat =
GetEvent
(Task1, &mask);
51
assert
(stat ==
E_OK
&& mask == 0);
52
53
stat =
SetEvent
(Task2, 0b10);
54
assert
(stat ==
E_OK
);
55
56
stat =
Schedule
();
57
assert
(stat ==
E_OK
);
58
59
stat =
TerminateTask
();
60
assert
(stat ==
E_OK
);
61
}
62
63
TASK
(Task2)
64
{
65
StatusType
stat =
ActivateTask
(Task1);
66
assert
(stat ==
E_OK
);
67
68
EventMaskType
mask = 0;
69
stat =
GetEvent
(Task1, &mask);
70
assert
(stat ==
E_OK
&& mask == 0);
71
72
stat =
WaitEvent
(0b10);
73
assert
(stat ==
E_OK
);
74
75
stat =
TerminateTask
();
76
assert
(stat ==
E_OK
);
77
}
78
79
extern
void
StartupHook
(
void
)
80
{
81
DDRB = 0xFF;
// PB as output
82
PORTB = 0xFF;
// keep all LEDs off
83
84
DDRD = 0x00;
// PD as input
85
PORTD = 0xFF;
// enable PU on PD
86
87
#if defined (__AVR_ATmega32__)
88
89
#elif defined (__AVR_ATmega128__) || defined (__AVR_ATmega1284__)
90
/* Timer 2 */
91
#if defined (OS_CONFIG_SIM) && OS_CONFIG_SIM == true
92
#if defined (__AVR_ATmega128__)
93
TCCR2 = (1 << CS20);
// Enable Timer2 with Prescaler 1
94
TIMSK |= 1 << TOIE2;
// Enable Overflow Interrupt (Timer2)
95
#else
/* defined (__AVR_ATmega128__) */
96
TCCR2B = (1 << CS20);
// Enable Timer2 with Prescaler 1
97
TIMSK2 |= 1 << TOIE2;
// Enable Overflow Interrupt (Timer2)
98
#endif
/* defined (__AVR_ATmega128__) */
99
#endif
/* defined (OS_CONFIG_SIM) && OS_CONFIG_SIM == true */
100
#else
/* defined (__AVR_ATmega32__) */
101
#error Unknown CPU defined!
102
#endif
/* defined (__AVR_ATmega32__) */
103
104
uint8_t t = 0;
105
106
while
(t < 6) {
107
uint8_t r = PORTB;
108
r ^= (1 << 7);
109
PORTB = r;
110
DELAY_MS
(50);
111
t++;
112
}
113
}
114
115
extern
void
ShutdownHook
(
StatusType
error)
116
{
117
DDRB = 0xFF;
// PB as output
118
PORTB = 0xFF;
// keep all LEDs off
119
120
for
(uint8_t i = 0; i < 11; i++) {
121
PORTB ^= 0xFF;
122
DELAY_MS
(1000);
123
}
124
}
125
126
extern
void
PreTaskHook
(
void
)
127
{
128
TaskType
task;
129
GetTaskID
(&task);
130
TaskStateType
state =
SUSPENDED
;
131
GetTaskState
(task, &state);
132
}
133
134
extern
void
PostTaskHook
(
void
)
135
{
136
TaskType
task;
137
GetTaskID
(&task);
138
TaskStateType
state =
SUSPENDED
;
139
GetTaskState
(task, &state);
140
}
141
142
extern
void
ErrorHook
(
StatusType
error)
143
{
144
145
}
146
147
ISR
(TIMER2_OVF_vect)
148
{
149
150
}
TaskType
enum tasks_e TaskType
Type for task reference.
Definition:
TaskTypes.h:29
EventMaskType
uint8_t EventMaskType
Data type of the event mask.
Definition:
EventTypes.h:21
StatusType
enum StatusType_e StatusType
Type for status.
ErrorHook
void ErrorHook(StatusType error)
PostTask hook function.
Definition:
App.c:784
Schedule
#define Schedule
Definition:
OS_API.h:81
DELAY_MS
#define DELAY_MS(ms)
Definition:
App.c:24
StartupHook
void StartupHook(void)
Definition:
App.c:702
ClearEvent
#define ClearEvent
Definition:
OS_API.h:46
WaitEvent
#define WaitEvent
Definition:
OS_API.h:48
GetTaskState
#define GetTaskState
Definition:
OS_API.h:83
assert.h
Assert macros and functions.
TASK
TASK(Idle)
Definition:
App.c:33
E_OK
@ E_OK
Definition:
Types.h:40
SetEvent
#define SetEvent
Definition:
OS_API.h:45
ISR
ISR(INT0_vect)
Definition:
App.c:806
PreTaskHook
void PreTaskHook(void)
PreTask hook function.
Definition:
App.c:768
ActivateTask
#define ActivateTask
Definition:
OS_API.h:78
assert
#define assert(expression)
Definition:
assert.h:37
SUSPENDED
@ SUSPENDED
The task is suspended and will not be scheduled.
Definition:
TaskTypes.h:58
TerminateTask
#define TerminateTask
Definition:
OS_API.h:80
OS_API.h
Operating System API.
GetTaskID
#define GetTaskID
Definition:
OS_API.h:82
PostTaskHook
void PostTaskHook(void)
PostTask hook function.
Definition:
App.c:776
ShutdownHook
void ShutdownHook(StatusType error)
Definition:
App.c:757
TaskStateType
enum OsTaskState_e TaskStateType
Task state.
GetEvent
#define GetEvent
Definition:
OS_API.h:47
test
EM
EM2
App.c
Generated by
1.8.20