Hallo zusammen!
Ich sitze nun seit geschlagenenen 9 Stunden an meinem µC und meinem
Display und bekomme es einfach nicht hin, dass auf meinem Display das
steht, was da hin soll.
Ich möchte über I2C das Display ansteuern (AVR GCC). Das Display
löschen, und eine Grade zeichnen funktioniert, zumindest teilweise.
Wenn ich nämlich erst das Display lösche, und dann die Grade zeichnen
lassen will, dann wird nur das Display gelöscht.
Meine Routine zur Textausgabe funktioniert hingegen nie.
Als nächstes Problem stellt sich mit die Touchscreenabfrage. Da ich die
Interrupuleitung SBUF nicht habe, muss ich irgendwie pollen. Jegliche
Versuche, das zu tun sind gescheitert.
Als TWI Lib nutze ich die Lib von P. Fleury.
Der µC ist ein auf 16MHz getakteter AT90CAN128.
Kann mir jemand bei dem Problem behilflich sein?
Hier der Code für die Unterprogramme:
1 | void Display_loeschen(void)
|
2 | {
|
3 | int i = 0;
|
4 | i2c_start(0x10);
|
5 | i2c_write(DC1);
|
6 | i2c_write(0x03);
|
7 | i2c_write(ESC);
|
8 | i2c_write('D');
|
9 | i2c_write('L');
|
10 | i2c_write(DC1 + 0x03 + ESC + 'D' + 'L');
|
11 | i2c_start(0x10);
|
12 | do
|
13 | {
|
14 | i = i2c_readAck();
|
15 | }while (i!= ACK);
|
16 | }
|
17 |
|
18 | int text_send(int xpos, int ypos, char * text)
|
19 | {
|
20 | int len, bcc, i;
|
21 | i = 0;
|
22 | len = strlen(text);
|
23 | bcc = 0;
|
24 | while (i <= len)
|
25 | {
|
26 | bcc+= text[i];
|
27 | i++;
|
28 | }
|
29 | bcc += DC1 + ESC + 'Z' + 'R'+ xpos + ypos + len;
|
30 | bcc = bcc % 0x100;
|
31 | i2c_start(0x10);
|
32 | i2c_write(DC1);
|
33 | i2c_write(0x06 + strlen(text));
|
34 | i2c_write(ESC);
|
35 | i2c_write('Z');
|
36 | i2c_write('R');
|
37 | i2c_write(xpos);
|
38 | i2c_write(ypos);
|
39 | i = 0;
|
40 | while (i <=strlen(text))
|
41 | {
|
42 | i2c_write(text[i]);
|
43 | i++;
|
44 | }
|
45 | i2c_write(bcc);
|
46 | i2c_stop();
|
47 | return (bcc);
|
48 | }
|
49 |
|
50 | int Linie_zeichnen(int x1, int y1, int x2, int y2)
|
51 | {
|
52 | int bcc;
|
53 | bcc = DC1 + 0x07 + ESC + 'G' + 'D' + x1 + y1 + x2 + y2;
|
54 | bcc = bcc % 0x100;
|
55 |
|
56 | i2c_start_wait(0x10);
|
57 | i2c_write(DC1);
|
58 | i2c_write(0x07);
|
59 | i2c_write(ESC);
|
60 | i2c_write('G');
|
61 | i2c_write('D');
|
62 | i2c_write(x1);
|
63 | i2c_write(y1);
|
64 | i2c_write(x2);
|
65 | i2c_write(y2);
|
66 | i2c_write(bcc);
|
67 | i2c_stop();
|
68 | return (bcc);
|
69 | }
|