www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik S65 Mega8 Keine Reaktion


Autor: Andreas K. (ergoproxy)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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/Dis... 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
#define LCD_CS     PB1 // CS Display
#define LCD_RESET  PB0 // Reset Display
#define LCD_RS     PB2 // RS Display
#define LCD_MOSI   PB3 // Data Display
#define LCD_MISO   PB4 // frei
#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.

Autor: Andreas K. (ergoproxy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nochmal kurz push

Autor: Andreas K. (ergoproxy)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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 ?
void lcd_init_c(void)
/*
  Initialization of the LPH-Type display. Note that this display does not need the RS line.
  Instead it uses command type indication and command data indication.
  
  (c) Christian Kranz, 10/2005
*/
{
  uint8_t ct1[6]={0x07,0x02,0x04,0x0C,0x0D,0x0E};
  uint8_t cd1[12]={0x00,0x00, 0x04,0x00, 0x00,0x00, 0x00,0x01, 0x06,0x16, 0x10,0x10};
  uint8_t ct2[2]={0x03,0x0E};
  uint8_t cd2[4]={0x00,0x0C, 0x2D,0x1F};
  uint8_t ct3[1]={0x0D};
  uint8_t cd3[2]={0x06,0x16};
  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};
  uint8_t cd4[42]={0x02,0x15, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x30, 0xAF,0x00, 0x00,0x00, 0x83,0x00, 0xAF,0x00,
        0x00,0x00, 0x00,0x00, 0x04,0x00, 0x02,0x07, 0x07,0x00, 0x00,0x05, 0x07,0x03, 0x07,0x07, 0x00, 0x07, 0x12,0x00, 0x00,0x09};

  uint8_t i,j;

  // generate clean display reset
  PORTB &= ~_BV(LCD_RESET); // reset display
  PORTB |= _BV(LCD_CS);  // CS is high during reset release
  PORTB |= _BV(LCD_RS);  // RS is not used, set it to high
  _delay_ms(1);
  PORTB |= _BV(LCD_RESET);  // release reset
  _delay_ms(10);

  PORTB &= ~_BV(LCD_CS);  // select display

// starts at 58.8ms
  lcd_comtype(0x00);
  lcd_comdat(0x00,0x01);
// starts at 125ms
  j=0;
  for (i=0; i<6; i++)
  {
    lcd_comtype(ct1[i]);
    lcd_comdat(cd1[j],cd1[j+1]);
    j+=2;
  }
// start at 240ms
  j=0;
  for (i=0; i<2; i++)
  {
    lcd_comtype(ct2[i]);
    lcd_comdat(cd2[j],cd2[j+1]);
    j+=2;
  }
// start at 355ms
  j=0;
  for (i=0; i<1; i++)
  {
    lcd_comtype(ct3[i]);
    lcd_comdat(cd3[j],cd3[j+1]);
    j+=2;
  }
// start at 458ms
  j=0;
  for (i=0; i<21; i++)
  {
    lcd_comtype(ct4[i]);
    lcd_comdat(cd4[j],cd4[j+1]);
    j+=2;
  }
  lcd_comtype(0x07);
  lcd_comdat(0x00, 0x05);
  lcd_comtype(0x07);
  lcd_comdat(0x00, 0x25);
  lcd_comtype(0x07);
  lcd_comdat(0x00, 0x27);
  lcd_comtype(0x07);
  lcd_comdat(0x00, 0x37);
// ready for first screen
  PORTB |= _BV(LCD_CS);  // deselect display 
}

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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.