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


von Flo (Gast)


Lesenswert?

Hallo, ich habe heute versucht lcd-routines.c zu kompilieren und 
verwende die Dateien von 
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial/LCD-Ansteuerung

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

von Ch D. (chrisu) Benutzerseite


Lesenswert?

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

von Flo (Gast)


Lesenswert?

Hat super funktioniert, vielen Dank!

von imidin (Gast)


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?

von Achim M. (minifloat)


Lesenswert?

Ich hab die Variablendeklaration einfach "nach oben geholt", hat dann 
auch funktioniert:
1
void lcd_generatechar( uint8_t code, const uint8_t *data )
2
{
3
    uint8_t i;
4
5
    // Startposition des Zeichens einstellen
6
    lcd_command( LCD_SET_CGADR | (code<<3) );
7
8
    // Bitmuster übertragen
9
    for ( i=0; i<8; i++ )
10
    {
11
        lcd_data( data[i] );
12
    }
13
}

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

mfg mf

von Klaus W. (mfgkw)


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"

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.