Hallo zusammen
Ich experimentiere zur Zeit mit meinem ersten grafischen Display (KS0108
Controller). Dazu nutze ich die apetech Library, Download hier von der
Seite.
Ich wollte mir eine Funktion zum Laden von (quadratischen) Bitmaps
schreiben, da das nicht klappte habe ich die Funktion mal auf das
allermindeste Runtergebrochen, klappen will es aber immer noch nicht.
Ich bin überzeugt, dass es ein einfacher Fehler ist, klappen wills
trotzdem nicht;)
1 | /*
|
2 | * GraphicLCD.c
|
3 | *
|
4 | * Created: 19.06.2014 19:21:26
|
5 | * Author: Lisa
|
6 | */
|
7 |
|
8 |
|
9 | #define F_CPU 8000000
|
10 | #include <util/delay.h>
|
11 | #include <avr/io.h>
|
12 |
|
13 | #include "glcd_ks0108/ks0108.h"
|
14 | #include "glcd_ks0108/arial8.h"
|
15 |
|
16 |
|
17 | static const uint16_t bitmap[] PROGMEM = {0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00};
|
18 |
|
19 |
|
20 | //PC1 ist RW
|
21 |
|
22 | void quadraticBitmapLoader(const uint16_t * bmp){
|
23 |
|
24 | ks0108GotoXY(5, 5);
|
25 |
|
26 | ks0108WriteData(bmp[0]);
|
27 | ks0108WriteData(bmp[1]);
|
28 | ks0108WriteData(bmp[2]);
|
29 | ks0108WriteData(bmp[3]);
|
30 | ks0108WriteData(bmp[4]);
|
31 | ks0108WriteData(bmp[5]);
|
32 | ks0108WriteData(bmp[6]);
|
33 | ks0108WriteData(bmp[7]);
|
34 | }
|
35 |
|
36 | int main(void)
|
37 | {
|
38 |
|
39 | // Initialize the LCD
|
40 | ks0108Init(0);
|
41 |
|
42 | /*
|
43 | ks0108GotoXY(5,5);
|
44 |
|
45 | ks0108WriteData(bitmap[0]);
|
46 | ks0108WriteData(bitmap[1]);
|
47 | ks0108WriteData(bitmap[2]);
|
48 | ks0108WriteData(bitmap[3]);
|
49 | ks0108WriteData(bitmap[4]);
|
50 | ks0108WriteData(bitmap[5]);
|
51 | ks0108WriteData(bitmap[6]);
|
52 | ks0108WriteData(bitmap[7]);
|
53 | */
|
54 |
|
55 | quadraticBitmapLoader(bitmap);
|
56 | }
|
In dem Code seht ihr einmal die Funktion quadraticBitmapLoader, als
Parameter nimmt die ein Pointer auf ein Array.
Ich rufe die Funtkion mit meinem Bitmap-Array auf.
Auskommentiert habe ich dabei den eigentlich identischen Code in meiner
main-Routine.
Wenn ich die Funktion so umschreibe, dass Sie keinen Parameter erwartet
und direkt aus der Funktion direkt auf das Array bitmap zugreiffe dann
klappts, also muss es ein Problem mit der Übergabe des Arrays sein.
Das Problem ist, wie geschrieben, dass der identische Code in main
fnktioniert, in der quadraticBitmapLoader Funktion dann nicht mehr.
Nicht funktionieren heisst dabei, dass nur Kauderwelsch auf dem Display
ankommt, anstatt 4 schöner vertikaler Linien.
Übrigens: Der Anschluss des Displays muss korrekt sein, Text anzeigen
etc klappt nämlich.
Wer weiss Rat? ;)
Liebe Grüsse