so... ich weiß der Thread ist vielleicht nicht ganz so sexy , aber inzwischen weiß ich auch das es wohl auschließlich an der Funktion zum Abfragen des Busy-Bits liegt (ein Hardwareproblem schließe ich inzwischen aus). Also anders formuliert: Was ist an dieser Funktion falsch?
Code:
void dis_busy_4(void)
{    uint8_t rep;
    
    PORTC &= 0xF0;
    DDRC = 0x70;
    
    dis_rw_1();
    
    do
    {    dis_en_1();
        _delay_us(1);
        rep = (PINC<<4);
        dis_en_0();
        
        _delay_us(1);
        
        dis_en_1();
        _delay_us(1);
        rep |= (0x0F & PINC);
        dis_en_0();
    }while( rep & 0x80);
    
    dis_rw_0();
}
Der entsprechende Teil von P.Fleury sieht ja ähnlich aus, funktioniert bei mir allerdings auch nicht (aber das könnte auch noch ein weiteres Problem sein)
Code:
DDR(LCD_DATA0_PORT) &= 0xF0;         /* configure data pins as input */
        
        lcd_e_high();
        lcd_e_delay();        
        data = PIN(LCD_DATA0_PORT) << 4;     /* read high nibble first */
        lcd_e_low();
        
        lcd_e_delay();                       /* Enable 500ns low       */
        
        lcd_e_high();
        lcd_e_delay();
        data |= PIN(LCD_DATA0_PORT)&0x0F;    /* read low nibble        */
        lcd_e_low();
Kann es eigentlich aus zu Problemen kommen, wenn die Wartezeiten zu lang werden?