Forum: Compiler & IDEs AVR Mega8 LCD Initialisierung wir wegoptimiert


von Benjamin (Gast)


Lesenswert?

Hallo,

mache gerade mein ersten Erfahrungen mit Microcontrollern.
Ich möchte gerne mit dem ATMega8 ein LCD ansteuern.
Die LCD-routine hab ich mir hier aus dem Tutorial geholt.

Jetzt zu meiner Frage.

Wenn ich in AVRStudio das Programm debuggen möchte überspringt der immer 
die markierten Zeilen.
1
void lcd_init(void)
2
{
3
   LCD_DDR = LCD_DDR | 0x0F | (1<<LCD_RS) | (1<<LCD_EN);   // benötigte Pins auf Ausgang schalten
4
5
 
6
   _delay_ms(30);
7
   LCD_PORT &= 0xF0;      // LCD-Datenpins auf 0 setzen
8
   LCD_PORT |= 0x03;               // muss zum initialisieren 3mal    gesetzt werden (Datenblatt) 
9
   LCD_PORT &= ~(1<<LCD_RS);        // RS auf 0 (Befehl)
10
   lcd_enable();
11
12
   //VON HIER########################################
13
14
   _delay_ms(6);
15
   lcd_enable();
16
17
   _delay_ms(2);
18
   lcd_enable();
19
   _delay_ms(2);
20
21
   //BIS HIER#########################################
22
23
   // 4 Bit Modus aktivieren 
24
   LCD_PORT &= 0xF0;        // LCD-Datenpins auf 0 setzen
25
   LCD_PORT |= 0x02;        // 4 Bit Modus (Datenblatt)
26
   lcd_enable();
27
   _delay_ms(1);


Kann es sein, dass er die wegoptimiert?

Hab mal versucht das auf dem Atmel laufen zu lassen, jedoch war nur der 
obere Balken Schwarz und sonnst hat sich nichts getan.
Hab aus dem Forum, dass das bedeutet, dass die Initialisierung nicht 
klappt.


Ich werde nochmal ganz in Ruhe alles nachprüfen.
Wenn die Zeilen jedoch wegoptimiert werden kann ich wohl lange suchen.

Schonmal danke für eure Hilfe.

Ist echt ne sehr gute Seite.

Gruß
Benjamin

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Was für eine Optimierung hast du den eingestellt?

von Benjamin (Gast)


Lesenswert?

Hab es mit 0s, 00 und o1 versucht.

Immer das selbe.

von ich (Gast)


Lesenswert?

Da du nicht zeigst, was hinter lcd_enable(); steckt kann man dir nicht 
helfen.

von Peter D. (peda)


Lesenswert?

Benjamin wrote:
> Wenn ich in AVRStudio das Programm debuggen möchte überspringt der immer
> die markierten Zeilen.

Dann schau dochmal ins Listing, ob für diese Zeilen Code erzeugt wird.


Peter

von Benjamin (Gast)


Lesenswert?

Hier ist der Code von Enable:
1
// erzeugt den Enable-Puls
2
void lcd_enable(void)
3
{
4
   // Bei Problemen ggf. Pause gemäß Datenblatt des LCD Controllers einfügen
5
   // http://www.mikrocontroller.net/topic/81974#685882
6
   LCD_PORT |= (1<<LCD_EN);
7
    _delay_us(1);                   // kurze Pause
8
   // Bei Problemen ggf. Pause gemäß Datenblatt des LCD Controllers verlängern
9
   // http://www.mikrocontroller.net/topic/80900
10
   LCD_PORT &= ~(1<<LCD_EN);
11
}

Im Anhang ist das gesammte Projekt.

von Benjamin (Gast)


Angehängte Dateien:

Lesenswert?

Das mit dem Anhang hat nicht so ganz geklappt.

Hier noch ein Versuch.

von ich (Gast)


Lesenswert?

ich weiß nicht was du gemacht hast, aber die Projektdatei geht bei mir 
nicht -> neues Projekt alles rein gezogen -> Optimierung -Os -> 
Debugging und es wir nix übersprungen ...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.