Hallo!
Hab ein kleines Problem beim Programmierem mit dem M16C/62P Controller.
Dieser verfügt ja über zwei verschiedene Pointer"größen" near und far
(near Adressbereich 64kB, far-Bereich 1Mb).
Habe jetzt eine Funktion welche die Adresse einer (const)Variablen im
Flash (also im far Bereich) an eine andere Funktion übergibt. Dabei
wird aber anscheinend nur ein near Pointer übergeben, obwohl der
Parameter der Funktion als far deklariert ist.
Hier zur Verdeutlichung:
1 | // Deklaration der Variablen (global)
|
2 | unsigned char far *data;
|
3 | ...
|
4 | // Zuweisung der Adresse der Variable im Flash
|
5 | data = (Adresse 0xF1234);
|
6 | ...
|
7 | // Funktion 1
|
8 | void func1 (void)
|
9 | {
|
10 | ...
|
11 | // Hier hat data noch Adresse 0xF1234
|
12 | func2(data);
|
13 | ...
|
14 | }
|
15 |
|
16 | void func2 (unsigned char far *newdata)
|
17 | {
|
18 | ...
|
19 | // newdata hat jetzt Adresse 0x1234
|
20 | ...
|
21 | }
|
Hab auch schon probier den Pointer selber im far Bereich zu definieren
(void func2 (unsigned char far * far newdata)), aber auch das brachte
nichts.
Was mache ich falsch ?
Schöne Grüße,
Thomas