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?
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: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(); }
Kann es eigentlich aus zu Problemen kommen, wenn die Wartezeiten zu lang werden?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();






Zitieren


Lesezeichen