Hallo, das is mein erster Post in diesem Forum, ich such schon seit ungefähr einer Woche nach einer Lösung für mein Problem:

ich hab einen Attiny26 Controler an den ein 1 Zeiliges LCD mit 16 Zeichen angeschlossen is, wenn ich nun einschalte seh ich, dass die ersten 8 Zeichen als schwarzer Balken zu sehn sind, die 2ten 8 allerdings nicht.

Irgendwas muss ich bei der Initialisierung flasch machen... ich finds aber nicht :/

meine Pinbelegung ist so: PA0-3 sind die Datenleitungen, PA3 is RS und PA5 is Enable R/W liegt auf GND

Ich versuch das LCD so zu initialisieren:
Code:
 // Port A Pins 0-5 auf Ausgang setzen
  DDRA |= ((1<<DDA0)|(1<<DDA1)|(1<<DDA2)|(1<<DDA3)|(1<<DDA4)|(1<<DDA5));

PORTA &= ~((1<<PA0)|(1<<PA1)|(1<<PA2)|(1<<PA3)|(1<<PA4)|(1<<PA5));
  _delay_ms(15);
  for(uint8_t i=1; i<=3; ++i)
    {
      PORTA |= ((1<<PA0)|(1<<PB1)); // 3 mal 0011 mit 5 ms Pause
      lcd_en();      
      _delay_ms(5);
    }

  PORTA &= ~(1<<PA0); // 0010 = 4-Bit Modus
  lcd_en();  

  lcd_write(0x28, "");
  lcd_write(0x0c, "");
  lcd_write(CLEAR, "");
  _delay_ms(2);
  lcd_write(0x06, "");

  lcd_write(0, "     BEREIT     ");
lcd_write sieht so aus:
Code:
void lcd_write(uint8_t com, char string[17])
{
  if (com != 0)
    {
      uint8_t high_nibble = com>>4;
      uint8_t low_nibble = com<<4;
      low_nibble = low_nibble>>4;
      
      PORTA = high_nibble;
      lcd_en();
      PORTA = low_nibble;
      lcd_en();
      
      _delay_ms(2);
    }
  
  else
    {
      for (int8_t i = 0; i < 16; i++)
	{
	  PORTA |= (1<<PA4); // RS - Bit setzen
  
	  uint8_t high_nibble = (uint8_t)string[i]>>4;
	  uint8_t low_nibble = (uint8_t)string[i]<<4;
	  low_nibble = low_nibble>>4;
	  
	  PORTA = high_nibble;
	  lcd_en();
	  PORTA = low_nibble;
	  lcd_en();
	  _delay_us(50);
	  
	  PORTA &= ~(1<<PA4); // RS - Bit löschen
	}
    }
}
und lcd_en so:
Code:
_delay_us(1);
  
  PORTA |= (1<<PA5);
  asm volatile("nop\n\t"
             "nop\n\t"
             "nop\n\t"
             "nop\n\t"
             ::);
  PORTA &= ~(1<<PA5);
hoffentlich weiß jemand was da nicht stimmt....

mfg Clerian