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
volatile
bool
isrFlag
=
false
;
28
29
TASK
(Idle)
30
{
31
while
(1);
32
}
33
34
TASK
(Task1)
35
{
36
StatusType
stat =
ActivateTask
(Task2);
37
assert
(stat ==
E_OK
);
38
39
stat =
ActivateTask
(Task3);
40
assert
(stat ==
E_OK
);
41
42
stat =
ActivateTask
(Task4);
43
assert
(stat ==
E_OK
);
44
45
stat =
ActivateTask
(Task5);
46
assert
(stat ==
E_OK
);
47
48
stat =
ActivateTask
(Task6);
49
assert
(stat ==
E_OK
);
50
51
stat =
ActivateTask
(Task7);
52
assert
(stat ==
E_OK
);
53
54
stat =
ActivateTask
(Task8);
55
assert
(stat ==
E_OK
);
56
57
stat =
TerminateTask
();
58
assert
(stat ==
E_OK
);
59
}
60
61
TASK
(Task2)
62
{
63
StatusType
stat =
TerminateTask
();
64
assert
(stat ==
E_OK
);
65
}
66
67
TASK
(Task3)
68
{
69
StatusType
stat =
TerminateTask
();
70
assert
(stat ==
E_OK
);
71
}
72
73
TASK
(Task4)
74
{
75
StatusType
stat =
TerminateTask
();
76
assert
(stat ==
E_OK
);
77
}
78
79
TASK
(Task5)
80
{
81
StatusType
stat =
TerminateTask
();
82
assert
(stat ==
E_OK
);
83
}
84
85
TASK
(Task6)
86
{
87
StatusType
stat =
TerminateTask
();
88
assert
(stat ==
E_OK
);
89
}
90
91
TASK
(Task7)
92
{
93
StatusType
stat =
TerminateTask
();
94
assert
(stat ==
E_OK
);
95
}
96
97
TASK
(Task8)
98
{
99
StatusType
stat =
TerminateTask
();
100
assert
(stat ==
E_OK
);
101
}
102
103
extern
void
StartupHook
(
void
)
104
{
105
DDRB = 0xFF;
// PB as output
106
PORTB = 0xFF;
// keep all LEDs off
107
108
DDRD = 0x00;
// PD as input
109
PORTD = 0xFF;
// enable PU on PD
110
111
#if defined (__AVR_ATmega32__)
112
113
#elif defined (__AVR_ATmega128__) || defined (__AVR_ATmega1284__)
114
/* Timer 2 */
115
#if defined (OS_CONFIG_SIM) && OS_CONFIG_SIM == true
116
#if defined (__AVR_ATmega128__)
117
TCCR2 = (1 << CS20);
// Enable Timer2 with Prescaler 1
118
TIMSK |= 1 << TOIE2;
// Enable Overflow Interrupt (Timer2)
119
#else
/* defined (__AVR_ATmega128__) */
120
TCCR2B = (1 << CS20);
// Enable Timer2 with Prescaler 1
121
TIMSK2 |= 1 << TOIE2;
// Enable Overflow Interrupt (Timer2)
122
#endif
/* defined (__AVR_ATmega128__) */
123
#endif
/* defined (OS_CONFIG_SIM) && OS_CONFIG_SIM == true */
124
#else
/* defined (__AVR_ATmega32__) */
125
#error Unknown CPU defined!
126
#endif
/* defined (__AVR_ATmega32__) */
127
128
uint8_t t = 0;
129
130
while
(t < 6) {
131
uint8_t r = PORTB;
132
r ^= (1 << 7);
133
PORTB = r;
134
DELAY_MS
(50);
135
t++;
136
}
137
}
138
139
extern
void
ShutdownHook
(
StatusType
error)
140
{
141
DDRB = 0xFF;
// PB as output
142
PORTB = 0xFF;
// keep all LEDs off
143
144
for
(uint8_t i = 0; i < 11; i++) {
145
PORTB ^= 0xFF;
146
DELAY_MS
(1000);
147
}
148
}
149
150
extern
void
PreTaskHook
(
void
)
151
{
152
TaskType
task;
153
GetTaskID
(&task);
154
TaskStateType
state =
SUSPENDED
;
155
GetTaskState
(task, &state);
156
}
157
158
extern
void
PostTaskHook
(
void
)
159
{
160
TaskType
task;
161
GetTaskID
(&task);
162
TaskStateType
state =
SUSPENDED
;
163
GetTaskState
(task, &state);
164
}
165
166
extern
void
ErrorHook
(
StatusType
error)
167
{
168
169
}
170
171
ISR
(TIMER2_OVF_vect)
172
{
173
174
}
TaskType
enum tasks_e TaskType
Type for task reference.
Definition:
TaskTypes.h:29
StatusType
enum StatusType_e StatusType
Type for status.
ErrorHook
void ErrorHook(StatusType error)
PostTask hook function.
Definition:
App.c:784
StartupHook
void StartupHook(void)
Definition:
App.c:702
GetTaskState
#define GetTaskState
Definition:
OS_API.h:83
assert.h
Assert macros and functions.
DELAY_MS
#define DELAY_MS(ms)
Definition:
App.c:24
TASK
TASK(Idle)
Definition:
App.c:33
E_OK
@ E_OK
Definition:
Types.h:40
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
isrFlag
volatile bool isrFlag
Definition:
App.c:27
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.
test
TM
TM15
App.c
Generated by
1.8.20