Ich hab ein kleines naja sagen wir größeres Problem damit das S65 an
meinem Mega8 ( Ich will es später an was größeres hängen nur dauert das
noch 1-2 Monate bis ich mit der Platine und allem fertig bin ).
Verwenden tu ich den Code von
http://www.superkranz.de/christian/S65_Display/DisplaySoftware.html und
ich hab das grüne LPH88xxxx.
Um den Code auf den Atmega8 zu bekommen hab ich die Pins für den
Hardware SPI angepasst
1 | #define LCD_CS PB1 // CS Display
| 2 | #define LCD_RESET PB0 // Reset Display
| 3 | #define LCD_RS PB2 // RS Display
| 4 | #define LCD_MOSI PB3 // Data Display
| 5 | #define LCD_MISO PB4 // frei
| 6 | #define LCD_SCK PB5 // Clock Display
|
Außerdem läuft alles auf dem STK500 Hardware (nachgemessen) @3,2V wie im
Tread in der Codesammlung als Funktionierend beschrieben.
Clock ist 16 Mhz über XT1 ans STK und keine Jumper bei XTAL1 und OSCSEL
(Quarzoszilator). Hab kein Oszi aber out liegt bei etwa 2V und wenn man
statt dem Display die LEDs anschließt flackern diese kurzzeitig.
Dann hab ich noch aus der Source den Char-Table rausgeschmissen und alle
Schriftfunktionen. Momentan sollte das Display einfach initialisiert
werden und danach den Hintergrund in die Farbe Grün ändern.
Code ist im Anhang. Asö LEDs leuchten und hängen mit R=100 Ohm und
gemeinsamer Masse an der Speisespannung des STK500 (12V) abgegriffen
nach dem Gleichrichter (ja es sind nur um die 11,3V aber sie leuchten
hell)
Kann mal jemand der Zeit hat drüberschauen ob ich irgendwo einen groben
Fehler gemacht hab da ich langsam mit meinem Latein am Ende bin.
Gruß ErgoProxy und schonmal vielen Dank das bis hierhin durchzulesen.
so langsam bin ich wirklich am verzweifeln ^^ hab mir den Tread über das
Display nochmal durchgesehen und leider auch da keinen Anhaltspunkt
gefunden warum es nicht geht. Ich bin schon am überlegen ob das Display
einfach hinüber ist. In dem Tread meinten doch einige, dass sie das
Display an einem Mega8 zum Laufen bekommen hätten. Kann irgendjemand mir
vllt den Code posten, der es geschafft hat. Wäre echt super. Noch eine
Frage an den Rest hier:
Wie kommen die delays hier zustande ? 1 | void lcd_init_c(void)
| 2 | /*
| 3 | Initialization of the LPH-Type display. Note that this display does not need the RS line.
| 4 | Instead it uses command type indication and command data indication.
| 5 |
| 6 | (c) Christian Kranz, 10/2005
| 7 | */
| 8 | {
| 9 | uint8_t ct1[6]={0x07,0x02,0x04,0x0C,0x0D,0x0E};
| 10 | uint8_t cd1[12]={0x00,0x00, 0x04,0x00, 0x00,0x00, 0x00,0x01, 0x06,0x16, 0x10,0x10};
| 11 | uint8_t ct2[2]={0x03,0x0E};
| 12 | uint8_t cd2[4]={0x00,0x0C, 0x2D,0x1F};
| 13 | uint8_t ct3[1]={0x0D};
| 14 | uint8_t cd3[2]={0x06,0x16};
| 15 | uint8_t ct4[21]={0x01,0x0F,0x0B,0x11,0x06,0x05,0x14,0x15,0x16,0x17,0x20,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x3A,0x3B};
| 16 | uint8_t cd4[42]={0x02,0x15, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x30, 0xAF,0x00, 0x00,0x00, 0x83,0x00, 0xAF,0x00,
| 17 | 0x00,0x00, 0x00,0x00, 0x04,0x00, 0x02,0x07, 0x07,0x00, 0x00,0x05, 0x07,0x03, 0x07,0x07, 0x00, 0x07, 0x12,0x00, 0x00,0x09};
| 18 |
| 19 | uint8_t i,j;
| 20 |
| 21 | // generate clean display reset
| 22 | PORTB &= ~_BV(LCD_RESET); // reset display
| 23 | PORTB |= _BV(LCD_CS); // CS is high during reset release
| 24 | PORTB |= _BV(LCD_RS); // RS is not used, set it to high
| 25 | _delay_ms(1);
| 26 | PORTB |= _BV(LCD_RESET); // release reset
| 27 | _delay_ms(10);
| 28 |
| 29 | PORTB &= ~_BV(LCD_CS); // select display
| 30 |
| 31 | // starts at 58.8ms
| 32 | lcd_comtype(0x00);
| 33 | lcd_comdat(0x00,0x01);
| 34 | // starts at 125ms
| 35 | j=0;
| 36 | for (i=0; i<6; i++)
| 37 | {
| 38 | lcd_comtype(ct1[i]);
| 39 | lcd_comdat(cd1[j],cd1[j+1]);
| 40 | j+=2;
| 41 | }
| 42 | // start at 240ms
| 43 | j=0;
| 44 | for (i=0; i<2; i++)
| 45 | {
| 46 | lcd_comtype(ct2[i]);
| 47 | lcd_comdat(cd2[j],cd2[j+1]);
| 48 | j+=2;
| 49 | }
| 50 | // start at 355ms
| 51 | j=0;
| 52 | for (i=0; i<1; i++)
| 53 | {
| 54 | lcd_comtype(ct3[i]);
| 55 | lcd_comdat(cd3[j],cd3[j+1]);
| 56 | j+=2;
| 57 | }
| 58 | // start at 458ms
| 59 | j=0;
| 60 | for (i=0; i<21; i++)
| 61 | {
| 62 | lcd_comtype(ct4[i]);
| 63 | lcd_comdat(cd4[j],cd4[j+1]);
| 64 | j+=2;
| 65 | }
| 66 | lcd_comtype(0x07);
| 67 | lcd_comdat(0x00, 0x05);
| 68 | lcd_comtype(0x07);
| 69 | lcd_comdat(0x00, 0x25);
| 70 | lcd_comtype(0x07);
| 71 | lcd_comdat(0x00, 0x27);
| 72 | lcd_comtype(0x07);
| 73 | lcd_comdat(0x00, 0x37);
| 74 | // ready for first screen
| 75 | PORTB |= _BV(LCD_CS); // deselect display
| 76 | }
|
Wie genau kommen die Zeiten zustande? Ich seh hier kein einziges Delay
auch nicht in den Unterfunktionen. Kommt das aleine durch die
SPI-Übertragungsgeschwindigkeit? ( Das ist ein Teil aus der orginalen
Disp.c von Christian Kranz)
Danke schonmal ErgoProxy
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
|