Forum: Mikrocontroller und Digitale Elektronik S65 Mega8 Keine Reaktion


von Andreas K. (ergoproxy)


Angehängte Dateien:

Lesenswert?

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.

von Andreas K. (ergoproxy)


Lesenswert?

nochmal kurz push

von Andreas K. (ergoproxy)


Angehängte Dateien:

Lesenswert?

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.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.