Habe mal nach deinem Tipp 10Sekunden vor lcd_init(LCD_DISP_ON);
gewartet, hat allerdings leider nichts geholfen :/
Beim Display handelt es sich um das LCD 162C BL von Reichelt.
ABER, durch Dich angespo*rnt hab ich noch ein bischen rumprobiert und
meinen Fehler gefunden und zwar mag das Display es scheinbar ungern wenn
man den Displayport initialisiert. Und zwar hatte ich das folgendermaßen
gemacht:
1 | void init()
|
2 | {
|
3 | //Datenrichtung festlegen
|
4 | DDRA = 0xfe; // PortA 4-7 Ausgang ( debugLEDs), PA3 & PA1 Ausgang ( unbenutzt ), PA2 Ausgang ( Sender ), PA0 Eingang (Receiver)
|
5 | DDRB = 0xff; // PortB Ausgang, Standard auf HIGH, da unbenutzt bis auf ICSP
|
6 | //DDRC = 0xff; // PortC Ausgang -> LCD Ansteuerung( PD7 unbeschaltet )
|
7 | DDRD = 0xC0; // PortD Eingang bis auf unbeschaltete PD6 & PD7
|
8 |
|
9 | //Ausgangswerte festlegen
|
10 | PORTA = 0xff; // alles HIGH bis auf PA0, da Eingang -> intern PullupAktiv
|
11 | PORTB = 0xff; // alles HIGH, ausser ICSP unbenutzt
|
12 | //PORTC = 0xff; // alles HIGH, PD7 unbeschaltet
|
13 | PORTD = 0; // PD6 & PD7 auf LOW für Rest interner PullupDeaktiv da schon Pullup extern realisiert
|
14 |
|
15 | //LCD-Initialisieren
|
16 | PORTA &= ~(1<<LED_RT1); // init beginn
|
17 | //nms_pause(1000);
|
18 | lcd_init(LCD_DISP_ON); // display initialisiert, cursor off
|
19 | lcd_clrscr(); //display löschen
|
20 | lcd_puts("Hallo\n");
|
21 | nms_pause(1000); // Sekunde Wartezeit
|
22 | PORTA |= (1<<LED_RT1); //init komplett
|
23 | }
|
Das Display hängt an PORTC und zeigte die 2te Zeile nicht an wenn die
Deklarationen DDRC = 0xff; und PORTC = 0xff; nichtauskommentiert waren.
Jetzt ohne diese 2 Zeilen funktionierts. Das Delay vor lcd_init war auch
nicht nötiig.
Warum jetzt allerdings bei gleichem Code der ISPStecker einen
Unterschied macht, weiss ich immernoch nicht :D
Danke Dir!