so da bin ich wieder :D
also bei dem display ist die adresse 0x40.
das problem mit der zweiten zeile habe ich gelöst, in der
initialisierung musste einfach hinter dem befehl lcd_command(lcd_modus);
noch eine kurze wartezeit von 5ms ergänzt werden.
nun habe ich aber noch ein anderes problem, um den code übersichtlicher
zu machen habe ich eine unterfunktion ergänzt
1 | void lcd_display_reset(unsigned int time) {
|
2 | lcd_port = lcd_reset;
|
3 | lcd_enable();
|
4 | _delay_ms(time);
|
5 | }
|
6 |
|
7 | // LCD Initialiseren
|
8 | void lcd_initialisieren(void) {
|
9 | // Kurze einschaltpause
|
10 | _delay_ms(lcd_start_time);
|
11 |
|
12 | // Port einstellen
|
13 | lcd_port_config();
|
14 |
|
15 | // LCD Resetten
|
16 | lcd_display_reset(lcd_reset_a);
|
17 | lcd_display_reset(lcd_reset_b);
|
18 | lcd_display_reset(lcd_reset_c);
|
19 |
|
20 | // 4Bit Modus aktivieren
|
21 | lcd_command(lcd_modus);
|
22 | _delay_ms(lcd_modus_time);
|
23 |
|
24 | // Display einstellen (2 Zeilen, 5x7 Dots, 4Bit Modus)
|
25 | lcd_command(lcd_funktion);
|
26 |
|
27 | // Display ausschalten
|
28 | lcd_command(lcd_off);
|
29 |
|
30 | // Display löschen
|
31 | lcd_display_clear();
|
32 |
|
33 | // Eingabemodus einstellen
|
34 | lcd_command(lcd_entry);
|
35 |
|
36 | // Display einschalten und Cursor einstellen
|
37 | lcd_command(lcd_on);
|
38 | }
|
sollange die funktion lcd_display_reset(); eingebaut ist, ist der code
bei knapp 50% speichergröße des mega8.
die größe steigt erst von 5% auf 50%, sobald man in das _delay_ms(); die
variable "time" einfügt.
gibt es dafür einen bestimmen grund?