ich probiere gerade, ein display [dogl128] per µC [AtMega168]
anzusteuern und hab meine kleinen problemchen damit.
*) initialisierung funktioniert
*) datenübertragung funktioniert ([0xAA] ist eine gestrichelte linie)
*) font [8x6] einbinden funktioniert. zumindest teilweise.
Ich habe am Display 4x das gleiche Zeichen (ASCII-Zeichen Nummero 49,
eine '1'), jeweils mit einer vertikalen Trennlinie versucht darzustellen
- mit unterschiedlichen Methoden mit unterschiedlichem Erfolg. Die
Kommunikation mit dem Display scheint zu funktionieren.
Das allererste Zeichen habe ich versucht per Schleife darzustellen, mit
mäßigem Erfolg:
1 | char mychar;
|
2 | mychar='1'; // ASCII-Code 49 bzw. 0x31
|
3 |
|
4 | for(uint8_t i=0;i<=5;i++) // 1. komisches Zeichen
|
5 | display_write_byte(font[mychar][i]);
|
Wenn ich aber die Schleife Schleife sein lasse und die 6 byte einzeln
rüberschicke, bekomme ich das gewünschte Zeichen dargestellt:
1 | display_write_byte(font[mychar][0]); // 2. ohne Schleife funktioniert es!
|
2 | display_write_byte(font[mychar][1]);
|
3 | display_write_byte(font[mychar][2]);
|
4 | display_write_byte(font[mychar][3]);
|
5 | display_write_byte(font[mychar][4]);
|
6 | display_write_byte(font[mychar][5]);
|
... und keiner weiß warum.
Weiters habe ich diesen Wert ('1') einer Funktion übergeben, mit dem
selben mäßigen Erfolg.
Setze ich jedoch die Variable direkt auf '1' bekomme ich es angezeigt:
1 | void display_write_char(char temp)
|
2 | {
|
3 | display_write_byte(font[temp][0]); // 3. komische Zeichen (direkt übernommen)
|
4 | display_write_byte(font[temp][1]); // es hat den Wert 'i' (also ASCII-Code 49),
|
5 | display_write_byte(font[temp][2]); // der Wert 49 wurde mehrfach überprüft
|
6 | display_write_byte(font[temp][3]);
|
7 | display_write_byte(font[temp][4]);
|
8 | display_write_byte(font[temp][5]);
|
9 | display_write_line();
|
10 |
|
11 | temp='1';
|
12 |
|
13 | display_write_byte(font[temp][0]); // legt man die Variable konkret auf 49
|
14 | display_write_byte(font[temp][1]); // (was eigentlich unnötig ist, da sie
|
15 | display_write_byte(font[temp][2]); // bereits 49 beinhaltet) funktioniert es ...
|
16 | display_write_byte(font[temp][3]);
|
17 | display_write_byte(font[temp][4]);
|
18 | display_write_byte(font[temp][5]);
|
19 | }
|
ich habe mehrfach den inhalt der variablen verglichen (mit "wenn gleich
zeichne gepunktete linie") - und in jedem fall haben die variablen den
wert "49" ...
ich weiß nicht mehr weiter. irgendwo ist ein hund versteckt - und ich
bin zu blöd ihn zu finden ...