www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik lcd-routines.c lässt sich nicht kompilieren


Autor: Flo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo, ich habe heute versucht lcd-routines.c zu kompilieren und 
verwende die Dateien von 
http://www.mikrocontroller.net/articles/AVR-GCC-Tu...

Die Fehlermeldung ist:
root:firmware r00t$ make
avr-gcc -Wall -Os -DF_CPU=12000000 -mmcu=atmega8 -c main.c -o main.o
avr-gcc -Wall -Os -DF_CPU=12000000 -mmcu=atmega8 -c lcd-routines.c -o 
lcd-routines.o
lcd-routines.c: In function 'lcd_generatechar':
lcd-routines.c:172: error: 'for' loop initial declaration used outside 
C99 mode
make: *** [lcd-routines.o] Error 1

Der betroffene Abschnitt:

void lcd_generatechar( uint8_t code, const uint8_t *data )
{
    // Startposition des Zeichens einstellen
    lcd_command( LCD_SET_CGADR | (code<<3) );

    // Bitmuster übertragen
    for ( uint8_t i=0; i<8; i++ )
    {
        lcd_data( data[i] );
    }
}

Vielleicht könntt ihr mir ja helfen,

Vielen Dank

~Flo

PS: Verwende CrossPack auf Mac OS X 10.6

Autor: Ch D. (chrisu) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
Du musst den C99 switch aktivieren. Einfach -std=c99 zu den Compiler 
Flags hinzufügen.

Autor: Flo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hat super funktioniert, vielen Dank!

Autor: imidin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ch D. schrieb:
> Hi,
> Du musst den C99 switch aktivieren. Einfach -std=c99 zu den Compiler
> Flags hinzufügen.

Kann das jemand bitte nochmal am Beispiel von AVR Studio 4.0 Schritt für 
Schritt erklären?

Autor: Joachim K. (minifloat)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab die Variablendeklaration einfach "nach oben geholt", hat dann 
auch funktioniert:
void lcd_generatechar( uint8_t code, const uint8_t *data )
{
    uint8_t i;

    // Startposition des Zeichens einstellen
    lcd_command( LCD_SET_CGADR | (code<<3) );

    // Bitmuster übertragen
    for ( i=0; i<8; i++ )
    {
        lcd_data( data[i] );
    }
}

Oder eben in der Zeile des Makefiles, wo der avr-gcc direkt involviert 
ist, die o.g. Ergänzung hinzufügen.

mfg mf

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
imidin schrieb:
> Kann das jemand bitte nochmal am Beispiel von AVR Studio 4.0 Schritt für
> Schritt erklären?

Hast du doch schon; siehe dein Bild im anderen Thread:
Beitrag "Re: Evolution Board + ATMEGA 8 + WinAVR + LCD 4Bit"

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.