Hallo zusammen,
ich habe ein problem wo mich schon sehr viele Nerven Ruiniert hat.
Ich habe einen Atmega8 und einen Externen Quarz (8Mhz) und möchte über
den I2C Bus ein 4*20 Display ansteuern.
Der I2C-Bus läuft so weit habe eine Ausgangs- und Eingangskarte dran
hängen wo ich Abfragen und Schalten kann. Also kann es da mal nicht dran
liegen.
Wenn ich mein LCD-Display Initialisiere möchte bleibt mein
Microcontroller stehen und macht nicht mehr weit. Wenn ich diese Zeile
raus nehme Funktioniert er wunder bar, also muss es ja irgendwo an
diesem Initialisiere liegen.
1 | void lcd_init(void)
|
2 | {
|
3 | lcd_light(false);
|
4 | _delay_ms(15); //- Wait for more than 15ms after VDD rises to 4.5V
|
5 | lcd_write(CMD_D1 | CMD_D0); //- Set interface to 8-bit
|
6 | _delay_ms(5); //- Wait for more than 4.1ms
|
7 | lcd_write(CMD_D1 | CMD_D0); //- Set interface to 8-bit
|
8 | _delay_ms(1); //- Wait for more than 100us
|
9 | lcd_write(CMD_D1 | CMD_D0); //- Set interface to 8-bit
|
10 | lcd_write(CMD_D1); //- Set interface to 4-bit
|
11 |
|
12 | _delay_ms(50);
|
13 | //- From now on in 4-bit-Mode
|
14 | lcd_command(LCD_LINE_MODE | LCD_5X10);
|
15 | _delay_ms(50);
|
16 | lcd_command(LCD_DISPLAYON | LCD_CURSORON | LCD_BLINKINGOFF);
|
17 | _delay_ms(50);
|
18 | lcd_command(LCD_INCREASE | LCD_DISPLAYSHIFTOFF);
|
19 | _delay_ms(50);
|
20 | lcd_command(LCD_CLEAR);
|
21 | _delay_ms(50);
|
22 | }
|
Das steht in einer anderen Datei
1 | #define CMD_D0 (1 << 0) /**< bit 0 in lower nibble */
|
2 | #define CMD_D1 (1 << 1) /**< bit 1 in lower nibble */
|
3 | #define CMD_D2 (1 << 2) /**< bit 2 in lower nibble */
|
4 | #define CMD_D3 (1 << 3) /**< bit 3 in lower nibble */
|
5 | #define CMD_RS (1 << 4) /**< RS-bit */
|
6 | #define CMD_RW (1 << 5) /**< RW-bit */
|
7 |
|
8 |
|
9 | #define LCD_DISPLAYMODE 0x08 /**< Set displaymode */
|
10 | #define LCD_DISPLAYON LCD_DISPLAYMODE | 0x04 /**< Display on */
|
11 | #define LCD_DISPLAYOFF LCD_DISPLAYMODE | 0x00 /**< Display off */
|
12 | #define LCD_CURSORON LCD_DISPLAYMODE | 0x02 /**< Cursor on */
|
13 | #define LCD_CURSOROFF LCD_DISPLAYMODE | 0x00 /**< Cursor off */
|
14 | #define LCD_BLINKINGON LCD_DISPLAYMODE | 0x01 /**< Blinking on */
|
15 | #define LCD_BLINKINGOFF LCD_DISPLAYMODE | 0x00 /**< Blinking off */
|
Ich lade die eine Datein auch in die andere rein.
Ich habe auch schon im Internet nachgeschaut und gelesen und ich werde
einfach nicht schlau.