Aber ich verseht nicht, wozu das notwendig ist, dass Methoden ihr Objekt
als "volatile" ansehen sollen.
Geht es nicht vielmehr nur um die einzelnen Attribute (z.B.
geschwindigkeit, farbe, gewicht), dass diese ohne Verzögerung in den
Speicher geschrieben oder vom Speicher geholt werden sollen, damit eine
IRQ-Routine ebenfalls darauf zugreifen kann?
Was ist so wichtig daran, dass die Metode selbst als "volatile"
gekennzeichnet wird?
Wenn ich z.B.
1 | #include<stdint.h>
|
2 |
|
3 | class car
|
4 | {
|
5 | public:
|
6 | volatile uint16_t geschwindigkeit;
|
7 | volatile uint16_t farbe;
|
8 | volatile uint16_t gewicht;
|
9 |
|
10 | uint16_t blinker_ein(uint16_t var);
|
11 | uint16_t blinker_aus(uint16_t var);
|
12 | }
|
13 |
|
14 | car a1;
|
15 |
|
16 | int main(void)
|
17 | {
|
18 |
|
19 | a1.blinker_ein(10);
|
20 |
|
21 | ...
|
In diesem Beispiel instanziiere ich zwar das Objekt "a1" nicht mit
"volatile", aber die drei Attribute in der Klasse selbst sind mit
"volatile" gekennzeichnet. Auf diese Weise kann ich aus einer
IRQ-Routine ohne Probleme auf diese Attribute zugreifen, ohne, dass das
ganze Objekt als "volatile" instanziiert werden muss und die Methoden
muss man auch nicht separat kennzeichnen.
Ich verstehe die Vorteile und Nachteile zwischen den beiden Beispielen
nicht.
Entschuldigt, meine Unwissenheit, ich stehe in C++ noch ziemlich am
Anfang.