1 | Codeausschnitt:
|
2 | const uint8_t alpha_table[]PROGMEM={"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.,!?"};
|
3 | const uint8_t hallo[]PROGMEM= {"HALLO"};
|
4 | const uint8_t welt[]PROGMEM= {"WELT!"};
|
5 |
|
6 | const uint16_t zeichensatz[40][5]PROGMEM=
|
7 | {
|
8 | {127, 392, 520, 392, 127}, {1023, 529, 529, 297, 198}, ... und noch viele mehr
|
9 | };
|
10 |
|
11 | void plott_short_word(uint8_t *field)
|
12 | {
|
13 | uint8_t found = 0, j = 0;
|
14 |
|
15 | for(uint8_t i = 0; i<5;i++)
|
16 | {
|
17 | j = 0;
|
18 | do
|
19 | {
|
20 | if((field)==((uint8_t)pgm_read_byte(&alpha_table[j])) || (j==39))
|
21 | found = 1;
|
22 | else
|
23 | j++;
|
24 | } while (!found);
|
25 |
|
26 | field++;
|
27 | found = 0;
|
28 |
|
29 | for(uint8_t m = 0; m<5;m++)
|
30 | {
|
31 | output[m+6*i]=(uint16_t)pgm_read_word (&zeichensatz[j][m]);
|
32 | }
|
33 | }
|
34 | }
|
35 |
|
36 | int main (void)
|
37 | {
|
38 | ...
|
39 | plott_short_word(pgm_read_byte(hallo));
|
40 | }
|
41 |
|
42 | ausgabe an display über interrupt (funktioniert tadellos)
|
folgendes: aufgrund von platzproblemen im sram muss ich einige dinge in
den flash auslagern
nun versuche ich einen pointer auf die zeichenfolge hallo an eine
funktion zu übergeben, aber irgendwie will das nicht so ganz ...
wenn ich wie im code stehend
1 | if((field)==((uint8_t)pgm_read_byte(&alpha_table[j])) || (j==39))
|
anwende, wird nur das erste zeichen des übergebenen worts ausgeben, die
anderen zeichen sind einfach die darauf folgenden
z.B. Aufruf
1 | plott_short_word(pgm_read_byte(hallo));
|
Ausgabe: HIJKL
versucht "welt!" auszugeben hat ähnliches ergebnis nur das es mit w
anfängt
wenn ich aber die if abfrage auf dieses hier ändere
1 | if(((uint8_t)pgm_read_byte(&hallo[i]))==((uint8_t)pgm_read_byte(&alpha_table[j])) || (j==39))
|
funktioniert es aber (was aus meiner ursprünglichen version kam ohne
eigene funktion)
wo ist mein fehler ich suche schon ne weile (kann gut sein das ich
gerade ein brett vor dem kopf habe, da ich den halben tag daran
rumgebastelt habe)
muss aber auch gestehen das ist das erste mal das ich mit pgm arbeite,
bitte um nachsicht wenn ich grobe fehler gemacht habe