Ich versuche gerade das S65 Display L2F50 an einem AT90USB1287 (usbkey)
zum Laufen zu bekommen, doch leider wird mir nichts angezeigt.
http://www.superkranz.de/christian/S65_Display/pics/circuit_orig.jpg
Angeschlossen ist es wie hier, nur dass ich Port B zu Port C geändert
habe, da auf B am USBKey schon ein Teil vom Dataflash und Buttons
liegen. Die Reihenfolge habe ich aber eingehalten:
1 | #define F_CPU 8000000
|
2 |
|
3 | #define LCD_CS PC0
|
4 | #define LCD_RESET PC6
|
5 | #define LCD_RS PC7
|
6 | #define LCD_MOSI PC2
|
7 | #define LCD_MISO PC3
|
8 | #define LCD_SCK PC1
|
(auszug disp.h)
Im Original-Code sind es 16Mhz, doch auf meinem USB-Key ist ein 8Mhz
Quarz verbaut, das habe ich im Header geändert. Kann es sein, dass der
Controller zu langsam ist?
Im Makefile habe ich ausserdem noch dem mega128 zu at90usb1287 geändert.
Init des Display läuft durch, ich lasse mir das durch die LEDs auf dem
USBKey anzeigen.
Hier die main, sie läuft komplett durch, alle drei LEDs gehen an:
1 | uint16_t cnt;
|
2 | char nr[7];
|
3 | char txt[]=". Zeile L2F\0";
|
4 | DDRD |= (1<<PD4)|(1<<PD5)|(1<<PD6)|(1<<PD7);
|
5 | PORTD &= ~(1<<PD4)|~(1<<PD5)|~(1<<PD6)|~(1<<PD7);
|
6 |
|
7 | port_init();
|
8 | lcd_init_c();
|
9 |
|
10 | backcolor=0xFFFF;
|
11 | textcolor=0x0000;
|
12 |
|
13 | PORTD |= (1<<PD5); // led
|
14 | fill_screen(0x0780);
|
15 | PORTD |= (1<<PD6); // led
|
16 | cnt=0;
|
17 |
|
18 | while (1) {
|
19 | ubi2dec(cnt,nr,1);
|
20 | print_str(0 ,(cnt*CHAR_H) % (12*14),nr);
|
21 | print_str(5*CHAR_W,(cnt*CHAR_H) % (12*14),txt);
|
22 |
|
23 | textcolor=cnt;
|
24 |
|
25 | cnt++;
|
26 | _delay_ms(100);
|
27 | PORTD |= (1<<PD7); // led
|
28 | }
|
29 | return(0);
|
Ich hoffe, jemand von euch kann mir helfen, das Display zum Laufen zu
bekommen.