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?
Lesezeichen