Hallo,
bisher konnte ich durch Lesen in diesem Forum meine Probleme lösen.
Jetzt bitte ich um Hilfe.
Dies ist ein Programmteil, mit dem ich die Funktion testen will.
Das soll in einem größerem Programm laufen, dass auf einem Display
verschiedene "Tasten" anzeigen soll.
1
#include<avr/io.h>
2
#include<avr/interrupt.h>
3
#include<avr/pgmspace.h>
4
#include<stdlib.h>
5
6
// knopf_1 und knopf_2 sollen als Beispiel für die Pixel zweier Tasten sein
7
prog_ucharknopf_1[]=
8
{0x11,0x12,0x13,0x14,0x15,0x16};
9
10
prog_ucharknopf_2[]=
11
{0x21,0x22,0x23,0x24,0x25,0x26};
12
13
uint8_t*knopf;
14
volatileuint8_tk11,k12,k13;
15
volatileuint8_tk21,k22,k23;
16
17
// Aus dieser Tabelle soll die Auswahl erfolgen
18
constuint8_t*Disp_Tab[]PROGMEM=
19
{
20
knopf_1,
21
knopf_2
22
};
23
24
intmain(void)
25
{
26
// So werden die Daten richtig in k11, k12, k13 hinterlegt
27
>>>>>>>knopf=knopf_1;
28
//knopf = Disp_Tab[0];
29
k11=pgm_read_byte(&knopf[0]);
30
k12=pgm_read_byte(&knopf[1]),
31
k13=pgm_read_byte(&knopf[2]);
32
33
// Bei Auswahl aus der Tabelle, wie ich es gerne hätte, nicht, und Warning. Die markierte Zeile ist Zeile 37
34
//test.c:37: warning: assignment discards qualifiers from pointer target type
35
//knopf = knopf_2;
36
>>>>>>>knopf=Disp_Tab[1];
37
k21=pgm_read_byte(&knopf[0]);
38
k22=pgm_read_byte(&knopf[1]),
39
k23=pgm_read_byte(&knopf[2]);
40
41
return(0);
42
}
Damit beschäftige ich mich nun bereits mehrere Tage und auch die
"C-Bibel" hat mir noch nicht helfen können. Mit Pointer stehe ich auf
Kriegsfuß.
Wie muß ich es anstellen, um Daten z.B aus knopf_2 über Disp_Tab nach
k21, k22,k23 zu bekommen.
Gruß Jochen
> knopf = Disp_Tab[1];
Die Tabelle Disp_Tab steht im Flash. Wie kommst du darauf, du könntest
direkt auf die Inhalte zugreifen? Beim Zugriff auf die "knopf-Daten"
machst du es doch auch richtig.
Hallo Stefan Ernst,
danke für die Antwort.
Ja, das direkte Zugreifen klappt.
Da ich ca.50 "Knöpfe" habe, zu denen mehrere Paramteter gehören, wie
die Position auf dem Display, der aktive Bereich für Touch ..., möchte
ich nur sagen display(knopf1), knopf1 ist z.B #define knopf1 15, und aus
dem Array[15] mir die zugehörigen Pointer/Daten holen. In dem
Testprogramm soll es der Pointer auf die anzuzeigenden Pixel sein, der
dann in der Anwendung an die Anzeigefunktion übergeben wird. Im
Testprogramm prüfe ich nur, ob die richtigen Werte in kxx gelangen.
Das Ganze soll der besseren Lesbarkeit und Fehlerreduzierung dienen um
nicht bei jedem "Knopfwechsel" auf dem Display alle Parameter wiederholt
anzugeben.
Z.B. display(Knopf1, Position_x, Position_y usw.);
Ich denke dass es einfacher ist diese Parameter in Tabellen(Arrays)
abzulegen und den Knöpfen einen Wert zuzuordnen, der dann als Index
genutzt wird.
Deswegen möchte ich es in die Richtung wie in dem Testprogramm für den
knopf_2. Ist soetwas überhaupt möglich?
Gruß Jochen