Forum: Mikrocontroller und Digitale Elektronik Compiler- Fehler?


von zbf (Gast)


Lesenswert?

Hi Leute,
ich verwende AVR Studio und mache gerade meine ersten Gehversuche.
Leider komme ich hier (trotz tollem Tutorium) nicht weiter...

Sieht jemand an folgenden Fehlermeldungen vll. was ich falsch mache?

Danke!


rm -rf main.o lcd.o adc.o  C_STARTUP.elf dep/* C_STARTUP.hex 
C_STARTUP.eep
Build succeeded with 0 Warnings...
avr-gcc -I"N:\abcd\.." -I"C:\Program Files\WinAVR-20100110\avr" 
-mmcu=atmega32 -Wall -gdwarf-2 -std=gnu99    -mmcu=atmega32 
-DF_CPU=8000000UL -Os -fsigned-char -MD -MP -MT main.o -MF dep/main.o.d
 -c  ../main.c

../main.c: In function 'main':
../main.c:335: warning: implicit declaration of function 'ADC_Init'
../main.c:378: warning: implicit declaration of function 'ADC_Read_Avg'
../main.c:329: warning: unused variable 'mein_zeichen'
../main.c:327: warning: unused variable 'lauf_laenge'
../main.c:325: warning: unused variable 'l'
../main.c:324: warning: unused variable 'k'
avr-gcc -I"N:\Eigene Dateien\Frank\Elektronik\AVR-Projects\C_STARTUP\.." 
-I"C:\Program Files\WinAVR-20100110\avr"  -mmcu=atmega32 -Wall -gdwarf-2 
-std=gnu99    -mmcu=atmega32          -DF_CPU=8000000UL -Os 
-fsigned-char -MD -MP -MT lcd.o -MF dep/lcd.o.d  -
c  ../lcd.c

avr-gcc -I"N:\Eigene Dateien\Frank\Elektronik\AVR-Projects\C_STARTUP\.." 
-I"C:\Program Files\WinAVR-20100110\avr"  -mmcu=atmega32 -Wall -gdwarf-2 
-std=gnu99    -mmcu=atmega32          -DF_CPU=8000000UL -Os 
-fsigned-char -MD -MP -MT adc.o -MF dep/adc.o.d  -
c  ../adc.c

../adc.c: In function 'ADC_Init':
../adc.c:6: error: 'uint16_t' undeclared (first use in this function)
../adc.c:6: error: (Each undeclared identifier is reported only once
../adc.c:6: error: for each function it appears in.)
../adc.c:6: error: expected ';' before 'result'
../adc.c:8: error: 'ADMUX' undeclared (first use in this function)
../adc.c:8: error: 'REFS0' undeclared (first use in this function)
../adc.c:9: error: 'ADCSRA' undeclared (first use in this function)
../adc.c:9: error: 'ADPS1' undeclared (first use in this function)
../adc.c:9: error: 'ADPS0' undeclared (first use in this function)
../adc.c:10: error: 'ADEN' undeclared (first use in this function)
../adc.c:15: error: 'ADSC' undeclared (first use in this function)
../adc.c:19: error: 'result' undeclared (first use in this function)
../adc.c:19: error: 'ADCL' undeclared (first use in this function)
../adc.c:20: error: 'ADCH' undeclared (first use in this function)
../adc.c:21: error: expected expression before ')' token
../adc.c:21: warning: 'return' with a value, in function returning void
../adc.c: At top level:
../adc.c:26: error: expected '=', ',', ';', 'asm' or '__attribute__' 
before 'ADC_Read'
../adc.c:41: error: expected '=', ',', ';', 'asm' or '__attribute__' 
before 'ADC_Read_Avg'
make: *** [adc.o] Error 1
Build failed with 17 errors and 7 warnings...

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> Sieht jemand an folgenden Fehlermeldungen vll. was ich falsch mache?
Du bindest nicht alle nötigen Header ein...

Zeig doch mal deine Source-Files.

von zbf (Gast)


Angehängte Dateien:

Lesenswert?

Die 3 source-codes hab ich verwendet.
lcd.h und main.h

von Karl H. (kbuchegg)


Lesenswert?

Jetzt gehst du dein main.c mal von oben nach unten durch.
Und fragst dich bei jeder Zeile, ob sie dem Compiler mitteilt, dass es 
eine Funktion ADC_Init gibt

(Was macht eigentlich der Inhalt von lcd.h in main.c. Das gehört da so 
nicht rein. Du inkludierst ja sowieso lcd.h)

von Karl H. (kbuchegg)


Lesenswert?


von zbf (Gast)


Lesenswert?

Karl heinz Buchegger schrieb:
> (Was macht eigentlich der Inhalt von lcd.h in main.c. Das gehört da so
> nicht rein. Du inkludierst ja sowieso lcd.h)

Ja das hab ich aus der Not heraus gemacht, weil ich nicht geschafft hab, 
lcd.h zu inkludieren.


Ich hab jetzt in meinem Verzeichnis adc.h angelegt und in main.c 
folgends editiert:

#include "adc.h"

adc.h enthällt folgende Prototypen:

void ADC_Init(void);
uint16_t ADC_Read( uint8_t channel );
uint16_t ADC_Read_Avg( uint8_t channel, uint8_t average );

funktioniert aber trotzdem nicht.
immernoch 17 errors

von Karl H. (kbuchegg)


Lesenswert?

zbf schrieb:

> funktioniert aber trotzdem nicht.
> immernoch 17 errors

Dann fang mit dem ersten an ihn zu bearbeiten.

Immer daran denken: Jedes *.c File wird für sich selbst compiliert.

Wenn du in adc.c zb das ADMUX Register verwenden willst, dann musst du 
in adc.c auch etwas inkludieren, was den Compiler mit dem ADMUX Register 
bekannt macht. Zum Bleistift <avr/io.h>

Wenn du in adc.c den Datentyp uint16_t verwenden willst, dann musst du 
in adc.c etwas inkludieren, was den Compiler mit uint16_t bekannt macht.


Was du in main.c inkludierst, interessiert den Compiler nicht, wenn er 
adc.c compiliert. Denn: Jedes *.c File wird für sich selbst, völlig 
eigenständig und losgelöst von allen anderen, compiliert.

von zbf (Gast)


Lesenswert?

Ich danke dir.

von Klaus (Gast)


Lesenswert?

Jaaaaa, der Compiler ist mal wieder Schuld =)  Ich liebe solche Threads 
:D

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.